Каковы практически значимые различия между различными методами передискретизации изображения?


22

ImageResizeФункция Mathematica поддерживает множество методов повторной выборки .

Не будучи знакомым с этой областью, за пределами ближайшего соседа, билинейного, биквадратичного и бикубического (что очевидно из названия), я заблудился.

Можете ли вы указать мне какой-либо источник, который объяснит основные (математические) различия между этими методами, и, в частности, укажет на практические различия (например, путем демонстрации образцов изображений, где выбор метода действительно имеет значение и вносит заметные различия)?

У меня нет фона для обработки сигналов, поэтому я бы предпочел «нежное» и краткое введение :-)


Я скопирую здесь список ImageResizeметодов для тех, кто "ленивый" нажимает на ссылку:

  • "Ближайший" ближайший сосед пересчитывает

  • "Билинейная" билинейная интерполяция

  • «Биквадратичная» биквадратичная сплайн-интерполяция

  • «Бикубическая» бикубическая сплайн-интерполяция

  • "Гауссовская" Гауссовая повторная выборка

  • "Lanczos" Метод многомерной интерполяции Lanczos

  • "Косинус" косинус интерполяция

  • Интерполяция Хэмминга с приподнятым косинусом

  • "Ганн" поднял косинус Ганн интерполяция

  • "Blackman" трехчленный обобщенный приподнятый косинус

  • Интерполяция треугольных окон "Бартлетт"

  • "Конн" в квадрате Уэлча

  • "Уэлч" Уэлч квадратичная интерполяция

  • "Parzen" кусочно-кубическая интерполяция

  • «Кайзер» модифицированная бесселева интерполяция нулевого порядка


1
Вопрос выглядит слишком широким для меня. Было бы неплохо разделить его на конкретные методы и задать конкретные вопросы о методах, с которыми у вас есть проблемы.
mirror2image

Несколько касательных к вашему вопросу, вы можете найти это изображение сравнение повышающей дискретизации интересно: general-cathexis.com/interpolation/index.html
Mr.Wizard

Я хотел бы обратить внимание, что все методы, которые вы написали, являются пространственно-инвариантными. Я думаю, что более современные методы повышения дискретизации - это Edge Aware, как и Space Variant.
Рой

Вот предпоследнее преобразование. Это называется преобразованием PB, и оно преобразует изображение путем бикубического предсказания значений в соответствии с вероятностью того, что произойдет после обучения на многих других изображениях. Вот как выглядит [результат] [1]. [1]: v1.std3.ru/57/a9/… ..
MyBushisaNeonJungle

Ответы:


12

Для данного изображения с m , n целыми числами интерполяция этого изображения в любой произвольной точке m , n может быть записана какя(м,N)м,Nм',N'

я~(м',N')знак равноΣмзнак равном'-вес+1м'+вес ΣNзнак равноN'-вес+1N'+веся(м,N) е(м'-м,N'-N)

я~я(Икс,Y) и все, что делают различные интерполяционные функции, заключается в минимизации ошибки аппроксимации при различных ограничениях и целях.

е(м,N) оконным функциям , очень сильно зависит от конкретной проблемы. Я не слышал о Конне, Уэлче и Парзене (возможно, они специфичны для конкретной области), но остальные должны быть двумерными эквивалентами математических функций для одномерного окна, приведенного в ссылке на Википедию выше.

Как и в случае оконных функций для временных сигналов, легко понять суть того, что делает ядро ​​с интерполяцией изображений, взглянув на его частотную характеристику. Из моего ответа на оконные функции :

Два основных фактора, которые описывают оконную функцию:

  1. Ширина основного лепестка (т. Е. На какой частоте bin мощность равна половине мощности максимального отклика)
  2. Ослабление боковых лепестков (т. Е. Насколько далеко вниз находятся боковые лепестки от основной доли). Это говорит вам о спектральной утечке в окне.

Это в значительной степени справедливо для интерполяционных ядер. Выбор в основном является компромиссом между частотной фильтрацией (ослабление боковых лепестков), пространственной локализацией (шириной основного лепестка) и уменьшением других эффектов, таких как звон (эффект Гиббса), сглаживание, размытие и т. Д. Например, ядро ​​с колебаниями, такими как так как ядро ​​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я(Икс,Y)smallя(м,N)я(м,N)я~(м',N')

введите описание изображения здесь введите описание изображения здесь

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

Я постараюсь расширить этот ответ и привести более интуитивные примеры, демонстрирующие различия, когда у меня есть время. Возможно, вы захотите прочитать эту довольно простую и информативную статью, которую я нашел в Интернете (предупреждение в формате PDF).


Это инфиксная запись, которую я вижу!?! : ->
Mr.Wizard

@ Mr.Wizard Я сказал, что сделаю честную попытку :)
Lorem Ipsum
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.