通过 OpenCV 和 C++ 提高书脊的霍夫线精度/分割

问题描述 投票:0回答:2

我正在尝试根据书脊进行分割。我已经遇到问题有一段时间了。下面的两个图像是使用霍夫线分割不成功的示例。我试图在所有书籍之间划清界限。

我也尝试过HoughLineP,它实际上呈现出更糟糕的结果。我尝试调整 HoughLine 和 HoughLineP 的所有参数。但我似乎无法提高检测率。甚至恶化错误检测。

enter image description here enter image description here

我想问是否有人有任何想法如何分割书脊?我尝试过预处理方法,但它将相同颜色的书脊合并在一起,我想尝试在书中间寻找黑线,因为它往往会稍微暗一些,但是如果你看书Seth Godin 和尖端广告,我看不出它们之间有任何差距。

矩形检测也不会很好地工作,因为有些书脊有两种不同的颜色,形成自己的小矩形,例如最前沿的广告书。我也尝试过寻找轮廓,但效果也不佳。

我想做的最后一个程序是计算有多少本书。但要做到这一点,首先我需要一个干净且成功的分割。

有人有其他方法我可以尝试吗?

c++ opencv image-processing image-segmentation
2个回答
1
投票

如果您可以假设您的脊柱将始终在图像中垂直对齐,则使用仅检测垂直线的边缘检测过滤器是有意义的。这将减少脊柱本身细节(标题等)的一些噪音,并使霍夫变换有更大的成功机会。

可以使用这样的卷积滤波器:

-1 0 1
-1 0 1
-1 0 1

1
投票

务必将检测到的边缘取出并重复边缘检测。 您还可以检查峰的相对强度,并仅在更难以挑选时重复。

最近我一直在以非线性方式进行边缘检测,通过查找所有八个方向上的梯度并将其中的最大值作为每个像素的输出。然后,当它是彩色图片时,对每种颜色重复此操作。这在 Matlab 中很容易,但我不熟悉 Visual Studio。

© www.soinside.com 2019 - 2024. All rights reserved.