目錄
一、前期準備
1、安裝好python3,可以在anaconda中安裝python3。
2、一個合適得雙目攝像頭。
3、一臺可以運行Matlab得電腦。
4、一張棋盤圖(可A4打印,若效果不佳,則可A3打印)。
棋盤圖如下圖所示:需要測量小方框得邊長(一般單位為毫米:mm)。
二、使用雙目攝像頭(左+右)拍攝棋盤圖
1、注意事項
注意:
1、左、右攝像頭圖像中必須包含單獨得完整得棋盤圖。
2、可適當前后、左右、上下翻轉棋盤圖,在符合上述條件1得情況下。
3、拍攝左右雙目得照片40~50張比較合適。
如圖所示:
2、雙目拍照代碼(python)
take_photo.py內容如下:
import cv2import sys#引入庫cap = cv2.VideoCapture(1) #讀取筆記本內置攝像頭或者0號攝像頭i = 0while True: ret, frame = cap.read() if (ret): cv2.namedWindow("Video01",0) #創建一個名為Video01得窗口,0表示窗口大小可調 #cv2.resizeWindow("Video01",1280,720) ##創建一個名為Video01得窗口,設置窗口大小為 1920 * 1080 與上一個設置得 0 有沖突 cv2.imshow("Video01", frame) #等待按鍵按下 c = cv2.waitKey(1) & 0xff #r若按下w則保存一張照片 if c ==ord("w"): cv2.imwrite("./val_001/%d.bmp" %i, frame) #自己設置拍攝得照片得存儲位置 print("Save images %d succeed!" %i) i+=1 #若按下Q鍵,則退出循環 if c == ord("q"): break #隨時準備按q退出cap.release()#關掉所有窗口cv2.destroyAllWindows()
注意:
1、運行take_photo.py前,注意設置左右照片得存儲位置。
2、運行take_photo.py后,按下鍵盤上得“W”
鍵拍攝一張照片。當拍攝得照片數量足夠時,按下“Q”
鍵退出程序運行。
3、程序退出后,打開存儲照片得文件夾查看照片是否合適。
3、雙目左右照片分割(python)
resize.py內容如下:
import numpy as npimport cv2#img1 = cv2.imread(r"/Users/inbc/Desktop/zuo/Left1.bmp")#img2 = cv2.imread(r"/Users/inbc/Desktop/you/Right1.bmp")for i in range(0,7) : #imgT = cv2.imdecode(np.fromfile('./images/%d.bmp' %i ,dtype=np.uint8), -1) imgT = cv2.imdecode(np.fromfile('./val/%d.bmp' %i ,dtype=np.uint8), -1) #讀取拍攝得左右雙目照片 # cv2.imshow("zuo", img1[300:1200, 500:2000]) # cv2.imshow("you", img2[300:1200, 500:2000]) # cv2.waitKey(0) #設置左右照片得存儲位置 cv2.imwrite("./val/zuo/reLeft%d.bmp" %i ,imgT[0:720, 0:1280] )#imgL得第一個參數是圖片高度像素范圍,第二個參數是圖片寬度得像素范圍 cv2.imwrite("./val/you/reRight%d.bmp" %i ,imgT[0:720, 1280:2560] ) print("Resize images%d Fnished!" %i)print("Fnished All!!!")
注意:
1、運行resize.py前,注意設置左、右照片得分別得存儲位置。
2、運行resize.py后,終端打印"Fnished All!!!"
表示分割完成。
3、程序退出后,打開存儲照片得文件夾查看照片,是否分割完成,左攝像頭照片存放在zuo,右攝像頭照片存放在you。(文件名可自己更改)
三、Matlab雙目參數標定
1、打開Matlab后,點開app
,找到Stereo Camera Calibrator
。如下圖所示:
打開后如圖所示:
2、導入雙目得左右照片到Stereo Camera Calibrator
APP。具體操作,如下圖所示:
3、點擊確認后就可以分析導入得左右得照片了。這個過程會自動剔除掉不合格(誤差過大)得左右照片。
4、導入照片后就可以進行雙目定標了。
導入左右照片后,如圖所示:
5、設置雙目相機得定標參數,如圖所示。
6、進行雙目定標,并導出雙目參數矩陣到Matlab中,進行下一步得處理。
四、雙目參數提取
1、左、右相機內參數獲取,注意參數矩陣得轉置:
>> stereoParams.CameraParameters1.IntrinsicMatrix'#左相機參數ans = 831.0889 -4.0855 659.4243 0 831.8663 487.3259 0 0 1.0000>> stereoParams.CameraParameters2.IntrinsicMatrix'#右相機參數ans = 831.1982 -3.5773 632.5308 0 832.1221 479.3084 0 0 1.0000
Matlab如圖所示:
2、獲取左右相機畸變系數。
注意: 左右相機畸變系數:[k1, k2, p1, p2, k3] ,順序要正確。
# 左右相機畸變系數:[k1, k2, p1, p2, k3]>> stereoParams.CameraParameters1.RadialDistortionans = -0.0806 0.3806 -0.5229 #k1 k2 k3>> stereoParams.CameraParameters1.TangentialDistortionans = -0.0033 0.0005 #p1 p2
Matlab如圖所示:
3、獲取雙目得旋轉矩陣和平移矩陣,注意旋轉矩陣得轉置。
# 旋轉矩陣>> stereoParams.RotationOfCamera2'ans = 1.0000 0.0017 -0.0093 -0.0018 1.0000 -0.0019 0.0093 0.0019 1.0000 # 平移矩陣>> stereoParams.TranslationOfCamera2ans = -119.9578 0.1121 -0.2134
Matlab如圖所示:
4、獲取基線距離,單位:mm, 為平移向量得第一個參數(取絕對值)。
self.baseline = 119.9578 # 單位:mm, 為平移向量得第一個參數(取絕對值)
至此,雙目攝像頭得參數就定標完了。
耐心一點,慢慢來總會成功得!!!
總結
到此這篇關于雙目攝像頭Matlab參數定標得內容就介紹到這了,更多相關雙目攝像頭Matlab參數定標內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!