我想在我的二进制图像中获得轮廓直线度的度量(相对更快)。图像如下所示:
现在,红色框中的轮廓是我希望最好删除的轮廓。因为他们不是直的。这些是我尝试过的事情。我现在在 MATLAB 中实现。
1.收集每个轮廓的行列坐标,然后求导。对于直线对象(例如矩形),导数大多较低,带有一些尖峰(沿着矩形的角)。
问题:收集的坐标不是按顺序排列的,即如果我们将轮廓成像为路径,将按照该顺序遍历轮廓。因此,导数有时会给出高得离谱的值。另外,轮廓不是绝对笔直的,它是边缘检测算法的输出,所以你可以想象可能会有一些不连续(见底部的矩形,人眼可以理解它是一个矩形,虽然它不是绝对笔直的)。
2.试图考虑polyfit,但又出现了这个轮廓问题。由于它是一个矩形,我不知道如何将 polyfit 应用于该点集。
另外,我想删除垂直/水平分布的轮廓。基本上这是一种车道检测算法。所以车道不能绝对垂直/水平。
有任何想法吗?