【发布时间】:2020-10-22 14:38:01
【问题描述】:
我正在处理一些包含表格并且上面有 1 或 2 个贴纸的图像。我想做的是摆脱那些贴纸。使用颜色阈值(在 HSV 中)和轮廓检测,我可以为这些贴纸创建一个蒙版。现在我希望那些贴纸从那里“溶解”出来(我不知道这个的正确术语)。在保持这些表格线完整的同时,使我的线检测工作良好(清洁后我必须这样做)。
我试过 OpenCV 的inpaint。但这在这里效果不佳,因为贴纸尺寸足够大。
看这个例子:
- 整个图像中贴有贴纸的部分(内部内容由我审查)。它可以在水平线或垂直线上,或两者兼而有之。基本上,它粘在桌子上的某个地方(也许也有一些文字,但无论如何都无法恢复)。背景不需要发白,可以是粉红色/橙色/其他颜色。
- 这是经过阈值处理的图像,用于创建贴纸的蒙版。如果需要,我们也可以得到它的轮廓。
- 这是
cv.inpaint()半径为 3 的结果。 我想要的是重建这些线条。
我的解决方案
现在我的方法是在贴纸轮廓之间插入颜色,以填充它。对于轮廓内的每个像素,我将进行垂直插值和水平插值(边界颜色的插值),然后用两者的平均值填充该像素。我希望这至少能保留我的垂直和水平线。 (如果它在桌子的一角,可能会失败)。这也将保持背景平滑,我的背景可以有一些不同的颜色。
现在我的问题是如何实现这一点。我所拥有的是使用 OpenCV 的get_contours() 找到的轮廓。我不知道如何获取其边界上的颜色以及如何插入中间颜色。
感谢任何帮助。提前致谢。
出于保密原因,我无法分享整张图片。
编辑
我尝试了缝雕法(implementation)。结果如下:
一旦我知道要使用哪一个,它就会很好地工作。而且我不确定当我们有水平线和垂直线时它会做得如何。
附言。不要建议需要找到线路然后工作的解决方案。因为我的整个图像中会有很多线条。
【问题讨论】:
-
请张贴输入图像,以便我们看到您在做什么。还将您的代码作为文本发布。请阅读帮助中心 (stackoverflow.com/help) 中的信息指南,特别是“如何提出一个好问题”(stackoverflow.com/help/how-to-ask) 和“如何创建最小的、可重现的示例”( stackoverflow.com/help/minimal-reproducible-example)。
-
@fmw42 好的,先生。我添加了几张图片,希望能更清楚。
-
谢谢。我现在了解您的问题,但没有现成的解决方案。
标签: python opencv image-processing computer-vision