Уменьшение и увеличение дискретизации изображения с использованием билинейной интерполяции - PullRequest
3 голосов
/ 01 июля 2011

Я пытаюсь понять, как именно повышающая и понижающая дискретизация 2D-изображения, которое у меня есть, происходит с использованием билинейной интерполяции.Теперь я знаю, как работает билинейная интерполяция с использованием значений окрестности 2x2 для интерполяции точки данных внутри этой области 2x2 с использованием весов.Но то, о чем я не знаю, спрашивается ниже.Мои цели и конкретные запросы -

1. Для начала у меня есть 2D-изображение значений (размер MxN).Ширина (M) и высота (N) этого изображения не фиксированы, но будут меняться от случая к случаю.Это двумерное изображение должно быть дискретизировано с использованием билинейной интерполяции до сетки размера PxQ (P и Q должны быть настроены как входные параметры), например, пусть PxQ равен 8x8.И предположим, что входное двумерное изображение массива имеет размер 200x100.т.е. 200 столбцов, 100 строк.

Теперь, как при выполнении понижающей дискретизации с использованием билинейной интерполяции этого изображения 200x100 я должен сначала получить изображение с пониженной дискретизацией размером 100x50 (понижающая дискретизация на 2 в обоих измерениях с использованием билинейной интерполяции);затем изображение 50x25 (опять же, выполнив понижающую дискретизацию на 2 в обоих измерениях), затем изображение 25x12, затем 12x12 (на этот раз уменьшив дискретизацию с помощью линейной (не билинейной!) интерполяции только вдоль строк, и, наконец, отбросьте несколько пикселей, чтобы получить 8x8Приветствуются любые указатели на точный алгоритм или другие способы достижения этого.

2. Вышеупомянутый вопрос поднимает еще один вопрос - как уменьшить частоту, используя билинейную интерполяцию с нецелым масштабным коэффициентом, например, как перейти отскажем, массив изображений 8x8 с изображением 6x2, в котором коэффициенты передискретизации / масштабирования в обоих измерениях не являются целыми числами.

3. Затем, когда я получаю изображение размером 8x8, мне нужно повысить его дискретность путем билинейной интерполяции до того же исходного размера Iначалось с - MxN. Если мне нужно перейти от 8x8, чтобы сказать 20x20. Как он будет интерполировать между точками в строке и будет ли он интерполировать всю строку каким-то образом. Опять же, в случае нецелых масштабных коэффициентов, как бы билинейная интерполяциядля повышения частоты. Точные шаги.

И, наконец, я neЧтобы реализовать это в C.

Я пытался визуализировать эти конкретные вопросы на разных примерах, но не получил четкого представления о том, как будет происходить эта билинейная интерполяция при понижающей и повышающей дискретизации.Все, что у меня есть, - это множество листов бумаги с точками и скрещенными картинками на столе, но все еще нет ясного решения!

Любые подробные материалы для чтения, книги приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...