繁体   English   中英

在 opencv [python] 中的轮廓内插值颜色

[英]Interpolating colors inside a contour in opencv [python]

我正在处理一些包含表格的图像,并且上面有 1 或 2 个贴纸。 我想要做的是摆脱那些贴纸。 使用颜色阈值(在 HSV 中)和轮廓检测,我能够为这些贴纸创建一个蒙版。 现在我希望这些贴纸从那里“溶解”出来(我不知道正确的术语)。 同时保持这些表格线完好无损,以便我的线检测工作良好(我必须在此清洁后进行)。
我试过 OpenCV 的inpaint 但这在这里效果不佳,因为贴纸尺寸足够大。

看这个例子:

  1. 粘贴贴纸的整个图像的一部分(内部内容由我审查)。 它可以在水平线上,或垂直线上,或两者兼而有之。 基本上,它粘在桌子上的某个地方(也许还有一些文字,但无论如何都无法恢复)。 背景不需要发白,可以是粉红色/橙色/其他颜色。 在此处输入图片说明
  2. 这是阈值图像,创建贴纸的蒙版。 如果需要,我们还可以获得它的轮廓。 在此处输入图片说明
  3. 这是半径为 3 的cv.inpaint()的结果。 在此处输入图片说明 我想要的是重建这些线条。

我的解决方案

现在我的方法是在贴纸轮廓之间插入颜色,以填充它。 对于轮廓内的每个像素,我将进行垂直插值和水平插值(边界颜色的插值),然后用两者的平均值填充该像素。 我希望这至少能保留我的垂直和水平线。 (如果它在桌子的角落可能会失败)。 这也将保持背景平滑,我的背景可以有一些不同的颜色。

现在我的问题是如何实现这一点。 我拥有的是使用 OpenCV 的get_contours()找到的轮廓。 我不知道如何在其边界上获取颜色以及如何插入中间颜色。

任何帮助表示赞赏。 提前致谢。

由于保密,我不能分享整个图像。

编辑

我尝试了接缝雕刻方法(实现)。 结果如下:

  1. 垂直接缝
    在此处输入图片说明
  2. 横缝
    在此处输入图片说明

一旦我知道要使用哪个,它就会很好地工作。 而且我不确定当我们同时拥有水平线和垂直线时效果如何。

附注。 不要建议需要找到线路然后工作的解决方案。 因为我的整个形象会有很多线条。

您可以制作合成示例图像。 为了更好地解释您的问题。 据我所知,您可以使用泊松图像编辑 只需取一张清晰的纸图像并使用泊松混合和您提取的蒙版粘贴它。

检查此 github repo 作为示例以获取代码示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM