Algorithm 最佳拟合矩形的算法

Algorithm 最佳拟合矩形的算法,algorithm,image-processing,geometry,coordinates,best-fit,Algorithm,Image Processing,Geometry,Coordinates,Best Fit,我正在写一个应用程序,它从图片中测量盒子。操作后的示例图片如下所示: 我的应用程序已识别出方框中的像素,并将颜色更改为红色。您可以看到图像非常嘈杂,因此在矩形上创建了非常粗糙的边缘 我一直在读关于边缘/角点检测算法的书,但在我研究其中一种算法之前,我想退一步,看看这样一个复杂的算法是否真的有必要。考虑到我有一些简化事情的条件,似乎有一种更简单的方法: 该图像仅包含一个矩形,而不包含任何其他形状 每个图像只有一个矩形 我不需要精确,尽管我希望尽可能达到最佳匹配 我的第一个简单算法是找到最上面

我正在写一个应用程序,它从图片中测量盒子。操作后的示例图片如下所示:

我的应用程序已识别出方框中的像素,并将颜色更改为红色。您可以看到图像非常嘈杂,因此在矩形上创建了非常粗糙的边缘

我一直在读关于边缘/角点检测算法的书,但在我研究其中一种算法之前,我想退一步,看看这样一个复杂的算法是否真的有必要。考虑到我有一些简化事情的条件,似乎有一种更简单的方法:

  • 该图像仅包含一个矩形,而不包含任何其他形状
  • 每个图像只有一个矩形
  • 我不需要精确,尽管我希望尽可能达到最佳匹配
我的第一个简单算法是找到最上面、最下面、最左边和最右边的点。那是四个角。这可以正常工作,但对于像这样嘈杂的边缘来说并不是超精确的。很容易将球视为比角球更好的一点


有人能给我指出一个算法吗?

您已经确定了您感兴趣的图像区域(红色区域)

  • 使用相同的逻辑,您应该能够对图像进行二值化。假设红色区域产生白色像素,其余为黑色
  • 然后使用轮廓跟踪算法跟踪白色区域的外部轮廓
  • 现在您有了一个点集,该点集表示区域的外部轮廓
  • 查找限制此点集的最小面积矩形

您可以使用OpenCV库轻松地执行此操作。如果您计划使用OpenCV,请查看threshold、findContours和Minarealect。希望这些信息有帮助。

谢谢。我避免使用OpenCV,并编写了自己的代码,但决定只将内容转换为OpenCV,因为按照您的建议更容易实现。对于未来的读者,我也在findContours和MinareRect之间使用了approxPolyDP,因为如果没有它,MinareRect会使矩形有一点过大,以解释边缘上的噪声,但是使用approxPolyDP它会在一定程度上补偿噪声边缘。