我有一个具有挑战性的问题需要解决。 Figure显示从图像派生的绿线,红线是从另一图像派生的边缘。两张图像都来自同一台相机,因此内在参数相同。仅外部参数不同,即在拍摄第二图像时存在轻微的旋转和平移。从图中可以看出,两组线非常接近。我的任务是找到从第一个图像导出的边缘和从第二个图像导出的边缘之间的对应关系。
通过计算图像1边缘的端点与图像2边缘之间的欧几里德距离,我已经通过一些来源,提到了相应的最近线段。但是,这种方法对于我的情况是不可接受的因为图像1中存在边缘,靠近图像2中不对应的其他边缘,这将导致大量的不匹配。
经过一些研究,很少有人提到 Hausdorff距离。我相信这可以解决我的问题和论文
“Rucklidge,William J.”使用。有效地定位对象 豪斯多夫距离。“国际计算机视觉杂志24.3 (1997):251-270。“
似乎非常有趣。
如果我把它弄好了,那么纸张就会计算出一个函数来计算模型边缘到图像边缘的平移。但是,在MATLAB中实现时,我完全迷失了,从哪里开始。如果我可以被引导到相同算法的伪代码或相同的MATLAB实现,我将非常感激。
另外,我知道
“将Hausdorff距离应用于图块图像分类”link
和
“豪斯多夫回归”
但是,我仍然不确定如何最小化Hausdorff距离。
注1:现在不考虑计算成本,但首选更快的算法
注意2:只要有可用的伪代码或开放实现,我就可以使用其他算法和方法来解决这个问题。
答案 0 :(得分:0)
您是否考虑过MATLAB的图像注册工具?
使用imregister(https://www.mathworks.com/help/images/ref/imregister.html),你可以插入两个图像,1作为参考,一个作为“移动”,它将使用仿射变换将它们一起注册。函数调用只是
[optimizer, metric] = imregconfig('monomodal');
output_registered = imregister(moving,fixed,'affine',optimizer,metric);
为了更好地进行可视化,请使用RegistrationEstimator命令打开一个gui,您可以在其中导入2个图像并使用它来注册图像。从那里,您可以导出未来图像的代码。
此外,如果你想考虑非刚性变换,那么imregdemons(https://www.mathworks.com/help/images/ref/imregdemons.html)的工作方式大致相同。
答案 1 :(得分:0)
您可以使用Matlab的bwdist函数计算Hausdorff距离。您可以计算一个图像的距离变换,在另一个图像的边缘点进行评估,并获取最大值。 (你也可以改为求和,在这种情况下它被称为倒角距离。)对于这个问题,你可能想要对称的Hausdorff距离,所以你可以在两个方向上进行计算。
Hausdorff和倒角距离都测量特定对齐的匹配质量。要找到最佳注册,您需要尝试多个对齐转换,并评估它们所有寻找最佳对齐。正如另一个答案中所建议的那样,您可能会发现使用注册现有工具比编写自己的工具更容易。