Мне нужна хорошая функция, которая реализована в программе Java: ImageJ.
Мне нужно понять алгоритм, используемый там.
Функция имеет несколько параметров:
текст ссылки
А перед использованием FFT он конвертирует изображение в специальное:
Полосовой фильтр использует специальный алгоритм для уменьшения краевых артефактов (перед преобразованием Фурье изображение увеличивается в размере за счет прикрепления зеркальных копий частей изображения вне исходного изображения, поэтому на краях не происходит скачков)
Можете ли вы рассказать мне больше об этом специальном преобразовании?
Собственно мозаичное зеркальное изображение.
Я пишу на C ++ и хочу переписать эту часть программы на C ++.
EDIT1:
Мне нужно понять, как это работает с мозаичным изображением, может быть, оно особенное. На самом деле сначала он преобразует изображение в изображение нового размера, поэтому для моих изображений это будет:
преобразование изображения размером от 600х480 до 1024х1024.
Как здесь используется плитка?
EDIT2:
Также трудно понять это описание функции tileMirrored:
Помещает ImageProcessor (ROI) в новый ImageProcessor размером ширина x высота y в позиции (x, y). Изображение зеркально отражается по краям, чтобы избежать эффектов FFT.
Что подразумевается под "... размера ширина x высота y в позиции (x, y)."?
EDIT3:
Я реализовал этот полосовой фильтр, и он дает те же результаты, что и оригинальная программа.
Но сам алгоритм в оригинальной программе (также в моей программе) очень медленный
Я хочу использовать этот фильтр не один раз в моей программе, но он рассчитывает примерно 0,5-2 секунды на каждый вызов (в зависимости от значения параметра).
Там используется преобразование FHT (не FFT), это быстрее, чем FFT?
Я думаю, что сам фильтр не оптимизирован, см. Реализацию функции filterLargeSmall:
исходный код