非常精确的线检测,openCV Java

非常精确的线检测,openCV Java,java,opencv,hough-transform,opencv3.1,canny-operator,Java,Opencv,Hough Transform,Opencv3.1,Canny Operator,首先,我将在现实世界的应用程序中解释这个问题;我有一个指向黑暗表面的相机。一个送纸器(只是一个简单的机器,当控制计算机告诉它时,它会吐出页面)将纸张送入相机正在观察的区域 我将使用openCV处理图像,并确定进纸器是否正确进纸 这意味着我不仅要确定是否存在一个页面,还要确定是否存在多个页面。有时,多个页面被输入是因为它们粘在一起,在这种情况下,这些页面非常接近完美地相互对齐,除非你仔细观察,否则它们在视觉上看起来就像是一个页面 我遇到的问题是,Canny边缘检测与Hough变换相结合,无法提供所

首先,我将在现实世界的应用程序中解释这个问题;我有一个指向黑暗表面的相机。一个送纸器(只是一个简单的机器,当控制计算机告诉它时,它会吐出页面)将纸张送入相机正在观察的区域

我将使用openCV处理图像,并确定进纸器是否正确进纸

这意味着我不仅要确定是否存在一个页面,还要确定是否存在多个页面。有时,多个页面被输入是因为它们粘在一起,在这种情况下,这些页面非常接近完美地相互对齐,除非你仔细观察,否则它们在视觉上看起来就像是一个页面

我遇到的问题是,Canny边缘检测与Hough变换相结合,无法提供所需的精度。使用Canny在图像中查找纸张的典型示例返回的结果是,每个页面边缘有许多行(5-15)。使用“查找轮廓”确定这是一个矩形

这些典型的示例没有帮助,因为我需要能够检测到页面边缘附近有另一行

我一直在玩弄hough变换的阈值,以及我在Canny之前应用了多少模糊,并且得到了相当可靠的结果,但问题是我认为灵敏度现在太低了,并且这个系统不会检测到上面示例中的任何页面(在每个页面之上)

示例:

上图有两个可见页面,其中一个刚从进纸器中取出。页面上有文本。我需要能够识别页面的角度,事实上只有一个页面


我遇到的问题是,我需要足够灵敏的线条检测,以便能够判断是否有两个页面粘在一起,但我也需要不检测页面上文本的线条。

我建议您不要查找一张纸覆盖另一张纸的模糊线条,而是查找此白色区域的整体形状。如果你知道所有这些页面都是A4大小的,你可以找到白色区域的矩形,检查角度是否正确,边的比例是否是2的平方根。如果这两张纸完全对齐,你无论如何也检测不到它,除非你以某种方式测量纸的厚度


有一个角点检测过滤器,可以帮助您找到矩形ABCD的角点。然后检查向量AB是否垂直于BC和AD,依此类推。此外,如果在紧凑的白色区域内检测到超过4个具有合理阈值的角-这是一条“有些事情不正常”的消息。

我建议您不要寻找一张纸覆盖另一张纸的模糊线条,而是寻找该白色区域的整体形状。如果你知道所有这些页面都是A4大小的,你可以找到白色区域的矩形,检查角度是否正确,边的比例是否是2的平方根。如果这两张纸是完全的被盖住的,你无论如何也不会发现,除非你以某种方式测量纸张的厚度


有一个角点检测过滤器,可以帮助您找到矩形ABCD的角点。然后检查向量AB是否垂直于BC和AD,依此类推。此外,如果在紧凑的白色区域内检测到超过4个具有合理阈值的角点,则显示消息“有些事情不正常。”

请显示一些图像请显示一些图像