Повышение разрешающей способности изображений
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
фектной детальности увеличенных изображений, так что некоторые из них для вращения или изменения перспективы изображения непригодны.
Рассмотрим более подробно работу неадаптивных алгоритмов интерполяции. В моем проекте применены алгоритмы: билинейная и бикубическая. Так как из простейших и доступных методов интерполяции билинейная более проста в реализации и дает приемлемое качество при увеличении разрешения. А бикубический метод он немного сложен в реализации, но дает очень хорошее качество.
Метод ближайшего соседа - это наиболее базовый из всех алгоритмов интерполяции, который требует наименьшего времени обработки, поскольку учитывает только один пиксель - ближайший к точке интерполяции. В результате каждый пиксель просто становится больше.
Билинейная интерполяция рассматривает квадрат 2x2 известных пикселя, окружающих неизвестный. В качестве интерполированного значения используется взвешенное усреднение этих четырёх пикселей. В результате изображения выглядят значительно более гладко, чем результат работы метода ближайшего соседа.
В вычислительной математике билинейная интерполяция - расширение линейной интерполяции для функций в двух переменных, то есть - это линейная интерполяция первого порядка в двумерном случае:
f(x, y)=(1-x)(1-y)f(0, 0)+x(1-y)f(1, 0)+(1-x)yf(0, 1)+xyf(1, 1) (2).
Ключевая идея заключается в том, чтобы провести обычную линейную интерполяцию сначала в одном направлении, затем в другом.
Рис.1. Билинейная интерполяция
Четыре красные точки представляют собой известные значения функции. Значение в зеленой точке должно быть интерполировано.
Допустим, что необходимо интерполировать значение функции f в точке P = (x, y). Для этого необходимо знать значения функций в (окружающих P) точках Q11 = (x1, y1), Q12 = (x1, y2), Q21 = (x2, y1), и Q22 = (x2, y2).
Первым шагом интерполируется (линейно) значение вспомогательных точек R1 и R2 вдоль оси абсцисс, где
R1 = (x,y1)= (x,y2)
(3)
(4)
Теперь проводится линейная интерполяция между вспомогательными точками R1 и R2.
(5)
Это и есть приблизительное значение функции в точке P, т.е. f(x, y).
(6)
В особом случае, когда известные точки находятся на вершинах единичного квадрата, т.е. имеют координаты (0, 0), (0, 1), (1, 0), и (1, 1), формула билинейной интерполяции упрощается до:
(7).
Или же с помощью умножения векторов с матрицей:
(8).
Обратите внимание: сам интерполянт нелинеен:
(9),
т.к. является произведением двух линейных функций. Альтернативное написание:
(10),
Где
. (11).
Результат билинейной интерполяции не зависит от порядка шагов. Возможно сначала интерполировать между известными точками вдоль оси ординат и затем, получив два вспомогательных значения, интерполировать между ними вдоль оси абсцисс. Результат будет тот же.
В компьютерной графике билинейная интерполяция получила широкое распространение в процессе ресэмплинга (или, проще говоря, масштабирования) изображений.
При увеличении цифровых изображений наблюдается сильная пикселизация картинки. Билинейная интерполяция используется для раiета цветов дополнительных пикселей (P) относительно основных, исходных (Q), что позволяет сглаживать переходы. Значением функции f в данном случае выступает цвет пикселя (его составляющие). При этом квадрат, образованный четырьмя рассматриваемыми основными точками принимается единичным.
Главным недостатком билинейной интерполяции при масштабировании изображений является тот факт, что при увеличении в N раз изображения размером W на H пикселей в результате будет получено изображение размером не NW на NH пикселей, а (N(W ? 1) + 1) на (N(H ? 1) + 1) пикселей.
Связано это с тем, что в исходном изображении, например, по горизонтали имеется W точек, т.е. (W ? 1) смежных пар. При увеличении изображения в N раз между каждой парой основных точек вставляется по (N ? 1) дополнительных точек (т.е. при увеличении вдвое между основными точками вставляется еще по одной, при увеличении втрое - по две и т.д.). Итого в результате ширина результирующего изображения будет равна сумме количества основных и дополнительных точек:
W + (W ? 1)(N ? 1) = N(W ? 1) + 1 (12).
Проще говоря, для последнего пикселя (в каждой строке и столбце) исходного изображения не находится пары, с которой можно было бы провести интерполирование.
Бикубическая интерполяция
Бикубическая интерполяция идёт на один шаг дальше билинейной, рассматривая массив из 4x4 окружающих пикселей - всего 16. Поскольку они находятся на разных расстояниях от неизвестного пикселя, ближайшие пиксели получают при раiёте больший вес. Бикубическая интерполяция производит значительно более резкие изображения, чем предыдущие два метода, и возможно, является оптимальной по соотношению времени обработки и качества на выходе. По этой причине она стала стандартной для многих программ редактирования изображений (включая Adobe Photoshop), драйверов принтеров и встроенной интерполяции камер.
В вычислительной математике бикубическая интерполяция - расширение кубической интерполяции на случай функции двух переменных, значения которой заданы на двумерной регулярной сетке. Поверхность, полученная в результате бикубической интерполяции, является гладкой функцией, в отличие от поверхностей, полученных в результате билинейной интерполяции или интерполяции методом ближайше?/p>