首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带透明度的高斯模糊

带透明度的高斯模糊
EN

Computer Graphics用户
提问于 2017-08-19 09:31:27
回答 3查看 3.6K关注 0票数 6

我做了一个卷积测试程序来做实验。我已经为模糊创建了一个5x5高斯核。一切看起来都很好,然后我试图模糊一个透明的png和一个白色的圆圈在中间。在模糊的图像上,边缘看起来像从白色到黑色的渐变。这在数学上是正确的,因为透明点被视为黑色的透明像素,因此卷积应该逐渐使边缘附近的颜色更暗。但是,如果我在同一幅图像上做高斯模糊处理,例如在GIMP中,圆圈将是完全白色的,并逐渐增加边缘的透明度。我想得到这个效果。我遗漏了什么?

如果我将透明像素设置为透明白色,它将工作,但只有当模糊的颜色是白色。

这是原图:

如果在默认情况下保留透明像素,则会得到以下结果:

如果我将透明像素设置为#00FFFFFF,我将得到这个(如果模糊的颜色是白色的话,这就是预期的)。

EN

回答 3

Computer Graphics用户

回答已采纳

发布于 2017-08-19 11:55:10

结果,我忘了用透明度来衡量颜色通道的重量,所以我得到了与这里写的相同的问题:模糊透明虫

票数 3
EN

Computer Graphics用户

发布于 2017-08-21 16:27:25

我很抱歉只浏览了你的问题/答案和你给出的链接,但我认为最好是发布需要做些什么才能正确地使用alpha通道对图像进行混合和/或过滤。

首先要注意的是,所有的计算都应该在线性颜色空间中进行,但是PNG和JPEG中的图像数据最有可能是在sRGB中,这是非线性的。在进行任何计算之前,应该将这些数据转换为线性形式。例如,sRGB中的黑色(0,0,0)和白色(255,255,255)的平均值不是(127,127),而是(在我的头顶上)类似于(186,186,186)。过滤图像,特别是那些相邻的,互补的,饱和的颜色(如黄色和蓝色),如果你不考虑伽马,可能看起来很奇怪。

这个理论的第二部分可以追溯到波特和达夫1984年开创性的论文"数字图像合成",其中引入了预乘α的概念。预乘α基本上意味着在计算之前,将RGBs乘以alpha值。

波特达夫的报纸上说..。

有几个理由拒绝这个建议,最严重的是所有组合操作都将涉及到将红色通道中的1乘以alpha通道中的.5,从而在此像素处计算该对象的红色贡献。避免这种乘法的愿望指出了一个更好的解决方案,将预乘值存储在颜色分量中,这样(.5,0,0,.5)将指示一个覆盖半像素的全红色对象。

..。这表明这最初只是为了降低计算成本,但在Jim的文章“合成理论”中,他演示了进行任何筛选或组合操作的正确方法是首先将所有操作转换为预倍数。

一旦你线性化,然后预先乘以你的像素数据,做过滤/混合,最后,撤销预乘和重新应用伽马函数映射回sRGB。

票数 7
EN

Computer Graphics用户

发布于 2017-08-19 11:27:04

你如何加载你的图像?

也许您的图像被加载为RGB而不是RGB-A,这意味着您完全忽略了Alpha通道(透明值)。在这种情况下,透明像素被转换为黑色像素。

如果您使用的是OpenCV库,这篇文章可能会帮助您将图像加载到4通道(4维数组中);然后,您可以将高斯模糊函数应用到每4个通道上,并获得所需的结果。

票数 1
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/5509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档