使用OpenCV从侧面识别和计算书籍

时间:2014-01-31 18:42:03

标签: opencv image-processing computer-vision

希望收到一些关于我可以解决这个问题的想法。

为了更清晰的图片,以下是我们正在查看的一些图片的示例:

enter image description here enter image description here enter image description here

我已经尝试过对它进行阈值处理,比如otsu,blobbing it等等。但是,我仍然无法将这些书分段并正确计算。精装本很容易,因为封面清楚地分开书籍,但是当涉及到软封时,我无法成功计算书籍的数量。

有人对我能做什么有任何建议吗?任何帮助将不胜感激。谢谢。

5 个答案:

答案 0 :(得分:2)

我运行了一个sobel边缘检测器,并使用Hough变换检测最后一个图像上的线条,它似乎对我有效。然后,您可以链接sobel边缘检测器输出上的边缘,然后计算水平线的数量。或者,您可以对使用Hough检测到的线的输出执行相同的操作。

您可以通过将图像转换为二进制图像来进一步缩小感兴趣的区域。所有这些运算符的输出可以在下图中看到(我无法上传图像,因此必须在此处托管它)http://www.pictureshoster.com/files/v34h8hvvv1no4x13ng6c.jpg

有关如何进行边缘,线和角点检测的更多有用示例,请参阅http://www.mathworks.com/help/images/analyzing-images.html#f11-12512

希望这有帮助。

答案 1 :(得分:2)

我认为@ audiohead的推荐是好的,但是对于具有库的标记的图像应用Hough变换时应该小心,因为它可能会将它与另一本书混淆(你可以看到这些字母形成了一些断行,将由sobel)检测到。

首先考虑应用边缘保留平滑算法,例如Bilateral Filter。正确调整(设置内核)后,可以避免出现这些问题。

可能有效的不同解决方案(但可能很慢)

这是一种基于像素标记策略的不同方法。

a)根据一些非常暗的阈值,将所有黑色像素标记为visited

b)虽然有unvisited像素:选择下一个unvisited像素并应用区域增长算法http://en.wikipedia.org/wiki/Region_growing,同时使用唯一编号标记其像素。在此阶段,您需要分析该区域正在形成的几何形状。检测书籍的一个好标准是该区域正在创建某种形式的矩形,其中宽度>>高度。这将检测到一本书并将其所有像素标记为唯一编号。

一旦没有更多未经访问的像素,唯一数字的数量就是您将拥有的图书数量+对于图像上的每个像素,您现在将拥有它所属的图书。

答案 2 :(得分:1)

你必须这样保管书籍吗?如果您可以将书籍更改为面向相机的背面,那么我认为您可以获得有关不同书籍所使用的不同颜色的更多信息。通过霍夫变换或边缘检测的线条将更加突出。

答案 3 :(得分:1)

存在更复杂的方法,这些方法在轮廓检测和分割方面要好得多,你可以在这里查看它们,但它很慢,http://www.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/resources.html

获得超参数等值线图后,您可以对它们进行一些计算以计算书籍数量

答案 4 :(得分:0)

我会尝试一种完全不同的方法;有平装书,封面是中等黑线,而其余的(假设白页)是相当白色和“开花”,所以我试图加厚黑暗的边缘,使它们易于检测,然后这会给边缘类似于使用精装书,你说你已经完成了。

我会尝试像侵蚀这样的东西来增厚边缘。这将是一个很好的,快速的操作。