繁体   English   中英

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

[英]Algorithm to blend gradient filled corners in image

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

(我在角落里实现了一个径向填充图案,但转换仍然不够平滑。)

我的问题

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

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

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

在靠近图像中心的渐变边界的边缘处,值将为255(不透明)。 当边界接近外边缘时,alpha值接近0.在图像的角落与vert&horiz边界相遇时,最终得到的是对角线。 我想消除那条线并顺利过渡。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM