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