iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
0
自我挑戰組

我的影像視覺定位學習筆記系列 第 17

day17-stereo calibration With OpenCV深度相機校正

  • 分享至 

  • xImage
  •  

一般深度相機有幾種方案

  1. 結構光
  2. TOF time of fly 紅外線測距
  3. 雙目測距

而本日的內容將說明如何使用openCV的範例stereo_calib.cpp

適用的情況在於你必須要有一個支架固定複數個相機,相機之間的角度、基線(兩個相機之間的連線)長度都會影響你校正之後的結果,如果校正完之後你的相機之間的狀態有變動,那麼你使用舊的校正參數,就可能會造成你測量出來的距離有所誤差。

如同前天的內容,你可以在sources code的以下路徑找到stereo_calib.cpp
opencv-3.4.7\samples\cpp

同時這個專案還需要一個stereo_calib.xml的設定檔,
你可以從上一個單目相機校正的VID5.xml複製過來做修改,
裡面的設定檔也是一連串的影像路徑。

<?xml version="1.0"?>
<opencv_storage>
<imagelist>
  images/CameraCalibration/VID5/left01.jpg
  images/CameraCalibration/VID5/right01.jpg
  images/CameraCalibration/VID5/left02.jpg
  images/CameraCalibration/VID5/right02.jpg
  images/CameraCalibration/VID5/left03.jpg
  images/CameraCalibration/VID5/right03.jpg
.
.
.
  images/CameraCalibration/VID5/left14.jpg
  images/CameraCalibration/VID5/right14.jpg
</imagelist>
</opencv_storage>

而由於我的影像相對路徑是如此我也必須同上一個專案新增一個影像的資料夾
裡面放了left01~14,right01~14兩個相機的校正物影像。
同樣的校正物影像你可以從以下路徑找到
opencv-3.4.7\samples\data

其中argv命令引數的部分,這個範例使用了cv::CommandLineParser
你可以修改input || 裡面的設定檔檔名

	cv::CommandLineParser parser(argc, argv, "{w|9|}{h|6|}{s|50.0|}{nr||}{help|1|}{@input|stereo_calib.xml|}");
	if (parser.has("help"))
		return print_help();
	showRectified = !parser.has("nr");
	imagelistfn = samples::findFile(parser.get<string>("@input"));
	boardSize.width = parser.get<int>("w");
	boardSize.height = parser.get<int>("h");
	float squareSize = parser.get<float>("s");

執行得過程會稍微卡在這個畫面

https://ithelp.ithome.com.tw/upload/images/20191003/20121127i9xqiMGcHI.png

過段時間後
他會輸出校正完的再投影誤差
並且根據計算出來的兩個相機之間的基礎矩陣代表的核線幾何
算出核線的再投影誤差
https://ithelp.ithome.com.tw/upload/images/20191003/20121127565plEmb1R.png

你可以決定要不要顯示改正後的影像

showRectified = !parser.has("nr");

https://ithelp.ithome.com.tw/upload/images/20191003/20121127c3sjcvQEBy.png
改正完的影像
左右兩張影像的棋盤角點,應該在同一條直線上

而程式結束應該會有兩個輸出檔
intrinsics.yml
extrinsics.yml


上一篇
day16-Camera calibration使用心得
下一篇
day18-stereo calibration使用心得
系列文
我的影像視覺定位學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言