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