Как правильно поменять размер изображения для Фурье-преобразований?
Здравствуйте!
Я начал экспериментировать с фурье-преобразованиями для работы с изображениями в рамках opencv и не смог найти ответа на вопрос - каков правильный метод масштабирования изображения для его подготовки к работе с фурье?
Для DPF или FFT2 изображение следует масштабировать так, чтобы боковая сторона равнялась двойке в какой-либо степени.
Конечно, в opencv есть функция getOptimalDFTSize, которая позволяет узнать нужное значение. Меня смущает необходимость сжимания или растяжения изображения так как значения пикселей меняется различными алгоритмами масштабирования. И главное - непонятно по какой логике эта функция выдает ответ)))
Допустим у нас есть grayscale изображение 80х80 пикселей.
Можно:
1) Уменьшить до 64х64 пикселей
2) Растянуть до 128х128
3) Сделать черный фон 128х128 и в центре нарисовать исходное
Вопросы:
1 - Насколько сильно влияет масштабирование изображения на исходную информацию в нём?
1а - какой алгоритм ресайзинга меньше портит данные?
2 - Чем вариант 1 лучше 2? Тем, что 80 ближе к 64?
2а - правильно ли растягивать изображение к той величине 2^n, что ближе к исходному ? как поступать например для 96х96 (середина между 128 и 64) ?
3 - чем плох и хорош вариант 3 с рамкой?
3б - если рамка - хорошее решение, то существуют ли методы в которых цвет рамки не просто черный, а рассчитывается
по исходному изображению из каких-либо соображений оптимизации? (если это конечно имеет значение и ответ на вопрос 3 не исключает этот подвопрос)
Заранее благодарю за ответы.
p/s если я не описал какой-либо вариант масштабирования, то дополните пожалуйста.
Третий вариант самый быстрый и, вроде, не вносит искажений. По-крайней мере, многие ф-ии БПФ дополняют данные нулями, если длина не степень двойки (называется zero padding). Отсюда два вывода: брать именно чёрный цвет (нули) и не обязательно смещать изображение к центру, можно оставить в левом верхнем краю (если там начало координат).