从透明imag中去除黑边伪影

2024-07-03 07:23:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Example image

我在找一种自动清理边界的方法。我试着简单地屏蔽掉某个RGB值下的像素,但是图像本身也可以包含黑色像素,然后这些像素就会被过滤掉。我用的是Python3和opencv3/PIL。在

我的问题是:如何在保留不属于边缘的黑色像素的同时去除黑色边缘?

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

  • 暗于阈值
  • 比任何相邻的不透明像素至少暗阈值

Tags: 方法图像编辑pilpng阈值rgb像素
2条回答

可以在ImageMagick中对alpha通道的边进行抗锯齿处理,如下所示:

输入:

enter image description here

convert image.png -channel a -blur 0x2 -level 50x100% +channel result.png

enter image description here

如果黑色边框较细,请使用小于2的值调整2;如果黑色边框较宽,则使用大于2的值调整2。在

尝试使用alpha通道并将其侵蚀几个像素。我用ImageMagick来说明这项技术,因为这更简单,但是使用OpenCV可以做同样的事情:

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

enter image description here

相关问题 更多 >