Для данного изображения с m , n целыми числами интерполяция этого изображения в любой произвольной точке m ′ , n ′ может быть записана какя( м , н )м , нм', н'
я~( м', н') = ∑м = ⌊ м'⌋ -ш+1⌊ м'W +ш Σn = ⌊ n'⌋ -ш+1⌊ н'W +шя( м , н ) е ( м'- м , н'- н )
я~я( х , у) и все, что делают различные интерполяционные функции, заключается в минимизации ошибки аппроксимации при различных ограничениях и целях.
е( м , н ) оконным функциям , очень сильно зависит от конкретной проблемы. Я не слышал о Конне, Уэлче и Парзене (возможно, они специфичны для конкретной области), но остальные должны быть двумерными эквивалентами математических функций для одномерного окна, приведенного в ссылке на Википедию выше.
Как и в случае оконных функций для временных сигналов, легко понять суть того, что делает ядро с интерполяцией изображений, взглянув на его частотную характеристику. Из моего ответа на оконные функции :
Два основных фактора, которые описывают оконную функцию:
- Ширина основного лепестка (т. Е. На какой частоте bin мощность равна половине мощности максимального отклика)
- Ослабление боковых лепестков (т. Е. Насколько далеко вниз находятся боковые лепестки от основной доли). Это говорит вам о спектральной утечке в окне.
Это в значительной степени справедливо для интерполяционных ядер. Выбор в основном является компромиссом между частотной фильтрацией (ослабление боковых лепестков), пространственной локализацией (шириной основного лепестка) и уменьшением других эффектов, таких как звон (эффект Гиббса), сглаживание, размытие и т. Д. Например, ядро с колебаниями, такими как так как ядро sinc и ядро Lanczos4 будут вводить «звон» на изображении, тогда как пересчет Гаусса не будет вызывать звон.
Вот упрощенный пример в Mathematica, который позволяет увидеть влияние различных интерполяционных функций:
true = ExampleData[{"TestImage", "Lena"}];
resampling = {"Nearest", "Bilinear", "Biquadratic", "Bicubic",
"Gaussian", "Lanczos", "Cosine", "Hamming", "Hann", "Blackman",
"Bartlett", "Connes", "Welch", "Parzen", "Kaiser"};
small = ImageResize[true, Scaled[1/4]];
true
я( х , у)small
я( м , н )я( м , н )я~( м', н')
Вы можете убедиться, что разные интерполяционные функции имеют разные эффекты. Ближайшие и некоторые другие имеют очень грубые функции, и вы можете по существу видеть неровные линии (см. Полноразмерное изображение, а не отображение сетки). Бикубическая, биквадратичная и парценовская системы преодолевают это, но создают много размытия. Из всех ядер Lanczos кажется (визуально) наиболее привлекательным и лучшим из всех.
Я постараюсь расширить этот ответ и привести более интуитивные примеры, демонстрирующие различия, когда у меня есть время. Возможно, вы захотите прочитать эту довольно простую и информативную статью, которую я нашел в Интернете (предупреждение в формате PDF).