Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用OpenCV从侧面识别和计数图书_Opencv_Image Processing_Computer Vision - Fatal编程技术网

利用OpenCV从侧面识别和计数图书

利用OpenCV从侧面识别和计数图书,opencv,image-processing,computer-vision,Opencv,Image Processing,Computer Vision,只是希望收到一些关于我能解决这个问题的想法 为了获得更清晰的图像,以下是我们正在查看的一些图像的示例: 我试过对它进行阈值化处理,比如大津、blobbing等等。但是,我仍然无法分割出书籍并正确地计算它们。精装书当然很容易,因为封面清楚地把书分开,但说到软皮书,我无法成功地数清书的数量 有人对我能做什么有什么建议吗?任何帮助都将不胜感激。谢谢 我运行了一个sobel边缘检测器,并使用Hough变换检测最后一张图像上的线条,它似乎对我来说工作正常。然后可以链接sobel边缘检测器输出上的边缘,

只是希望收到一些关于我能解决这个问题的想法

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

我试过对它进行阈值化处理,比如大津、blobbing等等。但是,我仍然无法分割出书籍并正确地计算它们。精装书当然很容易,因为封面清楚地把书分开,但说到软皮书,我无法成功地数清书的数量


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

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

通过将图像转换为二值图像,可以进一步缩小感兴趣的区域。所有这些操作符的输出都可以在下图中看到(我无法上传图像,所以不得不在这里托管它)

有关如何进行边缘、直线和角点检测的更多有用示例,请参阅


希望这能有所帮助。

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

我认为@audiohead的建议是好的,但在应用霍夫变换时应小心对于带有图书馆图章的图像,因为它可能会将其与另一本书混淆(您可以看到,这些字母形成了一些断线,将由
sobel
检测到)

首先考虑应用一种边缘保持平滑算法,例如
双边滤波器
。正确调整(内核设置)后,可以避免这些问题

另一种解决方案可能有效(但可能很慢)

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

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

b) 当有
未访问的
像素时:选择下一个
未访问的
像素并应用区域增长算法,同时用唯一的数字标记其像素。在此阶段,您需要分析该区域正在形成的几何形状。检测书籍的一个好标准是,该区域正在创建某种形式的矩形,其中宽度>>高度。这将检测一本书并将其所有像素标记为唯一的数字


一旦不再有未访问的像素,唯一数字的数量就是图像上每个像素所拥有的书籍的数量,你现在要看的是哪本书。

有更复杂的方法,在轮廓检测和分割方面更好,你可以在这里看一看,但是速度很慢,


一旦你得到了超等高线图,你就可以对它们进行一些计算来计算书的数量

我会尝试一种完全不同的方法;对于平装书,封面是中暗线,而其余的(假设为白页)则是相当白色的“花”,所以我会尝试加厚黑色边缘,使其易于检测,这样的边缘就类似于你所说的精装书


我会尝试一些类似侵蚀的方法来加厚边缘。这将是一个很好的、快速的操作。

感谢您的建议,我在发布此问题之前已经尝试过Hough Transform来检测线条,尽管这并不理想,因为当书籍的侧面有文字时,例如,第一幅图像,会在文字上方检测线条。虽然更改参数确实有助于解决这一问题,但它会在第三个图像中导致问题,因为在该图像中未检测到中间的书本。现在,我正在寻找一种新的方法或方法来解决使用hough变换时的问题。有什么想法吗?但无论如何,还是要投+1票(:谢谢。是的,我现在希望以这种方式保存这些书,我已经做了书脊,目前正在尝试不同的书籍布局。是的。同意,在发布这些问题之前,我实际上探索了audiohead的推荐,除此之外,我还尝试了很多方法。我没有像你建议的那样使用双边方式,而是在尝试HoughLine变换时使用了pyrmeanshiftfiltering,但新问题来自tat:/(精装书)我喜欢你的像素标记策略/区域增长方法,如果我将其与其他一些方法合并,听起来会很有效。如果成功,让我尝试并与你联系。不过,给一两天时间)非常感谢你的建议。(:如承诺的,这是我的更新:解决方案不够健壮,尤其是对于堆叠在一起的两本软封面书籍。这是因为在我尝试的一些图像中,分隔这两本书的线不够清晰。但偶尔会起作用。我想我试着看看,在尝试您的区域时,是否可以克服我面临的问题谢谢你的反馈。在你的区域增长方法中,你的停止标准是什么?你是基于起始像素还是基于发现像素的邻域来制定停止标准的?我是基于发现像素的邻域来使用的。