单目影像3D化与立体匹配
項目目標為將一段2D老電影轉為3D立體影像,在前期討論中,實現該目標的總體技術思路為
這個過程中需要解決的難點有
其中第四點為本篇的討論點,其實際上也屬于一種立體匹配。
立體匹配
概念
立體匹配的目標是在兩個或多個視點中匹配相應的像素點,計算視差。通俗地舉例,就是人的左眼和右眼所看到的兩張影像是不同的、有一定距離的,而立體匹配則是要匹配這兩張影像中的同名點。
點P和Q,映射到左相機OR像面上的同一點p≡q,只要找到p和q在右相機OT像面上的對應點就可以通過三角計算估計深度。找到對應點的過程,即立體匹配。
雙目立體匹配在尋找同名點的過程中,若沒有任何先驗約束,則對左影像每個像素,需要在右影像全圖空間中進行搜索,這種暴力搜索方法不僅效率非常低,而且很容易由于各種因素(如弱紋理、重復紋理等)搜索到錯誤的對應點,而利用核線幾何約束則是減小搜索范圍,提高匹配效率且降低錯誤匹配的一種有效方法。
P和Q映射到左相機QR像面上的同一點p≡q,直線pq上的點對應點一定位于右像面的直線p’q’上,p’q’即為直線pq的核線(極線),這就是核線約束(極線約束)。示意圖如下。
更詳細的說明可以參考鏈接https://blog.csdn.net/rs_lys/article/details/83268491
在得到了視差圖d之后,則可以根據視差獲得深度圖(Z = ( b × f ) / d),示意圖與公式如下
總體來講,拍攝雙目圖片進行立體匹配獲取深度圖,進行三維重建等操作的整個流程大體如下
在沒有雙目相機的情況下,可以使用單個相機平行移動拍攝,外參可以通過攝像機自標定算出。 后面這一情況也是項目所需要考慮的。
基于OpenCV以及兩張已有影像進行立體匹配和獲取深度圖的方法及示意圖可參考鏈接https://www.cnblogs.com/riddick/p/8486223.html
問題
通常來講,對兩張影像進行了立體匹配獲得了視差之后,就可以根據視差估計深度,而在我們的項目中由于只有單張影像,而且是通過資料中現成的算法來獲取單張影像的深度的,因此問題就變成了如何通過單張影像以及它的深度圖的點云來獲取另一張左/右影像。
在項目技術路線中,是想要通過共線方程將左影像(例)所生成的點云根據視差移動一部分來生成右影像。
而點云也是通過深度圖生成的,所以需要找到深度與視差的關系。
核線糾正之后的圖像同名點只存在列號(固定方向上的,通常為縱向【按照攝影測量坐標系】)的差異,這種差異就稱為視差(嚴謹來說是列方向視差,因為行方向視差通過糾正消除,所以對于核線像對,視差就指列方向視差),具體來說,視差等于同名點在左影像上的列號減去在右影像上的列號。在核線糾正后,相機坐標系的X軸與基線平行,Z軸與像平面垂直。
深度與視差
參考鏈接https://blog.csdn.net/rs_lys/article/details/83268491
可以根據三角關系(三角形POlOr和Ppp’相似)
進一步有
共線條件方程
由于在項目中,目標是要由一張左影像(例)獲取另一張右影像(例),而且是要應用在電影中,應需要考慮到虛擬攝像機的設置,相關參數的設置也要考慮到共線方程。
這一問題由于缺乏理解暫不討論,共線方程及其應用參考鏈接https://blog.csdn.net/qq_43542818/article/details/111479509,有較為清晰的分情況和相關場景的舉例分析。
以上參考的鏈接都在文中給出,后續會繼續補充博文。
總結
以上是生活随笔為你收集整理的单目影像3D化与立体匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 丹霞地貌峡谷第一景---云台山
- 下一篇: CORLPACK 0.4 发布,Ada