【问题标题】:Matching a rotated bitmap to a collage image将旋转的位图与拼贴图像匹配
【发布时间】:2010-04-26 10:49:46
【问题描述】:

我的问题是我有一张详细的街道地图。在这张地图上,可以有某个标志的小图像(例如交通灯图标)以任意角度旋转,可能会调整大小。我在位图中有这个小图像。如果在大拼贴图像中存在、旋转和调整大小的位图副本,是否有任何算法或技术可以用来定位该位图?

这类似于增强现实和定位标记图像的问题,但我的只是 2D,没有透视失真。

编辑:我想匹配的拼贴图像中的小位图和它的副本大小大致相同,最大尺寸差异可能为 30%。旋转是纯二维的,没有剪切或任何变形。

【问题讨论】:

    标签: bitmap pattern-matching


    【解决方案1】:

    这是一个非常棘手的问题。

    首先:旋转/调整大小的分辨率是多少?如果您有足够的像素来避免混叠效果,那么您可能没问题,但如果符号的一种或另一种表示非常小(即,它在拼贴画中很小或在您拥有的样本照片中很小),则旋转到任意角度都可能不好。

    另外,你确定你没有剪切或其他类型的效果吗?我假设一个纯粹的 2D 旋转,其中旋转轴穿过相机的中心(即,停止标志将只是一个八边形,旋转,而不是剪切八边形)。

    如果您有耐心和示例数据,您可以尝试的一件事是实现Viola and Jones' face matching algorithm,但要用于标志。基本上,您需要一堆训练数据,其中您已经从背景/不感兴趣的像素中屏蔽了您感兴趣的像素。然后,该算法从该训练数据(“示例”)中随机选择像素,并为每个示例计算几百到几千个统计数据(“特征”)。特征可以是任何东西,从红色通道中的当前像素强度到蓝色通道中 5x5 邻域的总强度。然后,为每个像素构建一个直方图,并尝试在直方图上找到前景像素与背景像素分开的特征(即,前景都在直方图的左侧,背景在右侧)。然后,您选择最适合该作业的功能,并运行它们以在拼贴画中找到标志。

    这是我一个朋友的论文研究的简要总结。这种问题很难轻易解决,也容易做出不好的解决方案。

    如果你只有一个标志和一个拼贴,并且只想有一个解决方案,你基本上可以将标志与拼贴进行卷积。取每个的FFT,用零填充较小的图像,使其与较大的图像大小相同,然后进行逐点乘法。然后,对结果执行逆 fft。根据旋转和缩放的严重程度,您应该会在拼贴中看到标志位置的尖峰(如果您认为它们非常不同,那么您可能需要尝试各种不同的缩放和旋转技术)。

    第二种方法很容易在matlab中完成;否则,您将需要像 fftw 这样的库来完成它。

    【讨论】:

    • 我在两种表示中都有足够的分辨率,它们的大小大致相似,可能有 30% 的大小差异。没有剪切或任何形式的扭曲,只有 2D 旋转(想想自上而下)。我会看看那些链接,谢谢。
    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多