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