Алгоритм наложения градиента закрашенных углов на изображении - PullRequest
5 голосов
/ 20 сентября 2008

Мне нужно поместить градиентную границу вокруг изображения. Моя проблема заключается в смешивании углов, чтобы они были гладкими там, где встречаются горизонтальные и вертикальные градиенты. Я считаю, что есть стандартный алгоритм, который решает эту проблему. Я думаю, что я даже столкнулся с этим в школе много лет назад. Но мне не удалось найти какую-либо ссылку на один из нескольких поисковых запросов в Интернете.

(Я реализовал шаблон радиальной заливки в углу, но переход все еще не достаточно плавный.)

Мои вопросы :

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

  2. Отказ от любого стандартного алгоритма, какой лучший способ определить нужный пиксель значение для получения плавного градиента в углах? (Сделать гладкую переход от вертикали градиент к горизонтали градиент.)

РЕДАКТИРОВАТЬ : Итак, представьте, что у меня есть изображение, которое я вставлю поверх увеличенного изображения. Большее изображение - сплошной черный, а меньшее - сплошной белый. Прежде чем вставить его, я хочу смешать меньшее изображение с большим, установив альфа-значение на меньшем изображении, чтобы создать прозрачную «рамку» вокруг него, чтобы оно «исчезало» в большом изображении. Сделано правильно, у меня должен быть плавный градиент от черного к белому, и я делаю везде, кроме углов и внутреннего края.

На краю границы градиента около центра изображения значение будет 255 (не прозрачно). Когда граница приближается к внешнему краю, значение альфа приближается к 0. В углах изображения, где встречаются границы вершины и горизонта, вы получаете то, что составляет диагональную линию. Я хочу устранить эту линию и иметь плавный переход.

Мне нужен алгоритм, который определяет значение альфа (0 - 255) для каждого пикселя, который перекрывается в углу изображения, когда горизонтальные и вертикальные края встречаются.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2008

Предположительно, вы умножаете два градиента там, где они перекрываются, верно?

Не знаю о стандартном алгоритме. Но если вы используете градиент в форме знака, а не линейный, это должно устранить видимый край, где эти два перекрываются.

Простая сигмовидная функция - это плавный шаг (t) = t t (3 - 2 * t), где 0 <= t <= 1 </p>

0 голосов
/ 20 сентября 2008

Если вам не нужно изменять его размер, вы можете просто использовать простую альфа-карту.

Однако я однажды использовал простое гауссово затухание со средним значением в том месте, где я хотел, чтобы это были последние полностью непрозрачные пиксели. Если это имеет смысл.

...