gpt4 book ai didi

c++ - 匹配小的灰度图像

转载 作者:太空狗 更新时间:2023-10-29 20:39:49 24 4
gpt4 key购买 nike

我想测试两张图片是否匹配。部分比赛也让我感兴趣。问题是图像受到强烈噪声的影响。另一个问题是图像可能会以未知角度旋转。图像中显示的对象将大致始终具有相同的比例!

这些图像显示了从俯视角度进行的区域扫描。 “线”多为墙壁,其他 object 多为树木和各种植物。

enter image description here enter image description here

另一个问题是,左边的图像非常模糊,右边的线条非常细。为了弥补这种差异,我使用了扩张。结果图像是我上传的图像。

虽然很容易看出这些图像几乎完美匹配,但我无法让我的算法相信这一事实。

我的第一个想法是基于特征的匹配,但匹配很糟糕。它仅适用于 -90°、0° 和 90° 的旋转角度。尽管大多数描述符都是旋转不变性的(在过去的项目中确实如此),但对于这个例子来说旋转不变性似乎失败了。

我的第二个想法是将图像分成几个较小的部分并使用模板匹配。所以我对图像进行了分割,再一次,对于人眼来说,它们很容易匹配。这一步的目标是分割不同的墙壁和树木/植物。

enter image description here

上排是左图的一部分,下排是右图的一部分。分段后,分段再次扩大。

如前所述:模板匹配失败,基于轮廓的模板匹配和轮廓匹配也是如此。

我认为图像的膨胀非常重要,因为在分割之前,人眼几乎不可能匹配没有膨胀的片段。分割后的另一个扩张使这更不困难。

最佳答案

您的首要工作应该是确定方向。我不确定这样做的最佳算法是什么,但这是我会使用的一种方法:修复其中一个图像并开始旋转另一个。对于每个旋转计算每个行/列上颜色强度的直方图。计算结果 vector 之间的一些距离(例如使用叉积)。选择导致最小叉积的旋转。将此方法与 hill climbing 结合使用可能是个好主意.

一旦您将图像沿大致相同的方向对齐,我相信匹配应该会更容易。由于两个图像应该处于相同的比例,计算类似于两个图像的几何中心的东西:计算所有像素的加权和 - 一个完全白色的像素将具有权重 1,而一个完全黑色的像素 - 权重 0,总和应该是大小为 2(x 和 y 坐标)的 vector 。之后将这些值除以图像的尺寸并将其称为“图像的几何中心”。以两个中心重合的方式叠加两个图像,然后再次计算图像之间差异的叉积。我会说这应该是他们的区别。

关于c++ - 匹配小的灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26508581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com