4

我想在 Java 中检测图像中的四边形。我可以使用 OpenCV 中的 HoughLinesP 方法(使用 javaCV 进行 opencv java 绑定)来检测线段。但我不知道如何检测四边形 - 是否有另一种方法或某种使用霍夫线的方法?此外,一旦检测到四边形的角,我希望它像此类一样返回一个矩形 - http://www.aforgenet.com/framework/docs/html/7039a71d-a87d-47ef-7907-ad873118e374.htm - openCV中是否有等效的库?

4

3 回答 3

4

您的输入图像如何?如果您使用 Hough 变换检测到大量线段,您可以尝试使用RANSAC生成许多四边形形状假设,找到一种方法来评估它们的适应度并返回最佳假设。

可以这样产生一个假设:

  • 从检测到的线段集中选择四个随机线段
  • 通过查找所选线段所在的线的交点来找到四个角
  • 评价由这四个点定义的四边形的适应度

适合度可能是假设四边形的面积(请参阅用于计算凸四边形面积的Bretschneider 公式)、四边形边缘与检测集中的其他线段的距离,或者更适合您的应用的东西。

这只是一个想法,我还没有尝试过使用这种方法(但我正计划实现类似的东西)。让我知道您是否认为这可行,或者为什么不可行!:)

于 2012-10-27T11:46:59.937 回答
2

你的算法可能是这样的

  1. 处理图像以找到边缘(Canny 过滤器)
  2. 应用霍夫变换来查找线
  3. 检测以 90 度角(近似)相交的线对
于 2012-10-24T11:48:03.153 回答
1

如果您使用 OpenCV 库,那么您绝对应该尝试使用FindChessboardCorners功能。还有一个很好的教程

于 2012-10-24T11:46:00.517 回答