Saturday, November 22, 2008

图像拼接 share autostitch

这几天做数字图像处理课程的一个presentation(图像拼接),查阅了一些资料,在这里share一下。

图像拼接中的方法主要是直接拼接法(Direct Method)和基于特征点的拼接(Feature-Based Method)。

前者有一篇很好的论文,需要界定详细的镜头物理参数等等,比较复杂。

后者有一些比较著名的特征点检测算法。例如Harris算子, 也叫做角点检测子(Corner Detector),一般情况下效果不错,对旋转、灰度值统一线性变化都不敏感(也就是哪怕被检测对象旋转了或者是亮度均匀改变了,同样还是能够检测到相 同的特征点),但是对图像缩放(image scale)过于敏感。于是有了现在用的比较普遍的SIFT算法(Scale Invariant Feature Transform),主要参考的论文是David Lowe(SIFT算法的提出者)自己写滴一文, 行文流畅,很值得一读,特别是使用热扩散方程类比证明连续高斯滤波之差(DoG)在某种条件下等效于高斯滤波的拉普拉斯变换(LoG),尺度空间 (scale space)和特征点定位(Keypoint localization),以及后面的一些关于特征点描述子(Keypoint Descriptor)的说明都很值得一读(不过俺自己只是匆匆瞟了下,后面都没读完就直接翻看Conclusions了 囧)。

比较简单的实现可以直接使用matlab中的IPT里的一些函数来做,因为David Lowe的已经给出了SIFT的二进制实现和matlab的调用,简单情况下的图像变换(变换矩阵的确定)和联结相对来说就容易许多了。

如果需要开源的SIFT算法的实现,可以去这个链接里翻。(有灰常多种类滴实现,包括 C_&_matlab 的,C# 的等等)

这里给大家再share一个很强悍的全景图拼接软件 autostitch,是上文中提到的SIFT的提出者 David Lowe 和他的一个博士生 Brown 写的,他们所写的论文 Automatic Panoramic Image Stitching using Invariant Features 也确实堪称经典。如果想要把自己在海边度假的照片拼接起来、成为一副全景图的话,那么这款软件(尽管只免费提供 demo)绝对是首选!(起码现在看起来是如此 囧)

还有一些拼接实现,例如 pano-tools Hugin autopano-sift 等等都没有能够做到上述的 autostitch 的自动化识别和处理的效果(包括自动化识别大量图像的配对关系、自动确定配对图像间的空间关系、图像初步拼接后的多通道渲染处理等等)。关于其使用和体验分析可以看这里:AutoStitch 自動接圖軟體-全景圖(Panorama). 不过最好滴方式自然是下载来尝试一把。

--jtuki

No comments:

Post a Comment