2010-04-26 68 views
2

我的问题是我有一个详细的街道地图的图像。在此地图上,可以有一个以任意角度旋转的标志(如交通灯图标)的某个小图像,可能调整大小。我有一个位图中的小图像。如果在大拼贴图像中存在,旋转并调整大小的副本,是否有任何算法或技术可以找到此位图?将旋转的位图匹配到拼贴图像

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

编辑:小位图和它与我想匹配的拼贴图像中的副本是大致相同的大小,也许30%的最大尺寸的差异。旋转是纯2D的,没有剪切或任何扭曲。

回答

3

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

第一:旋转/调整大小的分辨率是多少?如果你有足够的像素来避免混叠效应,那么你可能会好,但如果这个符号的一个或另一个表示非常小(例如,在拼贴画中很小,或者在样本镜头中很小),旋转到任意角度可能是不好的。

此外,你确定你没有剪切或其他种类的影响?我假设一个纯粹的2D旋转,旋转轴贯穿相机的中心(即,停止标志将只是一个八角形,旋转而不是剪切的八角形)。

有一两件事你可以尝试,如果你有耐心和样本数据,是落实Viola and Jones' face matching algorithm,但为标志。基本上,您需要大量的训练数据,在这些数据中,您已经从背景/像素中屏蔽掉了您感兴趣的像素。然后,该算法是从该训练数据中随机选择像素(“示例”),并且针对每个示例计算几百到几千个统计('特征')。特征可以是从红色通道中当前像素强度到蓝色通道中5×5邻域的总和强度之间的任何值。然后,为每个像素创建一个直方图,并尝试查找在直方图上具有与背景像素分离的前景像素的特征(即,前景全部位于直方图的左侧,背景右侧)。然后,您可以选择最适合该作业的功能,并运行它们以在拼贴画中查找符号。

这是我的论文研究的一个朋友的简要介绍。这类问题很难轻易解决,容易造成不好的解决方案。

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

第二种方法很容易在matlab中完成;否则,您需要一个类似fftw的库来将其关闭。

+0

我在这两种表示方式中都有足够的分辨率,它们大小大致相似,可能大小相差30%。没有剪切或任何形式的扭曲,只有2D旋转(认为自上而下)。我会看看这些链接,谢谢。 – Dmi 2010-04-26 02:49:03