Image 2x понижающая дискретизация с фильтром Ланцоша

Я пытаюсь реализовать уменьшение изображения с помощью Lanczos2.

Однако ядро, кажется, имеет нули везде (поскольку sin(pi*x)=0, если x целое число), за исключением центрального пикселя.

Таким образом, если коэффициент понижающей дискретизации представляет собой целое число (например, выходной размер составляет 1/2 от исходного размера в каждом измерении), то понижающая дискретизация Lanczos дает точно такой же результат, как интерполяция ближайшего соседа (просто взятие каждого второго пикселя при 2-кратной понижающей дискретизации).

Я считаю, что это не так, поэтому мой вопрос: чего мне не хватает?

Как использовать фильтр lanczos2 для 2-кратной понижающей дискретизации, и ожидается ли, что результат будет другим, чем просто использование каждого второго пикселя?

1 ответ

Решение

Ядро для двукратной понижающей дискретизации приведено в разделе "Прореживание с коэффициентом 2 с помощью функции sinc Lanczos2" на странице 10 ссылки, которую вы связали, с коэффициентами:

0, -0.032, 0, 0.284, 0.496, 0.284, 0, -0.032, 0

Это ядро ​​получается путем оценки заданной функции lanczos2(x) при значениях x=0.5n где n это номер образца (целое число). Это отражает тот факт, что выходная частота составляет половину исходной частоты дискретизации (таким образом, перед прореживанием пикселей требуется полуполосный фильтр, чтобы избежать наложения псевдонимов).

PS: обычно будет использоваться ядро ​​с нулями везде, кроме полученного вами центрального пикселя (хотя реализации обычно оптимизируют это ядро ​​как простую копию пикселя) в сочетании с ядром фазы 1/2 для интерполяции с коэффициентом 2.

Другие вопросы по тегам