Приведу тексты некоторых из пакетных файлов Windows для ImageMagick, которыми я пользовался при получении материалов о Фурье-анализе изображения для следующей главы.
Файл для преобразования Фурье:
rem вход: %1 – файл изображения
rem выход: %1_spectr.tif – спектр Фурье, %1_log.tif – спектр для просмотра
SETLOCAL EnableDelayedExpansion
convert %1 – fft %1_spectr.tif
convert %1 – fft – contrast-stretch 0 – evaluate log 10000 %1_log.tif
Здесь код «%1» означает имя файла, который был упомянут в аргументах при вызове bat-файла (либо был перетащен мышью и опущен на bat-файл). Код «%1_spectr.tif» означает строку (имя выходного файла), полученную добавлением к имени файла %1 строки «_spectr.tif». Файл %1_spectr.tif содержит два слоя: первый – амплитуду спектрограммы, а второй – фазу. Файл %1_log.tif содержит эти же коэффициенты с увеличенным контрастом и в логарифмическом масштабе и предназначен только для просмотра спектрограммы.
Файл для обратного преобразования Фурье:
rem вход: %1_A.tif – амплитуда спектра, %1_Ph.tif – фаза спектра
rem выход: %1_ift.tif – восстановленное изображение
SETLOCAL EnableDelayedExpansion
convert %1_A.tif %1_Ph.tif – ift %1_ift.tif
Спектрограмму, полученную с помощью первого bat-файла, я обрабатывал в GIMP, превращал в два файла (амплитуду и фазу), из которых с помощью второго bat-файла получал восстановленное изображение.
Программу ImageMagick (исполняемые модули) легко скачать и установить на своем компьютере, но есть одна сложность. По каким-то причинам поддержка преобразования Фурье по умолчанию отключена. Чтобы ее включить, предлагается скачать исходные коды ImageMagick, скачать библиотеки fftw3*.dll из другого источника и самому оттранслировать все это, что я и проделал (звездочка в имени библиотеки означает, что на самом деле библиотек несколько, например, fftw3–3.dll, fftw3f-3.dll, fftw3l-3.dll). В интернете иногда появляются уже оттранслированные кем-то варианты, но быстро исчезают.
Наиболее известная
Помимо математических функций для работы с матрицами, массивами и изображениями, в состав MATLAB входит язык программирования MATLAB, программные интерфейсы с С++ и другими языками, средства создания графических интерфейсов пользователя, графические представления данных. Это платное программное обеспечение, причем наборы функций, реализующие разные инструменты обработки, продаются по отдельности, что удобно.
К счастью, существует бесплатный аналог MATLAB, мало чем уступающий своему платному собрату. Это – библиотека octave
. Группа функций в octave называется package, а в MATLAB – toolbox.Библиотека octave имеет графическую оболочку (GUI), которую я нахожу очень удобной. С ее помощью легко писать простые программки и выполнять их в отладчике. При этом вся документация под рукой!
Вот программка, которой я пользовался при написании главы о вейвлет-преобразовании.
IMAGE_PATH("D: \\18\\");
I3=imread("pic.tif"); ##чтение изображения
I3=cast(I3,"double"); ##увеличение точности
[l,n,k]=size(I3); ##размерность матрицы I3
I=ones(l+1,n+1,3);##'tensor' 1, 2, std 5 ##матрица из единичек
##I=ones(l+13,n+17,3);##'tensor' 5 ##закомментированный вариант ##предыдущей строки
I(:,,1) = fwt2(I3(:,,1),'db8 ,1); ##вейвлет-разложение, канал R
I(:,,2) = fwt2(I3(:,,2),'db8 ,1); ## канал G
I(:,,3) = fwt2(I3(:,,3),'db8 ,1); ## канал B
M=max(max(max(I))); ##
m=min(min(min(I))); ##
M=max(M,abs(m)); ##
m=min(-abs(M), m); ##
sm=(65535/(M+M)); ##коэффициент нормировки
imwrite(uint16(I*sm+32767),"picFWT0_t.tif"); ##сохранение отнорми-
## рованной скалеограммы
А вот как было получено увеличение контраста с помощью изменения спектрограммы Фурье в главе 6.
IMAGE_PATH("D: \\18\\");