将矩形拟合到图像中的片段

计算科学 优化 图像处理
2021-12-11 00:14:05

我的任务是将已知大小的旋转矩形放入图像中这

这是一个综合测试用例,在实际应用中,一切都相当模糊。矩形必须尽可能多地覆盖黑色区域,同时尽可能少地覆盖灰色区域,而忽略白色区域。我并不总是看到所有角落,例如,我可能只有矩形的上半部分和更大的白色区域。

到目前为止,我已经实现了一个直接的梯度下降来搜索 3d 空间(x,y,旋转)并优化矩形当前姿势中黑色和灰色像素的差异。这种方法不是很快,所以我想寻求替代方案。

2个回答

使用像BFGS这样的算法,您可能比简单的梯度下降做得更好,它使用梯度的历史以及近似解来尝试和逼近目标函数的 Hessian。在Nocedal 和 Wright中可以找到关于算法如何工作、对大型系统进行修改、在非凸性事件中进行修改等的很好解释BFGS 是更一般的准牛顿方法家族之一。

您的参数之一(方向)不是在向量空间中定义,而是在组中定义;此外,对于某些方向的匹配度相同。因此,由于您要拟合的图像具有离散对称性,即在一个轴上的反射,因此解决方案存在一些退化。所以解决方案可能不像使用 BFGS 代替梯度下降那么简单,但它是一个很好的起点。S1θθ+π

您可以通过采用多尺度方法来加速您的过程,即在粗尺度上执行模板匹配,然后放大和细化参数。当然,级别的数量和步长取决于您的问题,并且可能很难确定。

您可以采取一种更具分析性的方法,首先从图像中提取边缘(我猜 Canny 在这种情况下效果最好),然后使用Hough 变换RANSAC(随机抽样和一致性)方法来提取所有线条。

使用有关矩形颜色的一些假设(黑色或白色前景到灰色背景),您可以判断每条线的哪一侧进入矩形内部。

最后,至少有 2 行将足以限制您的优化问题,以便您无需优化即可解决此问题。

另一种方法可以针对矩形角,即使用哈里斯角检测器,然后根据每个角周围的补丁确定矩形方向。