我有一個平行三目鏡設置,其中所有3個攝像頭以共線方式進行了對齊,如下所示。合併三目立體的深度圖
左攝像頭------------中攝像頭---------------------------- -----右攝像頭
左攝像頭和中央攝像頭之間的基線(攝像頭之間的距離)最短,左右攝像頭之間的基線最長。
理論上,我可以使用不同的相機組合(L-R,L-C和C-R)獲得3組視差圖像。我可以使用Triangulation爲每個視差圖生成深度圖(3D點)。我現在有3個深度圖。
LC組合具有較高的深度精度(測量距離更精確),因爲對象距離較近(因爲基線較短),而LR組合對遠處的對象具有較高的深度準確度(因爲基線很長)。同樣,C-R組合對於中等距離的物體也是精確的。
在立體聲設置中,通常我們將左(RGB)圖像定義爲參考圖像。在我的項目中,通過閾值深度值,我可以在參考圖像上獲得ROI。例如,我找到深度值在10-20米之間的所有像素,並找到它們各自的像素位置。在這種情況下,我有3D點與其相應的像素位置之間的關係。
由於在正常的立體聲設置中,我們只能根據基線(近和遠)對兩個區域中的一個區域具有更高的深度精度,因此我計劃使用3個攝像頭。這有助於我爲三個區域(近,中,遠)生成更高精度的3D點。
我現在想要合併3個深度圖以獲得全局圖。我的問題如下 -
- 如何合併三個深度圖?
- 合併後,如何知道哪個深度值對應於參考(左RGB)圖像中的哪個像素位置?
你的幫助,我們將不勝感激:)
非常感謝@marcoresk。 我認爲合併3D點雲可以使用最近鄰或某種形式的距離度量。 但是,我的相機是非靜態的,我有內在矩陣K,但我如何找到R和T?我沒有預定義的世界座標系。請原諒我,如果我聽起來天真,我仍然處於學習的過程中。 –
@Beginner_In_Image_Processing歡迎您,我也在學習的過程中。我認爲「我有一個平行三目鏡設置,其中所有3個相機」意思是「相機的相對位置/方向相對於左相機是固定的」。我還假定一組差距是一個「靜止」的對象,一個「凍結」的時間框架。所以你可以通過執行一些像[this]這樣的立體聲校準程序來檢索R和te(https://github.com/opencv/opencv/blob/master/samples/cpp/stereo_calib.cpp)。如果您必須合併在不同時間點拍攝的點(如果在之前的評論中認爲是僵化的)三目鏡系統,那麼您的世界座標系被設置爲起始於左凸輪 – marcoresk
@Beginner_In_Image_Processing,則情況會變得更加困難。下次請記得指定您的相機是否在移動或不移動。如果您已經讚賞我的回答,請考慮接受它。 – marcoresk