相关疑难解决方法(0)

如何在图像卷积过程中使用预乘以解决alpha出血问题?

我试图将一个框模糊应用于透明图像,并且我在边缘周围得到一个"暗晕".

Jerry Huxtable 简要提到了这个问题,并且展示了问题的一个非常好的演示:

在此输入图像描述

但是,对于我的生活,我无法理解" 预乘alpha "是如何解决这个问题的.现在举一个非常简单的例子.我有一个3x3图像,包含一个红色和一个绿色像素:

在此输入图像描述

实际上剩下的像素是透明的:

在此输入图像描述

现在我们将对图像应用3x3 Box Blur.为简单起见,我们只计算中心像素的新值.盒子模糊的工作方式是,由于我们有一个9个位置的正方形(3x3,称为内核),我们占用内核中每个像素的1/9,并将其加起来:

在此输入图像描述

所以

finalRed =   1/9 * red1 + 1/9 * red2 + 1/9 * red3+ ... + 1/9 * red9
finalGreen = 1/9*green1 + 1/9*green2 + 1/9*green3+ ... + 1/9*green9
finalBlue =  1/9* blue1 + 1/9* blue2 + 1/9* blue3+ ... + 1/9* blue9
finalAlpha = 1/9*alpha1 + 1/9*alpha2 + 1/9*alpha3+ ... + 1/9*alpha9
Run Code Online (Sandbox Code Playgroud)

在这个非常简单的例子中,计算变得非常简单:

finalRed =   1/9 * 255
finalGreen = 1/9 * 255
finalBlue =  0
finalAlpha …
Run Code Online (Sandbox Code Playgroud)

alphablending image-processing convolution premultiplied-alpha

13
推荐指数
1
解决办法
2856
查看次数