雙眼可以測距和建立立體環境,雙攝像頭可以嗎?

按道理應該是可行的吧?!因為我查了一下有些基礎專利,但是都沒有產品。有沒有專業的影像處理的給與專業解答?
實現了可能的應用產業太多了,為什麼還沒有中國人的專利呢?


===================

最近看到某款wp8的手機也有這個功能了。。。關注這個技術了才發現研究的還蠻多。產品也不少。謝謝各位的回答。


答案是可以!

這方面一直是計算機視覺的研究熱點,並且已經有了不錯的成果!本人研究生階段主要做三維重建,簡單寫一些自己所了解的。

首先三維和二維的區別,這個大家都容易理解,二維只有x、y兩個軸,比如一張素描畫,我們整體的感覺是「平」的,而三維則是多了一個z軸的維度,這個z軸的直觀理解就是點離我們的距離,也即 「depth(深度)」。

再來看看我們人眼,人眼是一個典型的雙目系統,大家可以做個小實驗:閉上一隻眼睛,然後左右手分別拿著一隻筆,試著讓筆尖相碰,哈哈,是不是有懷疑人生的感覺? 我們分別用左右眼看同一個物體,可以清楚地感覺到圖像的差異,這個差異就是我們形成三維視覺的基礎,有了這左右眼圖像的差異,配合大腦強大的識別匹配能力,我們就能基本確定物體離我們的距離,也即之前說的"深度",上個實驗中我們只睜開一隻眼睛,雖然能清楚的看到左右手中的筆,但是大腦沒法得出深度信息,所以你在「上下左右」方向上能準確定位,但是「前後」方向上卻無能為力。

現在來說說左右圖像的「差異」到「深度」的轉換,這裡可能需要一點點空間幾何知識,其實也很簡單,上圖

物體上的點p12分別對應左右圖像上點p1和p2,求解p1、p2、p12構成的三角形,我們就能得到點p12的坐標,也就能得到p12的深度。這個計算對於人腦來說是小case,我們更多地依賴經驗和強大的腦補能力,雖然我們不能計算出某個物體離我們的精確距離,我們卻能非常準確地建立物體距離的相對關係,即哪個物體在前,哪個在後,這對日常生活已經足夠了。

物體上的點p12分別對應左右圖像上點p1和p2,求解p1、p2、p12構成的三角形,我們就能得到點p12的坐標,也就能得到p12的深度。這個計算對於人腦來說是小case,我們更多地依賴經驗和強大的腦補能力,雖然我們不能計算出某個物體離我們的精確距離,我們卻能非常準確地建立物體距離的相對關係,即哪個物體在前,哪個在後,這對日常生活已經足夠了。

而我們做工程上的雙目視覺三維重建,核心目標就是解上圖所示的三角形,相機可以抽象成一個簡單的透視系統:

空間點p經過相機成像,映射到圖像上點(x,y),其中Oc是相機光心,WCS、DCS、ICS分別是世界坐標系、設備(相機)坐標系、圖像坐標系。空間點p到相機圖像上點的幾何變換可以用相機內參來描述,具體公式就不說了,可以簡單地理解為相機拍照是對點的幾何坐標變換,而相機內參就是決定這個變換的一些參數。

空間點p經過相機成像,映射到圖像上點(x,y),其中Oc是相機光心,WCS、DCS、ICS分別是世界坐標系、設備(相機)坐標系、圖像坐標系。空間點p到相機圖像上點的幾何變換可以用相機內參來描述,具體公式就不說了,可以簡單地理解為相機拍照是對點的幾何坐標變換,而相機內參就是決定這個變換的一些參數。

繼續看之前的光學三角關係圖,O1、O2分別是左右相機的光心,現在我們要做的就是確定這兩個相機的相對位置關係:可以用旋轉矩陣R和平移向量T來描述,確定了R和T,兩個相機的位置關係就確定了,這個步驟叫做相機的外參標定。一般的做法是用三維重建的逆過程來做,即由一系列已知的p1、p2和p12來求解光學三角形,估計出最優的R、T。簡而言之,外參標定確定相機之間的相對位置關係。

好了,現在我們只需要知道p1、p2的坐標,我們就能輕鬆算出p12的坐標,完成三維重建。我們把p1、p2稱為一個點對(pair),他們是同一個空間點在不同相機中的成像點。尋找這樣的點對的過程稱為立體匹配,它是三維重建最關鍵,也可以說是最難的一步。我們都玩過「大家來找茬」,找的是兩幅圖的不同點,而立體匹配則是找「相同點」。對人腦來說,這個問題太easy了,給你同一個物體的兩幅圖,你能輕鬆找出一副圖像上的點在另一幅圖像中的對應點,因為我們人腦的物體識別、分割、特徵提取等等能力實在太強了,而且性能特別高,估計幾歲的小孩就能秒殺現有的最好的演算法。

常規的匹配演算法一般通過特徵點來做,即分別提取左右圖像的特徵點(常用sift演算法),然後基於特徵點配合對極幾何等約束條件進行匹配。不過這類匹配演算法精度都不是太高,所以人們又想了其它一些方法來輔助匹配,結構光方法是目前用的比較多的,原理不難理解,就是向目標物體投射編碼的光,然後對相機圖像進行解碼,從而得到點對,舉個簡單的例子,我們把一個小方塊的圖案用投影儀投到物體表面,然後識別左右相機圖像中的小方塊,如果這個小方塊很小,看作一個點,那麼我們就得到了一個點對。

貼個線結構光的示意圖:

這個示意圖裡面只有一個相機,其實投影儀是可以看作相機的:投出的光圖案照射在物體表面相當於被拍照的物體,而投影儀的輸入圖像則相當於相機拍出來的照片,所以投影儀也是當作相機並用同樣的方法來標定內外參,即上圖本質上也是雙目視覺系統。

這個示意圖裡面只有一個相機,其實投影儀是可以看作相機的:投出的光圖案照射在物體表面相當於被拍照的物體,而投影儀的輸入圖像則相當於相機拍出來的照片,所以投影儀也是當作相機並用同樣的方法來標定內外參,即上圖本質上也是雙目視覺系統。

總結一下,雙目視覺三維重建的基本過程:相機內參、外參標定 -&> 立體匹配 -&> 光學三角形求解,這裡面最核心、也最影響重建效果的就是立體匹配。

貼幾張本人實驗的圖(用的最基本的格雷碼結構光):


以上說的都是雙目視覺三維重建,實際上還有其它一些重建方法,如早期的探針法,簡單粗暴,直接拿探針在物體表面移動,一個點一個點測坐標;還有一類通過直接測距來進行三維重建,如超聲波、TOF,即對物體表面逐點用聲、光程差來測距,從而得到三維點雲;光學方法分為主動和被動兩大類,主動和被動指的是是否向物體表面投光,主動方法有激光掃描、相位測量以及我畢設的研究課題結構光方法等,被動方法有單目視覺(如陰影法)和上文所述的立體視差方法等等。

目前還有一類三維重建方法非常火:SFM(Structure from Motion),這類方法的特點是不需要相機參數,僅僅根據一系列圖像就能進行三維重建,也就是說,你隨便拿個手機對著物體拍一些圖片就能重建這個物體的三維模型,大家可以去體驗下AutoDesk公司的Autodesk 123D Catch,除了近距離物體的三維重建,SFM還有更激動人心的應用:大型場景三維重建,感興趣的可以看看這個Building Rome in a Day,他們在flickr上搜索兩百萬張羅馬的照片,通過亞馬遜提供的計算服務,最終得出整個城市的三維模型,是不是又有雲計算、大數據的感覺。。。這波人貌似有幾個是Google Earth團隊的。優酷上有個很短的視頻:視頻封面building rome in one day視頻

原理上其實也不難理解:從特徵點對入手,反向求解出相機的內外參(選定一個相機作為世界坐標系),然後重建更多的點。

大家應該對電影《普羅米修斯》裡面的用於洞穴建模的飛行器印象深刻:

再看看目前發展迅速的無人機,這方面確實有很多東西值得嘗試。

再看看目前發展迅速的無人機,這方面確實有很多東西值得嘗試。

最後從產品上來說,現在的三維掃描儀已經很多了,不過國內自主技術的不多(很多都是做國外產品的代理),本人之前整理了一個文檔:三維掃描產品,有興趣的可以看看。


我就是專門做這個的。現在正在做的項目是給寶馬7系提供的, 寶馬在這個攝像頭的基礎上, 可能再集成其他一些感測器, 進一步開發自動巡航(高速公路高速行駛)以及堵車環境(城市低速行駛)下的自動駕駛。

這種基於兩個攝像頭重建3維空間的攝像頭, 英語叫做stereo camera。

百度深度學習研究院有挺大一塊是做這個的。 聽說西安交大也成立了空間視覺實驗室來做這個, 用於月球探測器上, 進行3維環境建模,這個相比複雜的城市環境下或者汽車高速運動環境下的建模,其實是更簡單的。


雙目視覺的原理 @hogan liu 同學已經講的很清楚啦,就是簡單的三角測距的原理。我就講一講雙目視覺,或者說立體視覺的歷史和應用吧。

計算機視覺這一學科是由偉大的MIT教授David Marr在1969-1980年建立的,雖然Marr教授35歲就英年早逝,但他的畢生成果都凝聚在由他的學生們編纂出版的 Vision: A computational investigation into the human representation and processing of visual information 一書中,可以說從那開始,立體視覺開始逐漸改變這個世界。

立體視覺最偉大的應用當然是在深空探測中的使用,自從1996年美國發射「火星探路者」開始,立體視覺技術就成了人類探索地外星球的主要手段。但最開始的立體視覺還需要火星車發射激光條紋來輔助定位,不能說是完全依靠視覺進行環境重建,但從2004年開始,一切都不一樣了。

2004年1月,火星探測的雙子星「勇氣號」和「機遇號」,相繼登陸火星。這兩貨就長下面這樣:


看到這貨頭上頂著的那倆大眼睛了嗎?那就是雙目視覺最偉大的一次應用。就是這一對眼睛接連不斷的為人類傳回一幅幅火星的雙目圖像,然後我們可以計算景深後恢復出火星表面的三維環境。

你看火星上面那麼多石頭,就得靠勇氣號的兩隻大眼睛完成避障和導航。我們也才能知道火星的三維環境。

你看火星上面那麼多石頭,就得靠勇氣號的兩隻大眼睛完成避障和導航。我們也才能知道火星的三維環境。

2012年,美國新一代Mars Rover 好奇號登上火星,雖然雙目相機增加了好幾對,解析度也提高很多,但是原理沒有變,還是雙目立體視覺。

這是好奇號的自拍,頭上還是頂著一對雙目視覺相機。

這是好奇號的自拍,頭上還是頂著一對雙目視覺相機。

當然,咱也不是沒有Rover上過天,再給一個玉兔號的模型圖片吧。2013年12月我國的月球巡視器登陸月面,同樣是立體視覺技術帶領中國人去探尋月球的地形地貌。


不過我覺得真正要把立體視覺帶到我們身邊,還要靠偉大的科技公司,因為有了雙目視覺,我們就能夠讓機器感知我們的世界,可以讓汽車自動駕駛,可以讓家庭機器人自動為我們服務,可以讓遊戲機與我們互動。所以還是要看我大微軟的kinnect。

總之computer vision肯定是一個朝氣蓬勃的方向,會有越來越多的改變世界的應用來到我們身邊。希望越來越多CS的青年才俊投身到這個領域!


這個問題其實是攝影測量中的「立體像對前方交會」(Forward Intersection),就是通過對某一物體從兩個不同角度拍照來確認物體位置的方法。

上圖中是從空中俯拍地面的示意圖。

上圖中是從空中俯拍地面的示意圖。
A是地面上的一個點,我們需要求得它的坐標;兩個白色的平行四邊形是從上空不同位置拍攝A的兩張相片;a和a"是A在兩張相片的成像,即A的投影;S和S"是兩張相片的攝影中心。可以看出SaA還有S"a"A都是共線的。

我們可以逆向的來理解求解A坐標的過程。我們學過幾何學都知道一個定理:「兩條直線可以確定一個點」,如果我們知道兩條經過A的直線,就可以求出A的坐標;我們恰好可以從兩張相片各找出一條直線,分別是SaA和S"a"A。
然而我們不知道這兩條直線的幾何參數,更無法求交點坐標。但是我們知道「兩點可以確定一條直線」,如果我們知道直線上的兩點,不就可以確定直線的幾何參數了嗎?所以我們可以通過S和a確定直線SaA。於是,問題的關鍵就是如何獲取S和a的坐標。因為我們可以任意選取拍照的位置,所以S的坐標我們可以事先知道。而a的坐標呢?別忘了我們拍的照片還沒派上用場,我們可以在照片上量測出a的坐標。這樣整個流程就走通了。
(為了便於閱讀,省略了一些重要過程。比如,即使量出a的坐標,但是和S的坐標不在同一坐標系內,所以需要坐標轉換,那麼我們就要知道兩個坐標系的關係,所以相片平面的傾角必須已知)

主要用到的數學公式是共線條件方程式( collinearity condition equation),它利用的是S,a,A三點共線的這個重要性質,它的作用是建立起攝影中心S,像點a和物點A三者的幾何關係。


下面是共線條件方程式的代數形式,式子中的XYZ就是A的坐標:


由於有左右兩張相片,我們可以寫出兩個共線條件方程式建立方程組

聯立可以解出A的坐標(X,Y,Z)

註:由於實際中測量誤差的不可避免,直線Sa和直線S"a"一定不會嚴格相交,上式是無解的。所以還要運用平差知識才能求出結果。

粗淺的說,原本我們要想描述A的位置,可以直接說「A在我的南10米,東5米處」;而我們在無法直接描述A的位置的情況下,可以多繞了個彎來解決這個問題:「B在我的南5米,西5米處;而A在B的南5米,東10米處」,攝影測量中的相片就好比這個B,是一個傳遞位置信息的的媒介。

另外題主提到的應用問題,攝影測量從十九世紀就開始用於測量工作,並發展為測繪學科的一個方向,現在又和計算機視覺等領域結合起來,應用是十分廣泛的。


三維重建是一個很激動人心的技術,正打算在這個方向做自己的畢設。

另外自己剛入門不久,如果講得有錯誤或者不清楚的地方,歡迎指出。

三維重建有很多種方法,比如:

Binocular Stereo [1]

也就是雙攝像頭重建。這個 @hogan liu 已經提到了。

Depth from Focus [2]
通過不停修改攝像頭的焦距,分辨出圖像那裡是模糊的,哪裡是對焦的,從而得出對上焦的那個點和鏡頭之間的距離。

我想說的是:


Structure From Motion [3] 。這是一種通過攝像頭在不同位置捕捉照片來對實物進行三維重建的辦法。它不需要知道攝像頭的位置,這些都可以通過照片本身計算出來。

要了解Structure From Motion,可以先從簡單的例子開始。I是第一張照片,J是移動攝像頭後的第二張照片。假設照相機沒有旋轉,也沒有進行前後移動,或者修改焦距,只是在左右上下方向平移。那麼通過點x在I和J之間的位置差,我們就可以知道攝像機移動的位置。

同時,x點在照相中的位置,是和相機位置,以及x點在現實世界中的位置相關的。具體下圖可以解釋。


要看懂下圖,先要了解幾個定義。

Camera Coordinate System,就是根據相機朝向定義的坐標系。也就是照片上的坐標系。if就是照片上的x軸,jf就是照片上的y軸。

World Coordinate System,就是根據現實世界定義的坐標系。這個並沒有強制什麼方向是X,什麼方向是Y,什麼方向是Z。隨便怎麼定義都可以,但是一般來說Y朝下,X朝右,Z朝前。三個方向互相垂直。

觀察上圖我們可以發現,x點(3D Scene Point)在世界坐標系中的位置,Sp,和相機在世界坐標系中的位置,也就是tf,之間的向量差,就是相機到x點的向量。這個向量正代表了x點在圖像中的位置。

也就是說,通過知道相機在世界坐標軸上的位置,x點在圖像的位置。我們就可以得出x點在世界坐標軸上的位置。通過求解相機運動參數獲得實物的坐標,這就是SFM的精髓。

當然,現實場景中的SFM更加複雜,因為相機除了平移還會旋轉。因此需要大量的數據。也就是說兩張照片是遠遠不夠的。

SFM的核心是採集特徵點,選擇有意義的點進行跟蹤。近年來又有一種新的方法,Large-Scale Direct Monocular SLAM [4],不需要採集特徵點,而是儘可能多地利用一張圖片的信息,建立每一個像素的距離值。看上去需要花很多計算資源,但是事實上這種方法非常高效。相機不停地採集圖片,程序根據最新的圖片判斷、修正依照之前圖片生成的像素距離值,不斷完善演進。照片拍得越多,模型越精確。具體還在研讀,等到讀透了再來更新。

參考
[圖 1, 2] A/P Ng Teck Khim, CS4243 Computer Vision and Pattern Recognition Lecture 5, 6 , National University of Singapore
[1,2,3] R. Szeliski. Computer Vision: Algorithms and Applications. Springer, 2010.
[4] Large-Scale Direct Monocular SLAM (http://vision.in.tum.de/research/lsdslam)


碩士論文是差不多這個方向,隨便說兩句。所述觀點沒有具體考證,有錯誤歡迎指正

就我的感覺,成熟的雙攝像頭技術似乎並不多,推向商用的就更少了。現在用的比較多的都在科研領域。究其原因,我覺得主要是實現起來略複雜,從而導致運行穩定性差。而且光學攝像頭雖然萬能,但是捕獲圖片的時候很容易受環境影響,而且處理起來前期的準備工作太多,而且根據使用場景不同,需要的處理方法也不一樣

如果題主只是找3D建模的方法的話,不如考慮一下TOF攝像頭,全稱time of flight camera,利用反射光的時間差直接獲取深度值。相比一般攝像頭略貴,但是有很多成套的解決方案,甚至framework以及操控軟體都是現成的。工業領域也已經有一些成功的使用案例。

最後如果自己想搞點小東西,kinect也是個不錯的選擇:便宜,好用,效果還不差

以上


不就是3ds嗎……


雙目標定現在在機器人視覺方面非常火。之前做過這個,calibration,給定兩個視覺攝像頭矩陣,來求旋轉矩陣R,和位移向量T,常規的是八點法,就是一個矩陣求解的問題。求解fundamental matrix 或者Essential matrix(這兩個可以互推),然後svd分解。
八點法比較常見,還有五點法。詳見david-nister 2004年發表在PAMI上的一篇Paper(具體名字記不大清楚了)。後面還有很多paper是根據他這篇來改改灌水的。非常推薦大家看一下他這篇,(我覺得david-nister這人真是天才)五點法大概思想也是解這個矩陣,其實基本思想差不多,中間用了gauss-jordan處理一下,只不過點少了的話,會求出多個解,找出真解就可以用點在攝像頭前的一種判斷方法。當然我說的只是大概的思想,其中還有很多細節,比如如何選取這兩個攝像頭對應的點。
排名第一的答案說用SIFT,這個可以,但是實際操作中,用這個會慢一些。


雙鏡頭測距在上世紀初就實現了,軍艦、炮兵常見。下圖就是,分得越開,精度越高,作用距離越遠。


現在採用雙攝像頭進行測距的應用也比較多了,就是利用左右相機拍攝的圖像計算能獲得視差,進而根據攝像機內外參數恢復出物體深度信息。很多非接觸式測量中都有用,比如機器人導航以及SLAM,自動駕駛等,這裡有兩個視頻可以查看類似的應用demo.
基於雙目立體視覺技術的自動駕駛應用

基於雙目立體視覺的自動駕駛應用


我是一個銷售員,是GE工業檢測設備的銷售。我在這裡回答貌似有做廣告的嫌疑。
不過我們的設備確實可以做雙物鏡測量,其實這種技術早就在工業檢測中應用很廣泛了,在航空航天的發動機檢查,鍋爐輪機的葉片檢查中用的很多。可能樓主講的是民用這一塊,確實沒聽過。
具體原理你去搜索GE韋林工業沒窺鏡的雙物鏡測量就可以。
再說一句雙物鏡的測量在工業上已經處於落後狀態,現在GE公司開發出了3D相位掃描測量了,航空公司也開始大批量的購買這種內窺鏡。如果問GE是幹什麼的,那就去百度補充吧。



look


三個攝像頭更加快速和準確。謝謝


我有一部2012買的HTC手機,雙攝像頭,可3D,而且照片是裸眼3D啊;我還有一部更早買的HTC手機,耳機充電數據線就是同一介面。


這個必須可以。
詳情參見大疆 精靈四
http://www.dji.com/cn/mobile/product/phantom-4


可以,但是誤差大,要用很多其他手段調


相關的專利很多。如果你搜索立體匹配和三維重建就會看到大量的專利和文章。雙目測距原理簡單,裡面有一些關鍵技術還需要突破,所以架構和整體性的專利不多。

雙目測距在工業界算是比較成熟的技術了。原理就是利用左右相機過獲得視差進而恢復出物體深度信息。目前主要用於工業檢測,機器人導航,DAS(輔助駕駛)等非接觸式被動測量。

包括嫦娥帶上去的那個玉兔號月球車上都有雙目攝像機用於三維重建和距離測量。


雙目視覺三維重建(2個攝像頭不一定要和2個眼睛那樣的3D距離)


用tof吧,雙目這玩意兒太早就有了,一直不靠譜,不是做不出來是不穩定……


單目都可以,何況是雙目,當然,單目對圖像處理的要求更高一些


推薦閱讀:

TAG:3D | 攝像頭 | 體感技術 | 無人駕駛車 | 測距 |