之前看到Stanford大学的机器学习公开课程的lecture01中,Andrew Ng介绍他的两个学生用单幅图像去重构这个场景的三维模型。感觉非常厉害,所以就自己了解了一下。而这个研究也在相应的大学网站上面提供了详细的资料,包括相关论文、编写的代码和训练涉及到的样本库等等。
斯坦福大学:
http://ai.stanford.edu/~asaxena/reconstruction3d/
康奈尔大学:
http://www.cs.cornell.edu/~asaxena/learningdepth/
下面是个人看了下上面的《Learning 3-D Scene Structure from a Single Still Image》这篇论文的一点点理解,暂时还没涉及到具体的数学模型内容,如果后面自己有机会在这个方向往下做的时候,再做具体的分析了。
人看到一张静态图像去理解它的3D结构是一件很容易的事,因为人有图像里面这些物体的先验知识(当然得包含生理和心理效应),例如水是在地下的,天空和白云在上面,大部分的墙壁是直立的平面,桌子是方的,树是长在地面的,而且上面有叶子,还有山水啊,植物,动物啊等等,人看到它的一面,可以联想到它的立体结构。这也是为什么人用一个眼睛也能“看到”三维世界的原因。但对于计算机来说,由于投射投影,3D场景投射到2D空间里面,就损失了很多的信息,例如深度信息,同时诸如光照,材料特性、朝向、距离等信息都反映成唯一的测量值——灰度,因而要从这唯一的测量值恢复上述一个或几个反映物体本质特征的参数是一个病态过程(又称不适定性问题,即解不唯一。观测数据不足以约束问题的解,因此要利用先验知识或引入合适约束)。所以从单张图像去理解图像场景的3D结构就很困难了。
以前为了实现3D重构,一般都是通过两个(模拟人的双眼)或者多个摄像头来获取图像,再配准的。当然,也有研究单张图像的,但是都会对场景做很多的假设,例如由明暗恢复形状shape from shading(SFS)(利用单幅图像中物体表面明暗变化恢复其表面各点的法向方向进而求得其相对高度),运用光学辅助等,使用有很大的局限性。现在呢,就有很多的深度摄像头出来了,例如kinect,但还是两个摄像头(一个彩色,一个红外用于测图像深度,也就是测场景中物体到相机的距离);还有就是去年三星开发的在传统的cmos图像传感器里面增加可以测距的红外感光元,这样一个摄像头就可以获取彩色和深度图像了,但是目前技术还不是很成熟,应用还不广。
那么现在我们是讨论怎样从单张静态图像去重构其3D场景(不需要对场景做假设)。
图像为3D空间在2D平面(图像传感器)的投影,那么同一个投影可能是由无限种可能的3D场景投影产生的(还记得投影的概念不?)。这就是重构的困难。但是,不是每一种可能都是合理的,我们要做的就是找到最有可能投影为这张2D图像的3D场景(是不是有点概率论和贝叶斯的味道了)。因为我们生活的环境是结构性的,也就是说物体大部分是规则和有联系的,所以我们才可以通过一些描述这类规则和联系的先验知识去预测哪一种3D场景的可能性最大,最合理。
我们可以借鉴人的理解原理,将人对场景理解的先验知识赋予计算机,让计算机通过分析图像的特征去获得额外的3D结构的信息,通过这些信息去进行3D重构。那么现在的第一个问题是:图像中有哪些信息对场景的理解有用呢?
被观察对象本身具有某些特征,观察者即使只用一只眼睛也可以获得足够的深度信息,这种特征就称为单眼线索。人类单眼感知距离的手段包括:遮挡、纹理梯度、明暗线索、线条透视、聚焦调节等。
在空间关系上,处于同一视线上的各物体间相互遮挡,实际所看到的只是离观察者最近的物体,这一点在美术、工程制图等方面得到了充分的运用。这种遮挡提供了物体相互间的相对空间关系。
大片的相似景物常常能够提供足够的纹理信息,实际上在日常生活中经常会不自觉地利用这一信息,如“近者大,远者小,近者在图像的下缘,远者在图像的上缘”。这种单眼线索是根据对象的纹理大小、疏密、位置来获取深度信息的。这种纹理大小、疏密、位置分布被称为纹理梯度。
明暗和阴影的变化也提供了一种有效的深度线索。对于具有相同质地的物体,明暗提供了关于朝向的信息,这也就得到了相对距离信息。
线条透视是指平面上的对象在面积的大小、线条的长短以及线条之间距离远近等特征上所显示的能够引起深度感的单眼线索。典型的线条透视是在平行的道路、铁轨等图像中体现的,在线条轮廓画中这一特点得到了充分的运用。
前面几种空间深度感知的单眼线索可以说都是心理性的,是从长期的训练和适应中形成的。而眼睛的聚焦调节则是具有生理基础的单眼线索。通过调节水晶体的曲率变化使得物体在视网膜上得到清晰的象。这种调节引起视觉感受器的神经冲动,进而传入中枢神经系统的运动区,也可以产生深度知觉。
在计算机视觉的研究中,对上述感知手段的模拟产生了一大类称之为Shape from X的技术。
而在本论文中,其主要的思想如下:我们把图像划分为很多小的区域(通过聚类算法),每个区域的像素的属性相似,例如纹理、颜色等,这个区域称为Superpixels,一个Superpixels一般是结构的一小部分,例如墙壁或者平面的一部分等,我们的工作就是先通过分析像素的相似性去对图像进行分割(或者聚类),将其划分为多个结构区域(例如2000个),然后再预测这些Super pixels的3D位置和方向。
图像有用的属性:
(1)图像特征与深度:Superpixels的图像特征与深度(和方向)存在着一定的联系;
(2)连接结构:除了occlusion的情况,一般相邻的Super pixels是最有可能互相连接的;
(3)共面结构:相邻Super pixels很有可能属于同一个平面,如果他们有相似的特征,而且两者之间没有边缘;
(4)共线结构:图像中的长直线代表了3D场景中的直线,例如建筑物的边缘、人行道、窗等;
上面说到,我们可以通过一个模型去描述这些Superpixels的3D位置和方向与图像特征的关系,也即找到一个函数,我们输入一张图像的特征,然后这个函数就输出对应的3D位置和方向,也就实现了3D重构。那么问题是:怎样的模型才可以比较好的描述这种关系呢?这里用到的是马尔科夫随机场Markov Random Field (MRF)。那么什么是MRF?为什么它能很好的描述这种关系?又怎样去求解这个模型呢?(机器学习:通过提供图像和相应的深度图像去训练得到MRF模型)。借用别人的解释来说明下:
马尔科夫随机场(Markov Random Field),它包含两层意思:一是什么是马尔可夫,二是什么是随机场。
马尔可夫一般是马尔可夫性质的简称。如果一个过程的“将来”仅依赖“现在”而不依赖“过去”,则此过程具有马尔可夫性,或称此过程为马尔可夫过程。X(t+1) = f(X(t))。拿天气来打个比方。如果我们假定天气满足马尔可夫性质,其意思就是我们假设今天的天气仅仅与昨天的天气存在概率上的关联,而与前天及前天以前的天气没有关系。其它如传染病和谣言的传播规律,就是马尔可夫的。
随机场包含两个要素:位置(site),相空间(phase space)。当给每一个位置中按照某种分布随机赋予相空间的一个值之后,其全体就叫做随机场。我们不妨拿种地来打个比方。“位置”好比是一亩亩农田;“相空间”好比是种的各种庄稼。我们可以给不同的地种上不同的庄稼,这就好比给随机场的每个“位置”,赋予相空间里不同的值。所以,俗气点说,随机场就是在哪块地里种什么庄稼的事情。
好了,明白了上面两点,就可以讲马尔可夫随机场了。还是拿种地打比方,如果任何一块地里种的庄稼的种类仅仅与它邻近的地里种的庄稼的种类有关,与其它地方的庄稼的种类无关,那么这些地里种的庄稼的集合,就是一个马尔可夫随机场。
在图像中MRF定义的直观意义是,位置s的像素值只受到周围点Ns的影响,而与其他的点无关。它提供了方便而直接的方法以概率来描述图像像素具有的一些空间相关的特性。
上面说到,利用二维投影图像来重构三维物体的可视部分的问题是一个病态问题。那么什么叫病态问题呢?如果一个问题的解是存在的、唯一的,而且连续依赖于初始数据,那么称其为适定的,当不能全部满足上述条件时,就称其为不适定的(没有唯一解)。不适定性问题(即病态问题),观测数据不足以约束问题的解,因此要利用先验知识或引入合适约束。针对我们的问题来说,就是给你一幅图像(观测数据),它所代表的3D场景有无限种可能(无数个解),所以我们需要利用先验知识去增加约束,不满足约束的解是不正确的,找到一个最优的解。不适定问题(或者病态问题)的典型处理方法有两种:正则化方法和马尔可夫随机场(MRF)的方法。
马尔可夫随机场不但可以表征二值纹理,还可以利用吉布斯分布模型表征多值纹理,利用随机松弛算法或者确定性松弛算法,获得了图像分割的MAP估计。
一维MARKOV随机过程(一阶的情况)很好的描述了随机过程中某点的状态只与该点之前的一个点的状态有关系。二维MRF的平面网格结构同样可以较好的表现图像中像素之间的空间相关性。
MRF理论可以根据图像中像素之间的相关模式确定先验概率。MRF理论在实际应用中常常与统计决策和估计理论相结合,根据一定的最优化准则来确定目标函数。最大后验概率(MAP)是最常用的最优化准则,也是MRF建模中最常用的最优化准则。
所以可以将原图像看成是一个Markov场,以此作为先验知识来进行最大后验概率密度估计(MAP)。呵呵,好像还没能讲明白,因为自己也还没看明白,继续学习……