2

我正在尝试使用均值偏移分割来计算图像中发现的对象。我一直在使用[pyrMeanShiftFiltering][1]OpenCV。使用以下代码,我能够生成已分割的图像。但是,我不知道如何实际计算该图像中“项目”的数量。

只需pyrMeanShiftFiltering( img, res, spatialRad, colorRad, maxPyrLevel );在此图像上运行
未分段的书籍

生成图像 在此处输入图像描述

在这个例子中,它看起来并没有太大的不同,尽管有些图像的分割在颜色等方面产生了巨大的差异。但是,对于大多数测试用例,我将假设颜色不会非常明显,并且边缘不会明显(如给出的示例中所示)足以在图像本身上使用边缘检测。

基于此,我该如何查找在该图像中找到的对象数量?我正在寻找一些代码,尽管任何朝着正确方向的戳都会有所帮助。

4

1 回答 1

2

如果对象包含不同的颜色(并且这些颜色是独特的),最简单的方法是计算有多少簇(删除白色的簇,因为页面是白色/黄色的)。

在您展示的图像上,您也可以使用角检测器,因为您有非常独特的角,然后查看周围并按颜色过滤这些角(周围颜色必须包含一些颜色和白色(来自页面))然后匹配角位于同一垂直线上,最后数一数。

另一种想法是从页面推断白色/黄色(聚类+直方图过滤)并计算不同的斑点。

也许最好的方法是通过查找封面颜色(蓝色、绿色)和最接近的白色 => 查找 blob 从页面推断白色/黄色。这些斑点可以标记为最接近的封面颜色。然后你有显示页面并根据最接近的封面颜色标记的 blob。这些斑点可能被分成几部分(一本书部分覆盖另一本书),并且两个不同的斑点可能属于同一个对象(一本有多种颜色封面的书),但现在这些斑点必须是矩形的。因此,您可以在该二值化图像中找到线条并尝试将它们与最近的线条连接起来。然后你最终会得到一个匹配一本书的 blob。最后你可以数一数。

于 2013-03-30T20:47:32.363 回答