5

我需要在图像周围放置一个 alpha 混合渐变边框。我的问题是混合角落,使它们在水平和垂直渐变相遇的地方平滑。我相信有一个标准算法可以解决这个问题。我想我什至多年前在学校遇到过它。但是我在几次网络搜索中都没有找到对其中之一的任何引用。

(我已经在角落实现了径向填充图案,但过渡仍然不够平滑。)

我的问题

  1. 如果有解决这个问题的标准算法,它的名称是什么,更好的是,它是如何实现的?

  2. 放弃任何标准算法,确定所需像素值以在角落产生平滑渐变的最佳方法是什么?(从垂直渐变平滑过渡到水平渐变。)

编辑:所以想象我有一个图像,我将插入一个更大的图像之上。较大的图像是纯黑色,较小的图像是纯白色。在我插入之前,我想通过在较小的图像上设置 alpha 值来将较小的图像混合到较大的图像中,以在它周围创建一个透明的“边框”,使其“淡入”到较大的图像中。做得正确,我应该有一个从黑色到白色的平滑渐变,除了角落和内边缘外,我在任何地方都这样做。

在靠近图像中心的渐变边框边缘,该值将是 255(不透明)。当边界接近外边缘时,alpha 值接近 0。在图像的垂直和水平边界相交的角落,你最终会得到一条对角线。我想消除那条线并平稳过渡。

我需要的是一种算法,该算法确定水平和垂直边缘相遇时在图像角落重叠的每个像素的 alpha 值(0 - 255)。

4

2 回答 2

2

大概你正在将它们重叠的两个渐变相乘,对吧?

不知道标准算法。但是,如果您使用符号形状的渐变而不是线性渐变,那应该消除两者重叠的可见边缘。

一个简单的 sigmoid 函数是 smoothstep(t) = t t (3 - 2*t) 其中 0 <= t <= 1

于 2008-09-20T01:15:48.237 回答
0

如果您不需要调整大小,则可以使用简单的 alpha 贴图。

然而,我曾经使用过一个简单的高斯渐变,在我希望它成为最后一个完全不透明像素的位置的平均值。如果这是有道理的。

于 2008-09-20T00:57:39.917 回答