雙目相機的remap主要是為了解決「極線對齊」的問題,需要輸入相機的內外引數,分別產生左圖x方向、y方向和右圖x方向、y方向的remap**,並由這個**按照lut對原影象進行「極限校正」。
對極幾何是雙目相機立體標定的數學基礎,相關知識點參考:
主要思路是:
(1)讀入雙目相機的內外引數:
filestorage fs(path, filestorage::read);
vectorlimg_list, rimg_list;
if(!fs.isopened())
fs["m1"
] >> m1;
//> limg的內參
fs["d1"
] >> d1;
//> limg的畸變係數
fs["m2"
] >> m2;
//> rimg的內參
fs["d2"
] >> d2;
//> rimg的畸變係數
fs["r"
] >> r;
//> 旋轉矩陣
fs["t"
] >> t;
//> 平移矩陣
m1-左目相機內參;
d1-左目相機畸變係數;
m2-右目相機內參;
d2-右目相機畸變係數;
r -雙目相機外參的旋轉矩陣;
t -雙目相機外參的平移矩陣;
(2)利用stereorectify函式,由雙目相機內外引數計算雙目相機的校正變換矩陣;
(3)利用initundistortrectifymap函式,由對應的相機內參和校正變換矩陣計算x和y方向的remap**;
mat rl, rr, pl, pr, q;
stereorectify(m1, d1, m2, d2, size(1280, 720), r, t, rl, rr, pl, pr, q, calib_zero_disparity, -1, size(1280, 720));
initundistortrectifymap(m1, d1, rl, pl, size(1280, 720), cv_32fc1, maplx, maply);
initundistortrectifymap(m2, d2, rr, pr, size(1280, 720), cv_32fc1, maprx, mapry);
(4)利用remap函式,由remap**和對應的原圖計算極線校正之後的影象。
mat limg = imread(
"limage.png"
, cv_load_image_anydepth);
mat rimg = imread("rimage.png"
, cv_load_image_anydepth);
mat re_imgl, re_imgr;
remap(limg, re_imgl, maplx, maply, inter_linear);
remap(rimg, re_imgr, maprx, mapry, inter_linear);
matlab雙目相機標定校正 工業相機雙目標定
為了得到中物體的深度資訊,引入雙目視覺,雙目標定在的基礎上,標定出左右攝像機座標系之間的相對關係。若對單目標定不了解,請先食用 林青春 工業相機單目標定 zhuanlan.zhihu.com 所涉及的專業名詞有對極幾何,本徵矩陣,基礎矩陣。雙目相機基於對極幾何的理論,本徵矩陣e包含在物理空間兩個攝像...
opencv 雙目相機標定 自帶例子程式的使用
有了上篇單目標定示例程式的經驗,雙目標定就是小菜一碟哈。本人目前菜鳥,但還是願意厚著臉皮分享我一下午的成果。不要拍我.1.找到目錄 opencv sources samples cpp下的 stereo calib.cpp stereo calib.xml 和 stereo match.cpp以及2...
車載雙目ADAS(七) 雙目相機的設計
近年來,基於公釐波雷達和雷射雷達的方案已經廣泛用於高階汽車,公釐波雷達的主要優勢體現在具有很強的抵抗環境干擾的能力,可穿透霧 煙 灰塵等,具有全天候全天時工作的能力,可直接檢測前方車輛的距離和速度。雷射雷達的主要優勢體現在極精準的測距能力。然而,不論是公釐波雷達還是雷射雷達,均存在一些致命缺點,比如...