[英]Stereo Camera Rectification using saved parameters
我使用我的相機校准中的內在和外在文件糾正我的圖像對,以便我可以制作更好的深度圖,但是每次我嘗試運行程序時。 我的深度圖輸出僅顯示為空白。
這是我的糾正代碼:
FileStorage fs("intrinsics.yml", FileStorage::READ);
fs["intrisics"] >> intrinsics;
Mat M1, D1, M2, D2;
fs["M1"] >> M1;
fs["D1"] >> D1;
fs["M2"] >> M2;
fs["D2"] >> D2;
M1 *= scale;
M2 *= scale;
fs.open("extrinsics.yml", FileStorage::READ);
fs["extrinsics"] >> extrinsics;
Mat R, T, R1, R2, P1, P2;
fs["R"] >> R;
fs["T"] >> T;
fs["R1"] >> R1;
fs["R2"] >> R2;
fs["P1"] >> P1;
fs["P2"] >> P2;
fs["Q"] >> Q;
stereoRectify(M1, D1, M2, D2, img_size, R, T, R1, R2, P1, P2, Q, 0, -1, img_size, &roi1, &roi2);
Mat map11, map12, map21, map22;
initUndistortRectifyMap(M1, D1, R1, P1, img_size, CV_32FC1, map11, map12);
initUndistortRectifyMap(M2, D2, R2, P2, img_size, CV_32FC1, map21, map22);
Mat img1r, img2r;
remap(grayL, img1r, map11, map12, INTER_LINEAR);
remap(grayR, img2r, map21, map22, INTER_LINEAR);
我的SGBM代碼:
Ptr<StereoSGBM> sgbm = StereoSGBM::create
(0, //int minDisparity
96, //int numDisparities
5, //int SADWindowSize
600, //int P1 = 0
2400, //int P2 = 0
20, //int disp12MaxDiff = 0
16, //int preFilterCap = 0
1, //int uniquenessRatio = 0
100, //int speckleWindowSize = 0
20, //int speckleRange = 0
true); //bool fullDP = false
sgbm->compute(img1r, img2r, disparity_sgbm);
normalize(disparity_sgbm, disp_done_sgbm, 0, 255, CV_MINMAX, CV_8U);
每次我校准相機並運行程序時,它就會給出不錯的深度圖。 但立體聲對未對准,因為它沒有整流。 校准相機需要花費幾個小時,所以我只是嘗試加載相機的參數,所以我不必每次都校准幾個小時就可以獲得像樣的深度圖
先感謝您!
這是我的輸出:
https://docs.google.com/document/d/1ajS3vgoVPx2RgbroV8qH2WYHU85PL_SJ-9A4q8aa8e8/edit?usp=sharing
糾正過程似乎還可以,您的數據是否可能有問題? 我建議確保您的整流輸入正確無誤,並且重新映射步驟會給出正確的,行對齊的立體聲對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.