Я использую следующие программы для работы со стопкой изображений.
Бесплатно Hugin Panorama Stitcher использует исполняемую программу "align_image_stack", эту программу можно скопировать в какой-либо каталог и использовать в качестве отдельной программы командной строки.
Бесплатная Программа ImageMagick .
Бесплатно ImageJ Программа
Бесплатно Пакет биоформатов для ImageJ, необходимый для открытия сжатых файлов TIFF LZH
Мой любимый способ удаления выбросов и устранения шума работает следующим образом. Я перемещаю файлы изображений, скажем, im1.tif im2.tif и т. Д. В каталог, куда я поместил исполняемый файл «align_image_stack». Там я открываю командную строку и даю команду:
align_image_stack -a al -C -t 0,3 -c 20 im1.tif im2.tif im3.tif im3.tif im4.tif im5.tif im6.tif ...
Опция -a устанавливает префикс, выбор «al» означает, что переназначенные файлы будут al0000.tif, al0001.tif и т. Д. Команда -C приведет к тому, что переназначенные файлы будут обрезаны до одинакового размера. -T 0,3 устанавливает допуск на максимально допустимое отклонение контрольных точек, которые программа будет использовать для выравнивания, 0,3 означает расстояние в 0,3 пикселя (значение по умолчанию равно 3, если вы не введете эту команду).
Команда -c в нижнем регистре позволяет вам установить количество контрольных точек на сектор изображения. Значение по умолчанию равно 8, если вы выберете 20, в итоге вы получите сотни контрольных точек, обычно это работает очень хорошо. Наконец, вы указываете файлы, выравнивание выполняется в указанной вами последовательности (это может быть важно для выравнивания HDR, в этом случае вы не хотите помещать самое темное изображение рядом с самым ярким).
Может случиться, что автоматическое выравнивание не работает, в этом случае вы можете добавить опцию -p test.pto. Если вы затем запустите программу Hugin, вы можете открыть файл test.pto и проверить контрольные точки, изменить их и использовать программу Hugin для выравнивания и переназначения. Если у вас в стеке большое количество файлов, может быть небольшой постепенный сдвиг в выравнивании, а затем вам следует использовать программу Hugin и добавить контрольную точку, связывающую изображения, которые находятся далеко друг от друга в последовательности.
Следующим шагом будет использование переназначенных файлов для удаления шума и выбросов. Лучший способ продолжить - сначала нормализовать изображения, чтобы они имели точно такую же экспозицию. Экспозиция камеры изменяется дискретными шагами из-за изменений в освещении, что создает осложнения, если мы хотим использовать минимум и максимум для удаления предельных выбросов. Чтобы правильно нормализовать экспозиции, вы можете преобразовать в линейное цветовое пространство, используя ImageMagick. Вы открываете командную строку и даете команду:
convert al0000.tif -colorspace RGB lin0.tif
и вы делаете это для всех файлов. Затем вы можете открыть эти файлы с помощью ImageJ. Если вы запускаете ImageJ, заходите в меню плагинов и нажимаете на imprter биоформатов, вы можете открыть файлы lin0.tif, lin1.tif и т. Д. Вам нужно удалить альфа-канал, это можно сделать, выбрав 4-й канал каждого изображения а затем в меню изображения, вы идете в «стеки» и выберите «удалить фрагмент». Изображения станут видимыми, это связано с тем, что ImageJ неправильно обрабатывает альфа-каналы. Затем в меню «Анализ» вы можете выбрать меру. Прежде чем сделать это, вы можете использовать «набор измерений ...», чтобы выбрать все элементы, которые вы хотите измерить (среднее значение, модальное значение стандартного отклонения, медиана и т. Д. И т. Д.)
Измеряя средние значения яркости, вы можете рассчитать, по какому коэффициенту вы должны нормализовать каждое изображение. Затем вы реализуете это, выбирая в меню «процесс»
«математика», а затем вы выбираете умножение или деление.
Если все готово, вы сохраняете изображения (не используя Биоформаты, а выбирая вкладку «файл» в меню и нажимая «Сохранить»). Тогда, поскольку ImageJ неправильно обрабатывает каналы и слои в этом случае при работе со сжатыми TIF-изображениями LZH, различные каналы будут отображаться как разные слои. Вы можете легко исправить это, используя ImageMagick, введя команду:
convert lin0.tif - объединение lin0.tif
Чтобы удалить выбросы, вы вычисляете изображения, содержащие максимальные и минимальные значения серого в стеке. Чтобы вычислить максимум, вы даете команду:
convert lin * .tif -evaluate-sequence Max. Mx.tif
Чтобы вычислить минимум, вы даете команду:
convert lin * .tif -evaluate-sequence Max mn.tif
Затем вы хотите вычислить среднее значение файлов таким образом, чтобы для каждой точки на изображениях вы вычисляли среднее значение, но не указывали минимальное и максимальное значения. Это эквивалентно суммированию всех файлов lin * .tif и вычитанию из этих mx.tif и mn.tif, а затем делению результата на число n файлов минус 2. Если мы положим 1 / (n-2) = w , тогда нужно дать следующую команду ImageMagick:
конвертировать lin * .tif mx.tif mn, .tif -poly "w, 1, w, 1, w, 1, ......-w, 1, -w, 1" avl.tif
Итак, вы даете каждому из файлов lin * .tif вес w, в то время как файлы mx.tif и mn, tif получают вес -w, а «1» в команде устанавливает мощность в 1, поскольку мы не собираемся повышать значения серого до какой-либо степени здесь.
Наконец, вам нужно преобразовать av.tif обратно в sRGB, вы делаете это с помощью команды:
конвертировать avl.tif -set цветовое пространство RGB-цветовое пространство sRGB av.tif
Итак, вам нужно сначала сказать ImageJ, что avl является линейным изображением цветового пространства, а затем вы можете сказать ему преобразовать его в sRGB и сохранить результат в av.tif.