Приведу тексты некоторых из пакетных файлов 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 (matrix laboratory). Она широко используется в научных исследованиях во всем мире и, в частности, применялась при реализации моделей CIECAM02 и iCAM06.

Помимо математических функций для работы с матрицами, массивами и изображениями, в состав 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\\");

Перейти на страницу:

Похожие книги