2

我正在尝试对水平和垂直堆叠的书脊进行分割。当图片太大时,我遇到了一个问题。 在此处输入图像描述

在整个窗口中只能看到部分图像,这意味着它不会处理它应该处理的原始图像:

在此处输入图像描述

它处理的图像 在此处输入图像描述

它应该处理的图像 在此处输入图像描述

我什至无法查看应该处理的整个图像。因此,我尝试使用=> 来最小化这张图片的窗口

cv::resize(image, image, cv::Size2i(image.cols/6, image.rows/6) ); // 调整为图片的 1/6

这导致另一个问题,当图片很小时,它变得太小,甚至无法检测到直线。

因此,我尝试了 => cv::resize(image, image, cv::Size2i(750, 400) );

这导致了另一个问题。虽然上面的图像显示整个窗口,但对于较小的图片,我的水平线检测变得更加不稳定。

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

有人知道如何解决这个尺寸问题吗?还有如何改进我现在非常不稳定的霍夫线检测来分离书籍?我想在一堆书之间画一条线。

希望很快能收到你们的来信。谢谢!!!

4

2 回答 2

1

看起来您在执行霍夫变换之前正在调整图像大小,我想您之后想要做什么。这使您可以在图片中获得足够的分辨率以检测到合适的线条,并且您仍然可以在显示器上查看它。

其次,您想改进检测书籍之间的分离。我的建议是对图像进行一些预处理。有很多方法可以做到这一点。例如,通过颜色分离图片的平均移位分割就是一种。

过滤变换的结果是另一种方法。只有保持穿过黑暗区域的线条 - 因为书之间更有可能是黑暗的 - 是一种这样的方式。还有很多方法。

另外不要忘记调整 Hough 变换的参数以查看最适合您的测试集的参数。它可能会揭示一些有趣的结果!

祝你好运!

于 2013-10-04T08:00:52.787 回答
1

IMO 首先你必须改进边缘检测输出。它由非常少的边缘组成。你可以使用cvCannycvSobel来做同样的事情。也可以使用概率霍夫线,这将提供更好的结果。你可以调整cvHoughLines的参数,例如阈值, minLinLength, maxLineGap 如图中的线太近了。请在此处查看详细信息:

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html

于 2013-10-04T10:07:40.370 回答