Существует ли известный алгоритм масштабирования растрового изображения, который дает тот же результат, что и этот алгоритм?

Мой алгоритм масштабирования растрового изображения b размером w1 × h1 до растрового изображения размером w2 × ч2:

  1. масштабировать b до растрового изображения b1 размером lcm(w1, w2) × lcm(h1< /em>, h2) с использованием алгоритма масштабирования ближайшего соседа;
  2. разбить b1 на сетку со столбцами w2 и строками h2, где все столбцы имеют одинаковую ширину, а все строки имеют одинаковую высоту;
  3. установить цвет каждого пикселя в b1 равным среднему цвету соответствующей ячейки сетки пикселя;
  4. масштабировать измененный b1 до растрового изображения b2 размером w2 × h2, используя алгоритм масштабирования ближайшего соседа;
  5. Растровое изображение b2 является результатом этого алгоритма.

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


person EFanZh    schedule 20.03.2016    source источник
comment
Звучит ужасно похоже на окольный способ билинейной интерполяции.   -  person beaker    schedule 20.03.2016
comment
@beaker Я не думаю, что билинейная интерполяция выполняет ту же работу. Когда целевой размер является целым числом, кратным исходному размеру, мой алгоритм эквивалентен интерполяции ближайшего соседа. Есть ли у билинейной интерполяции такая функция?   -  person EFanZh    schedule 20.03.2016


Ответы (2)


Проблема с вашим алгоритмом в том, что он займет много памяти. Например, если вы масштабируете размер от 11 x 11 до 13 x 13, наименьшее общее кратное (lcm) между 11 и 13 равно 143. Таким образом, вы создадите изображение размером 143 x 143, а затем уменьшите его до 13 x 13.

В качестве альтернативы посмотрите на «билинейную интерполяцию»: https://en.wikipedia.org/wiki/Bilinear_interpolation (эта статья также предоставляет другие методы в разделе "См. также").

person Sci Prog    schedule 20.03.2016
comment
Я знаю, что есть много хороших алгоритмов масштабирования, и я уже знал способ уменьшить потребление памяти, но это немного сложно. Я думаю, что алгоритм, который я описал, легче понять. Возможно, мой вопрос вводит в заблуждение. Мой алгоритм не имеет значения, важен результат. Я хочу знать, есть ли известный алгоритм, который дает тот же результат, что и мой. - person EFanZh; 20.03.2016
comment
К сожалению я не знаю. - person Sci Prog; 20.03.2016

Подробное описание я нашел здесь: http://entropymine.com/imageworsener/pixelmixing/.

Среди прочего, это иногда называют смешиванием пикселей, усреднением пикселей или картой области.

person EFanZh    schedule 03.04.2016