消除手绘噪音的简单方法

信息处理 图像处理 图片 过滤 二维
2022-01-31 15:25:31

我想获取用户的手绘输入,并过滤掉“噪音”,也就是小草图或斑点,用户可能会搞砸并不小心将手接触到绘图设备或类似的东西。

我正在使用 Imagick,这是一个 PHP 包装器,它包装了一个图像处理库,它可以完成除了实际的高级 blob 检测之外的所有操作。所以我可以自由地使用卷积、腐蚀、膨胀和许多其他图像处理工具。我无法在高级 PHP 代码中编写 blob 检测,因为它太慢了。在我使用 ImageMagick 的 API 编写 C 代码并将其包装在 PHP 中之前,我想知道是否有某种“技巧”可以实现我的目标。

例如,我最初的想法是对图像进行腐蚀(在正常情况下,当我想到从图像中去除噪声时,我认为先腐蚀然后膨胀)。但是由于图像中的所有线条都只有几个像素宽,所以一切都会消失。然后我正在考虑某种模糊,因此较长的线条最终会具有较高的强度,然后我可以将较低的线条剔除。但同样,在线条的背景下,我不确定它的效果如何。

我会附上一张增加“斑点”的图片。我会将前 4 个左侧的斑点视为要删除的斑点,但随后保留第 5 个、线条和框。

留下 4 或 5 个污迹不好,其余的都很好。

2个回答

您可以在图像上使用打开http://php.net/manual/en/imagick.morphology.php的内核足够大以侵蚀小物体

为什么不只计算每个连接结构中的像素数(通过适当的连接定义),并为像素数设置阈值?如果它例如低于 10 px,它可能会被丢弃。

只有内在的缺点:点,例如在字母 i 上或作为标点符号也可以被忽略。但这取决于您的应用程序。