Как преобразовать несколько изображений tiff в координаты xyz в одном текстовом файле с помощью терминала?

У меня ограниченный опыт программирования и Linux, и мне нужна ваша помощь.

Ситуация, в которой я находилась, заключается в том, что у меня есть стопка черно-белых изображений .tiff (около 400 из 10 Мб каждая), которые мне нужно преобразовать в координаты xyz плюс значения оттенков серого и скомпилировать все из них только в одном текстовом файле с x, y, z, в оттенках серого (координаты z, таким образом: первое изображение папки z = 0000, второе изображение 0001 … столько же координат z, сколько изображения в папке).

У меня есть сценарий (который я довольно незнакомый, но я думаю, что это делается с Image Magick), который может это сделать, но только для одного изображения за раз, и добавляет только координаты x, y и значение в оттенках серого, но нет z.

Скрипт:

Точный формат TXT-изображения определяется командой convert, тогда «tail» используется для удаления заголовка, «tr» для символа заменяет каждый символ без номера одним пробелом, так что более позднее «while» может читать это легко, разыгрывая любые номера комментариев, которые могли быть оставлены.

convert -depth 8 -colorspace RGB $1 txt:- | tail -n +2 | tr -cs '0-9.\n' ' ' | while read xy Gray junk; do if [ "$Gray" -eq 0 ]; then echo "$x,$y $Gray" done

Чтобы запустить его, я включил терминал Linux:

chmod +x img.sh

И после этого (я выбрал то же имя, что и изображение, но с .txt как имя файла):

./img.sh pic0000.tif > pic0000.txt

Также я попытался изменить его, чтобы сделать все это сразу, заменив строку convert -depth 8 -colorspace RGB $1 txt:- |

с

convert -depth 8 -colorspace RGB $* txt:- |

и помещая это в терминал

chmod +x ./img.sh ./img.sh *.tif > *.txt

И теперь он помещает все файлы в один с xy Grayscale, но я не могу добавить значения z.

Кстати, для создания txt-файла требуется много времени.

Первыми строками финального файла XYZ должны быть, например:

0 0 0 значение в оттенках серого 1 0 0 значение в оттенках серого `

и последнее:

3095 2951 400 значение в оттенках серого

Не могли бы вы дать мне какие-либо подсказки, идеи или решения? Любая помощь была бы искренне оценена.

2 Solutions collect form web for “Как преобразовать несколько изображений tiff в координаты xyz в одном текстовом файле с помощью терминала?”

Я бы использовал более простой скрипт в ImageMagick, а затем sed вывод. Проблема заключается в определении ваших изображений Z.

Предположим, что изображение в Z = 27 равно DCM0027.tif и что у вас есть изображения от 1 до 420.

Затем вам нужно сгенерировать имя файла из числа и проанализировать сам файл. Для удобства использования файл XYZ.txt генерируется поэтапно:

  #!/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]*\\))/\1,\2,$i,\3/g' >> XYZ.txt done 

Вышеприведенное должно выполняться как скрипт (сохраняется в img.sh и т. Д.). Если вам нужны номера 1 и 420 для параметризации, вы можете сделать это, заменив их на $ 1 и $ 2. Затем вы запустите img.sh 1 420 .

Другая возможность – перенаправить скрипт:

  #!/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]*\\))/\1,\2,$i,\3/g' done 

Вышеизложенное потребует как числа, так и структуру имени файла и перенаправление для сохранения данных:

  img.sh 1 500 "DCM%04d.tif" > XYZ.txt 

«% 04d» означает «четыре цифры с нулевым запасом». Итак, 0001, 0002, 0003. Если вместо цифр, например, DCM1FILE.tif, DCM9FILE.tif, DCM10FILE.tif и т. Д., Вы должны использовать «DCM% dFILE.tif» в качестве шаблона файла.

Наконец, если вам нужно количество файлов .tif в папке, вы можете использовать $( ls *.tif | wc -l ) (возможно, существует более простой способ):

  img.sh 1 $( ls DCM*.tif | wc -l) "DCM%04d.tif" > XYZ.txt 

Спасибо @ Исерни, я ценю ваши усилия, но я думаю, что я не понимаю ваш сценарий.

Кстати, в конце концов я решил проблему, я отправлю ее здесь, может быть, кому-то это будет полезно.

От .tiff оттенков серого до .txt в одном файле с координатами z, например:

 xyz Gray (always zero) 

Чтобы узнать, когда заканчивается один pic, а другой начинается, см., Что изменяется значение z. Чтобы скомпилировать его: chmod +x ./script.sh а затем:

 ./script.sh>xyzfile.txt 

Не забудьте оставить в папке ТОЛЬКО фотографии и сценарий.

 #!/bin/bash z=0 for i in pic*; do z=$[$z+1] convert -depth 8 -colorspace Gray $i txt:- | tail -n +2 | tr -cs '0-9.\n' ' ' | while read xy Gray junk; do if [ "$Gray" -eq 0 ]; then echo "$x $y $z $Gray" fi done done 
  • Разница между командами в сценарии bash и командами в терминале
  • Команда восстановления файловой системы после установки ОС
  • Как перейти к следующему или предыдущему слову с помощью клавиш CTRL + со стрелками в консоли?
  • Соединения SSH, работающие в фоновом режиме, не выводятся, если несколько соединений были запущены одной и той же оболочкой
  • CentOS 7 добавляет нового пользователя с привилегиями root
  • Перенастройка cap-lock для выхода и меню для создания на консоли linux
  • Удалите каталог изнутри с помощью интерфейса командной строки
  • Использование tar в файле с символом @ (при символе)
  • Где текущие обои хранятся в Kali Linux?
  • CentOS 7 Почему пакет звуковых сигналов не существует?
  • Как получить более длинный заголовок xterm в zsh
  • Терминатор не работает!
  • Interesting Posts

    получение pid двух последних команд, выполненных в фоновом режиме и выполняющих

    Почему NAT не резервирует порты из пула портов TCP и UDP?

    Как поместить выходные строки в grep в on-line?

    Оптимальный способ отслеживания сеанса TTY, который блокирует ресурс?

    Настройка Force DPI KDE

    переименовывать файлы, соответствующие определенному значению mtime в каталоге

    Только файлы списка tar

    скрипт trash и restore – проблема восстановления

    Докер с аудио в режиме реального времени / с низкой задержкой? (для виртуальных усилителей, таких как Guitarix …)

    Могу ли я печатать через CUPS на устройстве ARM без драйверов, установив CUPS на сервер x86 с драйверами?

    Список X случайных файлов из каталога

    "Dyld: библиотека не загружена: /usr/local/lib/libcurl.4.dylib" при выполнении завитка с непривилегированным пользователем

    Вставка текста между двумя шаблонами

    Подробный вывод ./configure не является подробным

    Получение «внутреннего DNS» Samba 4.1 для обновления имен хостов от dhcpd

    Linux и Unix - лучшая ОС в мире.