I=imread("picIn.tif"); ##чтение изображения
I=cast(I,"double"); ##увеличение точности
IFFT=fft2(I); ## 2D преобразование Фурье
A=abs(IFFT); ##амплитуда
IM=arg(IFFT); ##фаза
M=max(max(max(A))); ##максимум амплитуды
A=A.^0.95; ##возведение амплитуды в степень 0.95
MA=max(max(max(A))); ## максимум новой амплитуды
A=A.*(M/MA); ##нормировка амплитуды
Q=A.*cos(IM)+i*A.*sin(IM); ##формирование спектра по новой амплитуде ##и старой фазе
II=ifft2(Q); ##обратное преобразование Фурье
II=real(II); ##
imwrite(uint16(II),"picOut.tif"); ##запись в файл
Библиотека OpenCV
(Open Source Computer Vision Library) содержит несколько сотен алгоритмов обработки изображений и видео, и в том числе следующие:• линейная и нелинейная фильтрация и геометрические преобразования изображений, преобразования цветовых пространств;
• видео-анализ (определение движения, отслеживание объектов, вычитание фона);
• вход и выход видео (захват видео и кодеки);
• калибровка камер и 3D реконструкция;
• отыскание в изображении характерных особенностей (salient feature detectors);
• отыскание в изображении объектов заданного класса (лиц, людей, автомобилей и др.);
• элементы графического интерфейса.
Программный интерфейс библиотеки – С++. Следующая простая программка считывает изображение и показывает его в окне.
Mat image; // Mat – многомерный массив
image = imread("Pic.jpg", IMREAD_COLOR); // чтение цветного изображения
namedWindow("Картинка", WINDOW_AUTOSIZE);// создание окна
imshow(" Картинка", image); // показать изображение в окне
Небольшая библиотека Poisson Image Editing
(обработка изображений в градиентном представлении с использованием уравнений в частных производных) предназначена для бесшовного впечатывания части одного изображения в другое изображение. Использует библиотеку OpenCV и библиотеку Eigen (eigen.tuxfamily.org) для решения разреженных систем линейных уравнений (sparse linear system).4.3. Программы для сборки панорам
Существует много программ для автоматической склейки фрагментов в панорамное изображение: PTAssembler, PhotoStitch, PanoTools или популярные коммерческие пакеты, такие как Autostitch, Arc Soft Panorama Maker, Panorama Factory и PanaVue. Во многих из этих программ панораму, полученную автоматически, можно еще и подправить вручную. Обычно, путем указания точек фрагментов, которые должны совпасть. Или с помощью перетаскивания небольшого кусочка одного фрагмента в нужное место другого.
Многие из этих программ выполняют изменение перспективы и исправление пространственных искажений, вносимых объективом. Большинство программ сборки панорам предоставляют возможность задать точку схождения перспективы, а также тип проекции изображения.
Особо нужно упомянуть PanoTools
– набор приложений (как платных, так и бесплатных), вызываемых из командной строки, Среди этих приложений я бы выделил следующие:• PTRemap – преобразует изображение из одной проекции в другую;
• PTAdjust – вставляет и удаляет изображения с изменением проекции, оптимизирует контрольные точки;
• PTStitcher – сборщик изображений в панораму.
Поскольку с командной строкой работать неудобно, для PanoTools появилось несколько графических интерфейсов: hugin, PanoWizard, PTGui, PTAssembler (первые два – бесплатные).
Мне нравится hugin
(произносится, видимо, хь'юджин), исходные коды которого к тому же и открыты. Программа хорошо собирает многослойные панорамы из нескольких десятков кадров. При этом кадры, снятые с разной экспозицией и с разным балансом белого неплохо выравниваются. Правда, выравнивания кадров по контрасту, по-моему, не происходит, либо я не докопался.Контрольные точки для сшивки фрагментов находятся автоматически (сотни и тысячи точек!). В редких сложных случаях приходится указывать часть новых точек и удалять некоторые лишние вручную.
С помощью программы hugin можно выравнивать снимки для последующего использования при обработке HDR-изображений и в алгоритме «стопки фокусов» (align_image_stack). Обо всем этом ниже.
Для сшивки фрагментов панорам hugin может использовать программы enblend, enfuse и smartblend (см. ниже).