shell

shell - Shell/Batch - Programmation

Marsh Posté le 15-02-2008 à 16:30:44    

Bonjour,
 
Je debute en shell  :pt1cable: , je sollicite votre aide  :jap: . Voici mon prob :
 
J'ai une base de donnée de 4500 images en format .tiff exemple : 0508010015G12I01.tiff. Pour chaque image je dois decoupé un carré 3x3 centré sur un pixel est faire une calcul de moyenne et d'ecart-type sur les valeurs décodées. Avec la commande suivante j'ai reussis a faire le découpage et la convertion .tiff > ASCII pour les 4500 images.
 
find . -name "0508*" -exec convert -crop 3x3+174+213 {} {}.txt \;
 
fichier de sortie :
 
# ImageMagick pixel enumeration: 3,3,255,RGB
0,0: ( 0, 0, 0) black
1,0: ( 0, 0, 0) black
2,0: ( 0, 0, 0) black
0,1: ( 0, 0, 0) black
1,1: ( 0, 0, 0) black
2,1: ( 0, 0, 0) black
0,2: ( 0, 0, 0) black
1,2: ( 0, 0, 0) black
2,2: ( 0, 0, 0) black
 
Je voudrais au final obtenir un fichier qui indiquerait :
 
05,08,01,10,15,moyenne,ecart-type (avec les séparateur)
05,08,01,10,30,moyenne,ecart-type......
...............................................................
 
 
Merci d'avance
 
Configuration: Linux
Firefox 2.0.0.12

Reply

Marsh Posté le 15-02-2008 à 16:30:44   

Reply

Marsh Posté le 15-02-2008 à 16:39:09    

Comment définis-tu la moyenne et l'écart-type de 9 pixels ? Tu veux la moyenne et l'écart type pour chacune des composantes RVB (soit 3 moyennes et 3 écart types par image) ?

Reply

Marsh Posté le 15-02-2008 à 16:42:51    

Salut,
 
Une composante suffit car elles sont redondantes.


Message édité par Soso971 le 15-02-2008 à 16:56:14
Reply

Marsh Posté le 19-02-2008 à 17:19:17    

#! /bin/bash
 
for file in *.txt
do
name=$(echo ${file/[A-Z]*/} | sed 's/../&,/g')
 
moyenne=$(cat "$file" | awk '
BEGIN {
FS=", "
x = 0
}
NR==2 , NR==$FNR {
x=x+$2
}
END {
moy= ( x / ( FNR - 1 ) )
printf "%.2f\n",moy
}')
 
ecart=$(cat "$file" | awk '
BEGIN {
FS=", "
x = 0
}
NR==2 , NR==$FNR {
x= x + ( $2 - '"${moyenne/,/.}"' ) ^ 2
}
END {
ecar=  ( x / ( FNR - 1 ) ) ^  0.50
printf "%.2f\n",ecar
}')
 
echo "${name}${moyenne/,/.},${ecart/,/.}" >> fichier.sortie
done

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed