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