从透明图像中删除黑边伪影

Nee*_*Nee 5 python opencv image-processing python-3.x pillow

我有一组透明的PNG图像,边缘有黑色瑕疵,如下所示:

示例图片

我正在寻找一种自动清理边框的方法.我尝试简单地屏蔽某个RGB值下的像素,但图像本身也可以包含黑色像素,然后将其过滤掉.我正在使用Python3和opencv3/PIL.

我的问题是:我如何摆脱黑边,同时保留不属于边缘的黑色像素?

编辑:正如usr2564301指出的那样,很少(如果有的话)边缘像素是纯黑色.我仍然需要删除它们,所以我想使用一些阈值并删除与透明像素相邻的像素,并且是:

  • 阈值更暗,
  • 比任何相邻的非透明像素更暗至少阈值.

Mar*_*ell 2

尝试获取 Alpha 通道并将其侵蚀几个像素。我使用ImageMagick来说明该技术,因为这更容易,但您可以使用OpenCV做同样的事情:

convert pinkboythingwithcathead.png \( +clone -alpha extract -morphology erode disk:2 \) -compose copy-alpha -composite result.png
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述