Eu usaria um script mais simples no ImageMagick e, em seguida, sed
da saída. O problema está em determinar suas imagens Z.
Digamos que a imagem em Z = 27 seja DCM0027.tif
e que você tenha imagens de 1 a 420.
Então você precisa gerar o nome do arquivo a partir do número e analisar o arquivo em si. Para facilidade de uso, o arquivo XYZ.txt é gerado de forma incremental:
#!/bin/sh
rm -f XYZ.txt
for i in $( seq 1 420 ); do
FILE=$( printf "DCM%04d.tif" )
convert -depth 8 -colorspace gray $FILE txt:- \
| sed -e "s/^\([0-9]*\),\([0-9]*\):.*gray(\([0-9]*\))/,,$i,/g' >> XYZ.txt
done
O acima deve ser executado como um script (salvo em img.sh e assim por diante). Se você precisar que os números 1 e 420 sejam parametrizados, pode substituí-los por $ 1 e $ 2. Então você executaria img.sh 1 420
.
Outra possibilidade é redirecionar o próprio script:
#!/bin/sh
for i in $( seq $1 $2 ); do
FILE=$( printf $3 )
convert -depth 8 -colorspace gray $FILE txt:- \
| sed -e "s/^\([0-9]*\),\([0-9]*\):.*gray(\([0-9]*\))/,,$i,/g'
done
O texto acima exigiria tanto os números como a estrutura do nome do arquivo, e o redirecionamento para salvar os dados:
img.sh 1 500 "DCM%04d.tif" > XYZ.txt
"% 04d" significa "quatro dígitos, zero preenchido". Portanto, 0001, 0002, 0003. Se os números forem, por exemplo, DCM1FILE.tif, DCM9FILE.tif, DCM10FILE.tif, etc., você usaria "DCM% dFILE.tif" como um padrão de arquivo.
Finalmente, se você precisar do número de arquivos .tif em uma pasta, você pode usar $( ls *.tif | wc -l )
(provavelmente existe uma maneira mais fácil):
img.sh 1 $( ls DCM*.tif | wc -l) "DCM%04d.tif" > XYZ.txt