Jump to content

Интерполяция направленной кубической свертки

Интерполяция направленной кубической свертки по краям, (DCCI) — это алгоритм масштабирования изображения созданный Дэнвэнь Чжоу и Сяолиу Шеном. [ 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 * вес1 + UpRightPixel * вес2

Значение пикселя необходимо будет привести к допустимому диапазону значений пикселей (обычно от 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

ВертикальныйПиксель = (-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. ^ Сабир, Эссаид; Медроми, Хичам; Садик, Мохамед (2 февраля 2016 г.). Достижения в области повсеместных сетей: материалы UNet'15 . Спрингер. ISBN  978-981-287-990-5 .


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f150a6495d2f825ba0a2d4de4b9bb326__1623872220
URL1:https://arc.ask3.ru/arc/aa/f1/26/f150a6495d2f825ba0a2d4de4b9bb326.html
Заголовок, (Title) документа по адресу, URL1:
Directional Cubic Convolution Interpolation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)