混合图像中的渐变填充角的算法

时间:2020-03-06 14:28:24  来源:igfitidea点击:

我需要在图像周围放置一个alpha混合渐变边框。我的问题是混合角,使它们在水平和垂直渐变相交处变得平滑。我相信有一个解决该问题的标准算法。我想我甚至在多年前就在学校遇到过。但是,我在几次网络搜索中都找不到任何引用。

(我已经在拐角处实现了径向填充模式,但是过渡仍然不够平滑。)

我的问题:

  • 如果有用于此问题的标准算法,它的名称是什么,甚至更好的是,它是如何实现的?
  • 放弃任何标准算法,确定所需像素值以在拐角处产生平滑渐变的最佳方法是什么? (从垂直渐变平滑过渡到水平渐变。)

编辑:因此,想象一下我有一张图像,我将在一个较大的图像上插入。较大的图像为纯黑色,较小的图像为纯白色。在插入它之前,我想通过在较小图像上设置alpha值以将较小的图像混合到较大的图像中,从而在其周围创建透明的"边框",以便将其"淡入"到较大的图像中。正确完成后,我应该具有从黑色到白色的平滑渐变,并且除拐角处和内部边缘以外,我在任何地方都可以做。

在靠近图像中心的渐变边框的边缘,该值为255(不透明)。当边界接近外部边缘时,alpha值接近0。在图像的vert和horiz边界相交的角中,最终得到的是对角线。我想消除这条线,并进行平稳过渡。

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

解决方案

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

但是,我曾经使用过一个简单的高斯淡变,其均值位于我希望它成为最后一个完全不透明的像素的位置。如果那是有道理的。

大概是我们将两个重叠的梯度相乘,对不对?

关于标准算法的Dunno。但是,如果我们使用符号形渐变而不是线性渐变,则应该消除两个重叠的可见边缘。

一个简单的S型函数是smoothstep(t)= tt(3 2 * t),其中0 <= t <= 1