|
双眼可以测距和建立(lì)立体环境,双摄(shè)像头可以吗?答案是可以! 这方面一直(zhí)是(shì)计算机视觉的研究热点,并且已经有了不错的(de)成果!本人研究生阶段主要做三维重建,简单写一(yī)些自己所了解的。 首先(xiān)三(sān)维和二维的(de)区别,这个大家都容易理解,二维只有x、y两个轴,比如一(yī)张素(sù)描(miáo)画,我们整体的感觉(jiào)是“平”的,而三(sān)维则是多了(le)一个z轴的维度,这个z轴的直观理解就(jiù)是点离我们的距离,也即 “depth(深度)”。 再来看看我们(men)人眼,人眼是(shì)一个典型的(de)双目(mù)系统,大家可以做个小实验(yàn):闭上一只眼(yǎn)睛,然后左(zuǒ)右手(shǒu)分别拿着一只笔,试着(zhe)让笔尖相(xiàng)碰(pèng),哈哈,是不是有(yǒu)怀疑人生的(de)感觉? 我们分别用左右(yòu)眼看同一(yī)个物(wù)体,可以清楚地感觉到图像的差异,这个差异就是我们形成(chéng)三维视觉(jiào)的基础,有(yǒu)了这左(zuǒ)右眼图像(xiàng)的差异(yì),配(pèi)合大脑强(qiáng)大的识别匹配能(néng)力(lì),我们就能基(jī)本(běn)确定(dìng)物体离我(wǒ)们的距离,也即之前(qián)说的"深度",上个实验中我们(men)只睁开一只眼睛,虽(suī)然能清楚的(de)看到左右(yòu)手中(zhōng)的笔(bǐ),但是大脑没(méi)法得出深度信息,所以你在“上(shàng)下左右”方向上能(néng)准确定位,但是“前后”方向上却无能为力。 现在来说说左右图(tú)像的“差异”到“深度”的转换,这里可能需要一点点空间几何知识(shí),其实也很简单 物体上的点p12分(fèn)别对应左右(yòu)图像上点p1和p2,求解p1、p2、p12构成的三角形,我(wǒ)们就能得到点p12的坐标(biāo),也就能得到p12的深度。这个计算对于人脑来(lái)说是小case,我们更多地依赖经验和强(qiáng)大的(de)脑补能力,虽(suī)然我(wǒ)们不能计算(suàn)出某个物体(tǐ)离我们(men)的精(jīng)确距(jù)离,我们却能非常准确地建立物体距离(lí)的相对关(guān)系(xì),即(jí)哪个物体在前,哪个在后(hòu),这对日(rì)常(cháng)生活(huó)已(yǐ)经(jīng)足够了。 而我们做(zuò)工程上的双目视觉(jiào)三维重建(jiàn),核(hé)心目标就(jiù)是解上图所(suǒ)示的(de)三(sān)角形,相机可(kě)以抽象成一个简单(dān)的透视系统(tǒng): 空间点p经过相机成像,映射(shè)到图像上(shàng)点(x,y),其中Oc是相机光(guāng)心(xīn),WCS、DCS、ICS分(fèn)别是世界坐标系、设备(bèi)(相(xiàng)机)坐标(biāo)系(xì)、图像坐标系。空间点p到相机图像上点的几何(hé)变换可以(yǐ)用相(xiàng)机内参来(lái)描述(shù),具(jù)体公式就(jiù)不说了(le),可以(yǐ)简单地理解为相机拍照是对点的几何坐标变换,而相机内参(cān)就(jiù)是决(jué)定这个变换(huàn)的一些(xiē)参数。 继续看(kàn)之前的光学三角(jiǎo)关系图,O1、O2分别是(shì)左右相机的光(guāng)心(xīn),现在我(wǒ)们要(yào)做(zuò)的就是确定这两个相机的(de)相对位(wèi)置关(guān)系(xì):可以用旋转矩阵R和平移向量(liàng)T来描述,确(què)定了R和T,两个相机(jī)的位置关系就确定了,这个步骤(zhòu)叫做相机的外参标定。一般(bān)的做(zuò)法是用三维重建的逆过程来做,即由(yóu)一系列已知的p1、p2和p12来求(qiú)解光学三角形,估计出(chū)最(zuì)优的R、T。简而言(yán)之,外(wài)参标定确定相机之间的(de)相对(duì)位置关系。 好了,现在(zài)我们(men)只需要知道p1、p2的坐标(biāo),我们就能轻松算出p12的坐标,完成三维(wéi)重建。我们把(bǎ)p1、p2称为一个点对(pair),他们是同一个空(kōng)间点(diǎn)在不同(tóng)相机中的成像点。寻找这样的点对的过程称为立体匹配,它是三维重建最(zuì)关键,也可以说是最难的一步。我们都玩过“大家来找茬”,找的是两幅图(tú)的不同点(diǎn),而立体匹配则(zé)是找“相同点”。对人脑(nǎo)来说(shuō),这个问(wèn)题(tí)太(tài)easy了(le),给你同一个物体的两幅(fú)图,你能轻松找出一副图像(xiàng)上的(de)点在另一幅图像中的(de)对应点,因(yīn)为我们人脑的物体识别、分割、特征提取等等能力实在(zài)太强了(le),而且性能(néng)特别高,估计几岁的小孩就能秒杀现有的最好的(de)算法。 常规的匹配(pèi)算法一般(bān)通过(guò)特(tè)征点来做,即分别提取左右图像的特征点(diǎn)(常(cháng)用sift算(suàn)法(fǎ)),然后基于特征点(diǎn)配合对极几何(hé)等约束条件进(jìn)行匹配(pèi)。不过这类(lèi)匹配算法精度都不(bú)是太高,所以人们又(yòu)想了其它一些方法来辅助匹配,结构光方(fāng)法(fǎ)是目前用(yòng)的比较(jiào)多的,原理不难(nán)理解,就是(shì)向目(mù)标物体投(tóu)射编码的光,然后对相机(jī)图像(xiàng)进(jìn)行解码,从而得到点对(duì),举个简单的例子,我们把一个小方块的图(tú)案用投影仪投到物体(tǐ)表面,然(rán)后识别左右相机图像(xiàng)中的小方块,如果这个小方块(kuài)很小(xiǎo),看作一个点,那么我们就得到了一个点对(duì)。 贴个线结构光的(de)示意图: 这个示意(yì)图里面只(zhī)有一个相机,其实投影仪是可以看作相机的:投出(chū)的(de)光图案照射在物体表(biǎo)面相当于被拍照的物体,而投影(yǐng)仪的输入图像则相(xiàng)当于(yú)相机拍出来的照片,所以投(tóu)影仪也是(shì)当作相机(jī)并用同样的方法来标定内外(wài)参,即上图(tú)本质上也是双目视觉系统。 总结一下,双目(mù)视(shì)觉三维重建的(de)基本过程:相机内参(cān)、外参标定 -> 立体匹配 -> 光学三角形(xíng)求解(jiě),这里面最核心、也最影响重建(jiàn)效(xiào)果的就是(shì)立体匹配。 贴几张本人实验的图(用的(de)最基本的格雷码结(jié)构(gòu)光): 以上(shàng)说的都(dōu)是双目视(shì)觉(jiào)三维重建,实(shí)际(jì)上(shàng)还有其(qí)它(tā)一(yī)些重建方(fāng)法,如早期的(de)探针法,简单粗暴,直接拿探针(zhēn)在物(wù)体表面移动,一(yī)个点(diǎn)一个点测坐标;还(hái)有一类通过直接测距来进行三维重建,如超声波、TOF,即对(duì)物体表面逐点(diǎn)用声、光程差来测距,从(cóng)而得(dé)到(dào)三(sān)维点云;光学方法分为主动和(hé)被动(dòng)两大类,主动和被动指的是是否向(xiàng)物体表面投光,主动方(fāng)法有激光扫描(miáo)、相位测(cè)量以及我毕设的研究课题结构光方法等,被动方(fāng)法(fǎ)有单目视觉(如阴影法)和上文(wén)所述的立体视(shì)差(chà)方法等等。 目前还有一类三维重建方法(fǎ)非常火(huǒ):SFM(Structure from Motion),这类方(fāng)法的(de)特点是不需要相(xiàng)机参数,仅仅(jǐn)根据一(yī)系列图像就能进(jìn)行三维重建,也就是说(shuō),你随便拿(ná)个手机对着物体拍一些图片就能重建这个(gè)物体的三维模(mó)型,大家可(kě)以去(qù)体验下AutoDesk公司的Autodesk 123D Catch,除(chú)了近距离物体的(de)三维重建,SFM还有更激动人心的应(yīng)用:大型场景(jǐng)三维重建,感兴趣(qù)的可以看看这个Building Rome in a Day,他们在flickr上搜索两(liǎng)百万张罗马(mǎ)的照(zhào)片,通过亚马逊提供(gòng)的计算服务,最终得(dé)出整个(gè)城市的(de)三维模型,是不是又(yòu)有云计算、大数据的感觉。。。这波人貌似有几个是Google Earth团(tuán)队(duì)的。 原理上其(qí)实也不难理(lǐ)解:从特征点对入手,反向求解出(chū)相机的(de)内外(wài)参(选定一个相机作(zuò)为世界坐标系),然后重建(jiàn)更多的点。 大(dà)家应该对电影《普(pǔ)罗米修斯(sī)》里面(miàn)的用于(yú)洞(dòng)穴建(jiàn)模的(de)飞行(háng)器印象深刻: |