将失真/变换图像与基本图像匹配的最快,最准确的方法?

时间:2012-01-22 19:24:26

标签: c++ image-processing opencv computer-vision

我正在尝试通过不同质量和失真的扫描仪(或可能是手机相机)拍摄的图像,并将其与基本图像(通过photoshop生成的图像,在打印和扫描之前)重新对齐)尽可能接近。

图像在每个角上都有四个粗角点,我一直用原始方法找到四个点,然后在扫描图像上使用透视变换。但是,我的算法完全是暴力破解而且非常易碎。

我已经尝试过使用cvGoodFeaturesToTrack(),但是我无法想出一个准确的方法来确保校准的四个点在所有情况下都是准确的。我曾想过使用模板匹配,但似乎它不会在各种扭曲下可靠地工作。我看到很多方法可以完成特定任务,比如查找轮廓,关键点,线条等,但没有迹象表明实际上做什么

有没有更好的方法,我只是没有看到?

谢谢!

2 个答案:

答案 0 :(得分:2)

经典方法是二值化和斑点分析:找到比阈值更暗的像素,并在触摸时对它们进行分组(连通成分分析)。保持具有点形状(良好圆形度)和区域在预期范围内的组。使用重心。这应该足够准确,以供参考。

由于图像中附近的特征,您可能希望减少角点的错误检测。更好区分的一个选择是使用环而不是磁盘并查找带孔的blob。

答案 1 :(得分:0)

如果您的扭曲可以描述为单应性,那么您可以使用“ESM”算法(高效二阶最小化,可在CVD库中使用)。 http://www.edwardrosten.com/cvd/cvd/html/group__gEsm.html

如果您的失真包含一些镜头失真,您可以使用DIC(数字图像相关)。