在图像中混合渐变填充角的算法
-
01-07-2019 - |
题
我需要在图像周围放置一个alpha混合渐变边框。我的问题是混合角落,使它们在水平和垂直渐变相遇的地方是平滑的。我相信有一种标准算法可以解决这个问题。我想我甚至多年前在学校遇到过它。但是我在几次网络搜索中找不到任何引用都没有成功。
(我在角落里实施了一个径向填充图案,但转换仍然不够平滑。)
我的问题:
-
如果有标准算法 这个问题,名称是什么 它,甚至更好,它是怎么回事 实施
-
放弃任何标准算法, 什么是确定所需像素的最佳方法 产生平滑梯度的价值 在角落里? (顺利 从垂直过渡 渐变到水平 梯度。)
醇>
编辑:想象一下,我有一个图像,我将插入一个更大的图像。较大的图像为纯黑色,较小的图像为纯白色。在插入之前,我想通过在较小的图像上设置alpha值来将较小的图像混合到较大的图像中,以创建透明的<!> quot; border <!> quot;围绕它,所以它<!>“;淡化<!>”;进入更大的图像。做得对,我应该有一个从黑到白的平滑渐变,除了角落和内边缘,我到处都是。
在靠近图像中心的渐变边框的边缘,值为255(不透明)。当边界接近外边缘时,alpha值接近0.在图像的角落中,vert <!> amp;水平边界相遇,你最终得到的是对角线。我想消除那条线并顺利过渡。
我需要的是一种算法,用于确定每个像素的alpha值(0 - 255),当水平和垂直边缘相交时,这些像素在图像的一角重叠。
解决方案
据推测,你将它们重叠的两个渐变相乘,对吧?
Dunno关于标准算法。但是如果你使用一个符号形状的渐变而不是一个线性渐变,那么应该消除两个重叠的可见边缘。
一个简单的sigmoid函数是smoothstep(t)= t t (3 - 2 * t)其中0 <!> lt; = t <!> lt; = 1
其他提示
如果您不需要它可以调整大小,那么您可以使用简单的alpha贴图。
然而,我曾经使用过一个简单的高斯渐变,其中的平均值位于我希望它成为最后一个完全不透明像素的位置。如果这是有道理的。