【问题标题】:Comparing cross point between 2 images in MATLAB比较MATLAB中2个图像之间的交叉点
【发布时间】:2010-12-11 03:20:29
【问题描述】:

我拍摄了 2 张带有交叉点的图像,现在我正在尝试比较这 2 张图像并找出移动的距离和角度。我怎样才能使用 MATLAB 来做到这一点?非常感谢!

【问题讨论】:

标签: matlab image-processing computer-vision distance angle


【解决方案1】:

对齐同一场景的两个图像是calledimage registration。如果您可以访问图像处理工具箱,您可以在其中找到多个functionshelp you

看看这些image registration demos

【讨论】:

  • 你好,我可以得到角度的变化,但是我不能得到 x 和 y 的平移。谢谢。
  • 也许如果您更新您的问题以向我们展示您到目前为止所做的工作,我们也许可以提供帮助...
  • 顺便说一句,如果您反转旋转变换,您可以使用互相关方法找到平移(查看第三个示例)
  • 只有将两个图像旋转到相同的角度时,互相关才会起作用。
  • 是的,我只是建议它,因为 OP 提到已经解决了旋转问题
【解决方案2】:

如果图像被旋转,互相关(维基百科称之为Phase correlation)将不起作用。但是,有一个 related method based on log-polar coordinates 可以在不考虑旋转、缩放、剪切和平移的情况下工作。

如果您必须匹配任意图像,此方法将是最好的。匹配已知形状或暗线最好使用其他方法。

【讨论】:

    【解决方案3】:

    如果那些黑线总是在图像中,并且它们几乎是完全笔直的(不会扭曲成曲线),更好的方法是使用 Hough transformRadon transform(一种不同的思考方式关于做同样的事情)找到两条黑线,然后比较它们的位置。

    您首先要反转图像,使线条为亮白色(大值),然后进行霍夫变换。每个图像的输出将是两个明亮的白点,您可以从中进行峰值检测。每个峰的坐标告诉你线的角度和偏移量。

    我没有在 MATLAB 中这样做,但我看到了一些示例和文档:

    【讨论】:

    • 有趣的想法。顺便说一句,为什么要发布两个答案,只需编辑您的第一个并添加第二个作为替代解决方案...
    • 所以人们可以投票决定哪个更好,让 cmets 只与一个有关,等等。这不是网站的重点吗?
    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多