按背景颜色分割图像 – OpenCV Android

按背景颜色分割图像 – OpenCV Android,第1张

概述我正在尝试细分名片并将其按背景颜色分割,以将它们视为不同的感兴趣区域. 例如这种卡片: 应该能够被分成两个图像,因为有2种背景颜色.有没有关于如何解决这个问题的建议?我试过做一些轮廓分析并没有太成功. 其他示例卡: 这张卡应该提供3个分段,因为有三个部分,即使它只有2种颜色(虽然2种颜色可以). 上面的卡应该只提供一个分段,因为它只是一种背景颜色. 我还没想到渐变背景. 这取决于其他卡的外观,但如 我正在尝试细分名片并将其按背景颜色分割,以将它们视为不同的感兴趣区域.

例如这种卡片:

应该能够被分成两个图像,因为有2种背景颜色.有没有关于如何解决这个问题的建议?我试过做一些轮廓分析并没有太成功.

其他示例卡:

这张卡应该提供3个分段,因为有三个部分,即使它只有2种颜色(虽然2种颜色可以).

上面的卡应该只提供一个分段,因为它只是一种背景颜色.

我还没想到渐变背景.

解决方法 这取决于其他卡的外观,但如果图像都具有很高的质量,那就不应该太难了.

在您发布的示例中,您可以只收集边框像素的颜色(大多数左列,最右列,第一行,最后一行)并将您找到的内容视为可能的背景颜色.也许检查是否有足够多的像素具有大致相同的颜色.你需要某种距离测量.一个简单的解决方案是在RGB颜色空间中使用欧氏距离.

更通用的解决方案是在整个图像的颜色直方图中找到聚类,并将具有超过总像素量的x%的每种颜色(再次具有公差)视为背景颜色.但是,您定义为背景取决于您想要实现的目标以及图像的外观.

如果您需要进一步的建议,您可以发布更多图像,并标记您想要检测的图像的哪些部分作为背景颜色,哪些不是.

编辑:您的两个新图像也显示相同的模式.背景颜色占据了图像的很大一部分,没有噪声,也没有颜色渐变.所以一个简单的方法可能如下所示:

>计算图像的直方图:参见http://docs.opencv.org/modules/imgproc/doc/histograms.html#calchist和http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_calculation/histogram_calculation.html
>找到直方图中最突出的颜色.如果您不想自己迭代Mat,可以使用minMaxLoc(http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#minmaxloc),如calchist文档中所示(见上文),如果颜色占用了像素数的足够百分比,则将其保存并设置相应的bin.直方图为零.重复,直到不再达到您的百分比.然后,您将保存一份最突出的颜色列表,即背景颜色.
>为每种背景颜色阈值图像.见:http://docs.opencv.org/doc/tutorials/imgproc/threshold/threshold.html
>在生成的螺纹保持图像上找到每种背景颜色的相应区域.见:http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/find_contours/find_contours.html

如果您的示例无法使用此方法,请发布它们.

总结

以上是内存溢出为你收集整理的按背景颜色分割图像 – OpenCV Android全部内容,希望文章能够帮你解决按背景颜色分割图像 – OpenCV Android所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1149286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存