Направленная интерполяция кубической свертки - Directional Cubic Convolution Interpolation - Wikipedia

Направленная интерполяция кубической свертки (DCCI) направлен на ребро масштабирование изображения алгоритм, созданный Dengwen Zhou и Xiaoliu Shen.[1]

Учитывая ребра в изображение, это масштабирование алгоритм уменьшает артефакты, общие для других алгоритмов масштабирования изображения. Например, устраняются артефакты лестницы на диагональных линиях и кривых.

Алгоритм изменяет размер изображения в 2 раза по сравнению с исходным размером минус 1.[2]

Алгоритм

Алгоритм состоит из трех основных этапов:

  1. Скопируйте оригинал пиксели к выходному изображению с промежутками между пикселями.
  2. Вычислите пиксели для диагональных зазоров.
  3. Вычислите количество пикселей для оставшихся горизонтальных и вертикальных промежутков.

Макет сетки пикселей интерполяции DCCI

Расчет пикселей в диагональных зазорах

Оценка диагональных пикселей выполняется на исходных данных изображения в области 4 × 4, с новым пикселем, который вычисляется в центре, в промежутке между исходными пикселями. Это также можно рассматривать как область 7 × 7 в увеличенном изображении с центром в новом пикселе для вычисления, а исходные пиксели уже были скопированы.

Алгоритм решает один из трех случаев:

  • Край вверх-вправо - интерполирует по направлению вниз-вправо.
  • Край в направлении вниз-вправо - интерполирует по направлению вверх-вправо.
  • Гладкая область - интерполирует в обоих направлениях, затем значения умножаются на веса.

Расчет прочности диагональной кромки

Пусть d1 будет суммой ребер в направлении вверх-вправо, а d2 будет суммой ребер в направлении вниз-вправо.

Чтобы вычислить d1, возьмите сумму abs (P (X, Y) - P (X - 1, Y + 1)) в области от X = от 1 до 3 и Y = от 0 до 2.

Чтобы вычислить d2, возьмите сумму abs (P (X, Y) - P (X + 1, Y + 1)) в области от X = от 0 до 2 и Y = от 0 до 2.

Диагональные пиксели интерполяции DCCI

Интерполяция пикселей

Если (1 + d1) / (1 + d2)> 1,15, тогда у вас есть край в направлении вверх-вправо. Если (1 + d2) / (1 + d1)> 1,15, то у вас есть край в направлении вниз-вправо.

В противном случае вы попадаете в гладкую зону. Чтобы избежать разделения и плавающая точка операций, это также можно выразить как 100 * (1 + d1)> 115 * (1 + d2) и 100 * (1 + d2)> 115 * (1 + d1).

Верхний правый край

Для края в направлении вверх-вправо мы хотим интерполировать в направлении вниз-вправо.

Выходной пиксель = (-1 * P (0, 0) + 9 * P (1, 1) + 9 * P (2, 2) - 1 * P (3, 3)) / 16

Значение пикселя необходимо принудительно установить в допустимый диапазон значений пикселей (обычно от 0 до 255).

Нижний правый край

Для края в направлении вниз-вправо мы хотим интерполировать в направлении вверх-вправо.

Выходной пиксель = (-1 * P (3, 0) + 9 * P (2, 1) + 9 * P (1, 2) - 1 * P (0, 3)) / 16

Значение пикселя необходимо принудительно установить в допустимый диапазон значений пикселей (обычно от 0 до 255).

Гладкая область

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

w1 = 1 / (1 + d1 ^ 5)

w2 = 1 / (1 + d2 ^ 5)

вес1 = w1 / (w1 + w2)

вес2 = w2 / (w1 + w2)

DownRightPixel = (-1 * P (0, 0) + 9 * P (1, 1) + 9 * P (2, 2) - 1 * P (3, 3)) / 16

UpRightPixel = (-1 * P (3, 0) + 9 * P (2, 1) + 9 * P (1, 2) - 1 * P (0, 3)) / 16

Выходной пиксель = DownRightPixel * weight1 + UpRightPixel * weight2

Значение пикселя необходимо принудительно установить в допустимый диапазон значений пикселей (обычно от 0 до 255).

Расчет оставшихся пикселей

Оценка оставшихся пикселей выполняется для данных масштабированного изображения в области 7 × 7, с новым пикселем, который вычисляется в центре. Эти вычисления зависят либо от исходных пикселей изображения, либо от диагонального пикселя, рассчитанного на предыдущем шаге.

Алгоритм решает один из трех случаев:

  • Край в горизонтальном направлении - интерполирует по вертикали.
  • Край в вертикальном направлении - интерполирует по горизонтали.
  • Гладкая область - интерполирует в обоих направлениях, затем значения умножаются на веса.

Расчет прочности кромки по горизонтали / вертикали

Пусть d1 - сумма ребер в горизонтальном направлении, а d2 - сумма ребер в вертикальном направлении.

Рассмотрим ромбовидную область 7 × 7 с центром в пикселе для вычисления с использованием только значений пикселей из оригинала и значений пикселей, добавленных по диагонали.

Чтобы вычислить d1, возьмите сумму абсолютных разностей горизонтальных краев, выбрав эти значения пикселей:

| P (X + 1, Y-2) - P (X-1, Y-2) | + | P (X + 2, Y-1) - P (X, Y-1) | + | P (X, Y-1) - P (X-2, Y-1) | + | P (X + 3, Y) - P (X + 1, Y) | + | P (X + 1, Y) - P (X-1, Y) | + | P (X-1, Y) - P (X-3, Y) | + | P (X + 2, Y + 1) - P (X, Y + 1) | + | P (X, Y + 1) - P (X-2, Y + 1) | + | P (X + 1, Y + 2) - P (X-1, Y + 2) |

Чтобы вычислить d2, возьмите сумму абсолютных разностей вертикальных краев, выбрав эти значения пикселей:

| P (X-2, Y + 1) - P (X-2, Y-1) | + | P (X-1, Y + 2) - P (X-1, Y) | + | P (X-1, Y) - P (X-1, Y-2) | + | P (X, Y + 3) - P (X, Y + 1) | + | P (X, Y + 1) - P (X, Y-1) | + | P (X, Y-1) - P (X, Y-3) | + | P (X + 1, Y + 2) - P (X + 1, Y) | + | P (X + 1, Y) - P (X + 1, Y-2) | + | P (X + 2, Y + 1) - P (X + 2, Y-1) |

DCCI-интерполяция пикселей по горизонтали / вертикали

Интерполяция пикселей

Если (1 + d1) / (1 + d2)> 1,15, то у вас есть ребро в горизонтальном направлении.

Если (1 + d2) / (1 + d1)> 1,15, то у вас есть ребро в вертикальном направлении.

В противном случае вы попадаете в гладкую зону.

Чтобы избежать операций деления с плавающей запятой, это также можно выразить как 100 * (1 + d1)> 115 * (1 + d2) и 100 * (1 + d2)> 115 * (1 + d1).

Горизонтальный край

Для горизонтального края мы хотим интерполировать в вертикальном направлении, используя только столбец с центром в пикселе.

Выходной пиксель = (-1 * P (X, Y - 3) + 9 * P (X, Y - 1) + 9 * P (X, Y + 1) - 1 * P (X, Y + 3)) / 16

Значение пикселя необходимо принудительно установить в допустимый диапазон значений пикселей (обычно от 0 до 255).

Вертикальный край

Для вертикального края мы хотим интерполировать в горизонтальном направлении, используя только строку с центром в пикселе.

Выходной пиксель = (-1 * P (X - 3, Y) + 9 * P (X - 1, Y) + 9 * P (X + 1, Y) - 1 * P (X + 3, Y)) / 16

Значение пикселя необходимо принудительно установить в допустимый диапазон значений пикселей (обычно от 0 до 255).

Гладкая область

В сглаженной области сила горизонтального края будет вносить вклад в вес для пикселя с вертикальной выборкой, а сила по вертикали будет вносить вклад в вес для пикселя с горизонтальной выборкой.

w1 = 1 / (1 + d1 ^ 5)

w2 = 1 / (1 + d2 ^ 5)

вес1 = w1 / (w1 + w2)

вес2 = w2 / (w1 + w2)

Горизонтальный пиксель = (-1 * P (X - 3, Y) + 9 * P (X - 1, Y) + 9 * P (X + 1, Y) - 1 * P (X + 3, Y)) / 16

VerticalPixel = (-1 * P (X, Y - 3) + 9 * P (X, Y - 1) + 9 * P (X, Y + 1) - 1 * P (X, Y + 3)) / 16

Выходной пиксель = вертикальный пиксель * вес1 + горизонтальный пиксель * вес2

Значение пикселя необходимо принудительно установить в допустимый диапазон значений пикселей (обычно от 0 до 255).

Не указано

Граничные пиксели

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

Цветные изображения

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

Смотрите также

Рекомендации

  1. ^ Дэнвэнь Чжоу; Сяолиу Шэнь. «Масштабирование изображения с использованием направленной кубической интерполяции свертки». Получено 13 сентября 2015.
  2. ^ Сабир, Эссаид; Медроми, Хичам; Садик, Мохамед (02.02.2016). Достижения в области повсеместного сетевого взаимодействия: материалы UNet'15. Springer. ISBN  978-981-287-990-5.