0

所以我正在研究一个执行模糊的过滤器。

当图像具有 Alpha 通道时,它会不正确地模糊。这是因为它与位于 alpha=0 部分的彩色像素模糊。

我创建了一个示例来说明。在左上角的图像中,我们有原始图像。它有一个 alpha 通道,但我禁用了它。

在右上角的图像中,我使用 Alpha 通道导入它。它将 Alpha 通道部分中的像素显示为黑色。

在左下角的图像中,我执行了模糊算法。您可以看到边缘有一个明亮的光晕,因为它们在第一张图像中显示的浅色背景像素上变得模糊,即使 alpha 通道在那里。

在右下角的图像中,我将它与背景合成,以便您可以看到它合成不正确。

模糊光环

我读过这可能是一个预乘问题。我已将位于 alpha=0 部分的 RGB 像素预乘以黑色,但它仍然不正确。当我合成那个版本时,你可以看到它产生了一个暗光晕而不是一个明亮的光晕。

似乎我需要知道目标图像的 RGB 值,但这不可能知道,因为用户会确定这一点。

那么我做错了什么?如何调整我的算法,使其正确模糊边缘而不是背景更亮的像素,从而产生明亮的光晕?

我很感激这方面的任何帮助,因为我真的被困住了!

4

1 回答 1

0

模糊通过对目标像素的某个邻域中的像素进行平均来工作。当您到达前景对象的边界时,除了从背景中获取像素外,该算法几乎没有其他选择。

如果您不想与背景像素混合,则必须修改模糊算法,使其仅使用前景像素,即为任何背景像素分配零权重。

无论如何,这样做,您会稍微降低边缘的模糊量。没有完美的解决方案。

于 2019-10-19T15:53:24.477 回答