Завершено
6
30.05.2024, 08:06
24.12.2024, 09:09
Реализовать изменение размеров (ресэмплинг) изображения.
ВMP файл
Изображение - это непрерывная функция цвета от координат, c(x,y). При переводе изображения в цифровую форму происходит дискретизация и квантование изначально непрерывной функции c(x,y). Непрерывное изображение разделяется на одинаковые прямоугольные области. Каждой такой области сопоставляется значение цвета, взятое в её средней точке. В результате получается набор отсчетов, собранный в двумерный массив d(i,j).

Часто возникает необходимость получить то же самое цифровое изображение в другом разрешении: большем или меньшем. Если в наличии есть исходное непрерывное изображение c(x,y), то достаточно повторно провести дискретизацию с другим шагом по горизонтали и вертикали.


Но чаще всего в наличии есть только цифровое изображение: массив отсчетов d(i,j). В этом случае, необходимо на основании этих отсчетов воссоздать (интерполировать) непрерывное изображение c'(x,y), а затем провести его повторную дискретизацию с требуемыми параметрами.
Естественно, построенное с помощью интерполяции изображение c'(x,y), может, и часто будет не совпадать в деталях с исходным c(x,y) (теорема Котельникова).
Для задачи передискретизации достаточно вычислить значения функции c'(x,y) только в нужных точках, и из полученных отсчетов сформировать новое цифровое изображение r(i,j).


Интерполированное значение цвета в произвольной точке c'(x,y) можно представить как линейную комбинацию отсчетов d(i,j) в некоторой окрестности искомой точки.
Формула "веса" W(x) выбирается в зависимости от используемого алгоритма интерполяции. Также в зависимости от выбранного алгоритма может быть различно число используемых "окрестных" отсчетов.
При интерполяции изображения используются 4 ближайших известных точки (по 1 отсчету в каждом направлении по каждой оси).
При интерполяции изображения используются 16 ближайших известных точек (по 2 отсчета в каждом направлении по каждой оси).
Для интерполяции изображений обычно используют a = 2 или a = 3.
При a = 2 используются 16 ближайших известных точек (по 2 отсчета в каждом направлении по каждой оси), при a = 3 - 36 ближайших точек (по 3 отсчета в каждом направлении по каждой оси).
Реализовать изменение размеров (ресэмплинг) изображения на базе алгоритмов билинейной, бикубической интерполяции и фильтрации Ланцоша.
BMP файл