雙目立體視覺中,標定內外參數後,如何由左攝像機和右攝像機獲取的圖片的某一像素坐標求出世界坐標?
攝像機內外參數已經標定好了,假設我從左攝像機得到的像素坐標為(a,b)、有攝像機中得到的像素坐標為(c,d),如何獲得此時的世界坐標(x,y,z)呢?
看了一些論文和書,也沒太看懂。請各位大神指導指導,或是推薦一些比較接近的論文、書籍?
謝邀。題主只是完成了左右相機各自的單目標定,但還需要用外參數解出結構參數R和T才算完成雙目標定,然後即可使用這些參數做三維反求。我主要給題主理個思路,方便你找資料的時候更有目的性。
雙目標定後的下一件事是外極線校準,通俗地講就是讓同一個實際點在左右圖像中的投影點處於一條水平線上,這是為了後面立體匹配的時候只需要在同一行上搜索匹配點,降低匹配的複雜度。完成這個過程需要用到幾乎所有的標定參數(包括結構參數R和T)。
然後是立體匹配,如果願意自己寫匹配演算法的話有很多選擇,基於SAD、SSD、NCC,或基於神經網路、聚類,可以出無數種匹配演算法。因為已經做了外極線校準,所以匹配的時候在同一行上搜索就好,否則計算量十分巨大。考慮到外極線校準有誤差,可以把一行的上下幾行都搜索一下。如果不想自己寫,OpenCV有現成的類,可以實現BM、GC、SGBM演算法,通過GPU模塊還能實現BP、CSBP演算法。把每一個匹配點的橫坐標相減得到視差,把視差作為灰度值即得到視差圖D。
最後是三維反求,本質是三角測量原理。在矩陣上體現為左圖像坐標(x,y)、重投影矩陣Q、視差圖D三者的運算。重投影矩陣在外極線校準的時候已經得到。三維反求的過程就是將圖像坐標繫上的點重投影到左攝像機坐標繫上的過程。
至此雙目視覺的流程已經走完了。因為三角測量原理得到的結果是以攝像機的位置為基準的,所以重投影得到的三維坐標是左攝像機坐標,如果沒什麼特別的需求,就直接將世界坐標系與左攝像機坐標系重合即可,結果也直觀。但是按照題主的描述,題主是想另設世界坐標系,那就要加多一步:自己另外擺放標定板,求解左攝像機坐標系與標定板上的世界坐標繫上的旋轉平移關係,然後將左攝像機坐標系的點變換過這邊即可。
瀉藥
首先我假設你說的是,左右兩個攝像頭之間的相對位置不發生改變(也就是外參數)沒有發生變化,而且是在同時拍攝的同一個物體,而且左右兩幅圖的坐標都對應著現實世界的同一個點。
好,如果上述假設都成立,猜測你的意思,如果你兩個攝像機接近平行且校正好了,那麼你只需要翻到《學習opencv》的第十二章,用那個雙目視覺計算距離的公式就行。
如果並不是這樣的,請閱讀multiple view geometry書中有關triangulation的內容。
但是,從你字裡行間看,你還需要看別的東西。因為你還沒搞懂什麼是相機坐標系,什麼是世界坐標系。所以你之前得把MVG的two view那章也得看了。
簡單的說,攝像頭不動,如果以相機相機坐標系也就等於世界坐標系。攝像頭要是運動,區分相機坐標系和世界坐標系才有意義。當然,你也可以說,我相機坐標系不動,我偏要在別的什麼地方設個世界坐標系,那隻能說,哦你喜歡就好。
推薦閱讀:
※為什麼視覺搞了這麼多年,標定還是各種問題,3D還是各種不靠譜?
※halcon學習方法與應該注意的技巧?
※在 HSV 顏色空間中,為什麼色調(hue)對於表達顏色最重要?
※有沒有 2D 圖轉 3D 圖的軟體? 主要是想得到 2D 圖的深度圖,一定要有左右視角的才行嗎?
※為什麼說3Ds Max永遠不能可能精確了?