《機器視覺系統(tǒng)應用》課件-項目二 相機標定_第1頁
《機器視覺系統(tǒng)應用》課件-項目二 相機標定_第2頁
《機器視覺系統(tǒng)應用》課件-項目二 相機標定_第3頁
《機器視覺系統(tǒng)應用》課件-項目二 相機標定_第4頁
《機器視覺系統(tǒng)應用》課件-項目二 相機標定_第5頁
已閱讀5頁,還剩85頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1.雙目相機標定方法講解課程框架課程引入模型獲取和導入施加載荷與約束模型簡化與拆分實踐訓練交流討論實踐訓練評價反饋課程總結(jié),布置作業(yè)激學導思講授新知教學鞏固教學提升教學延伸課程總結(jié)及5S整理5分鐘15分鐘15分鐘30分鐘15分鐘10分鐘課程引入相關(guān)庫的獲取和導入原理分析一二三目錄能力目標(1)能夠?qū)﹄p目視覺有基礎(chǔ)的認識;(2)能夠?qū)ν瓿蓪﹄p目視覺的標定。知識目標(1)了解雙目視覺標定的原理。素質(zhì)目標(1)具有嚴謹求實精神;(2)具有自主學習的能力;(3)具備5S職業(yè)素養(yǎng)。課程目標一課程引入

計算機視覺的基本任務之一是從相機獲取的圖像信息出發(fā)計算三維空間中物體的幾何信息,并由此重建和識別物體,而空間物體表面某點的三維幾何位置與其在圖像中對應點之間的相互關(guān)系是由相機成像的幾何模型決定的,這些幾何模型參數(shù)就是相機參數(shù)。

簡單來說,標定是為了能夠從空間點的像素坐標映射到世界坐標,這是3D立體視覺必須經(jīng)過的過程。二相關(guān)庫獲取和導入導入庫本章節(jié)我們需用到的庫如下圖示意。cv2是opencv-python用于圖像處理。用matlab獲取相機標定數(shù)據(jù)二庫導入pycharm軟件界面相關(guān)庫獲取和導入三原理分析為什么需要相機標定?三原理分析相機標定的四個坐標系世界坐標系、相機坐標系、圖像坐標系、像素坐標系三原理分析三維旋轉(zhuǎn)的矩陣表示三原理分析相機坐標與世界坐標系之間的關(guān)系三原理分析相機坐標系與像平面坐標系三原理分析像素坐標與像平面之間的關(guān)系三原理分析世界坐標與像素坐標之間的關(guān)系三原理分析像素坐標與像平面之間的關(guān)系三原理分析相機徑向畸變引起徑向畸變的主要因素:透鏡形狀三原理分析相機切向畸變引起切向畸變的主要因素:透鏡與成像平面不平行三原理分析像素坐標與像平面之間的關(guān)系三原理分析單相機模型重建未知數(shù)分析三原理分析雙相機模型重建未知數(shù)分析三原理分析三原理分析雙目相機標定運行演示課程框架課程引入模型獲取和導入施加載荷與約束模型簡化與拆分實踐訓練交流討論實踐訓練評價反饋課程總結(jié),布置作業(yè)激學導思講授新知教學鞏固教學提升教學延伸課程總結(jié)及5S整理5分鐘15分鐘15分鐘30分鐘15分鐘10分鐘課程引入代碼分析代碼演示一二三目錄能力目標(1)能夠?qū)﹄p目視覺有基礎(chǔ)的認識;(2)能夠?qū)ν瓿蓪﹄p目視覺的標定。知識目標(1)了解雙目視覺標定的原理。素質(zhì)目標(1)具有嚴謹求實精神;(2)具有自主學習的能力;(3)具備5S職業(yè)素養(yǎng)。課程目標一課程引入

計算機視覺的基本任務之一是從相機獲取的圖像信息出發(fā)計算三維空間中物體的幾何信息,并由此重建和識別物體,而空間物體表面某點的三維幾何位置與其在圖像中對應點之間的相互關(guān)系是由相機成像的幾何模型決定的,這些幾何模型參數(shù)就是相機參數(shù)。

簡單來說,標定是為了能夠從空間點的像素坐標映射到世界坐標,這是3D立體視覺必須經(jīng)過的過程。二代碼分析獲得棋盤格圖像在命令行輸入stereoCameraCalibrator,出現(xiàn)如下界面:將上面的“Skew”、“TangentialDistortion”以及“3Coefficients”等選項選上,將“2Coefficients”選項去掉二代碼分析點擊添加圖像

出現(xiàn)如下界面:Camera1代表左攝像頭,Camera2代表右攝像頭,分別選擇存放著左右圖像的文件夾,需要特別注意的是棋盤格的邊長應該根據(jù)打印的實際大小填寫,單位可以選擇,然后點擊OK,程序會自動檢測采集的圖像到底有多少可以使用,可以說MATLAB2015的這個工具十分挑剔,如果角度不好的話,將使用不了,因此在采集圖像時,最好多的采集一些。獲得棋盤格圖像二代碼分析點擊

按鈕,開始標定:左下方的直方圖為左右圖像的標定誤差,點擊誤差較大的直方圖,可以直接在左邊的圖像對中找到對應的圖像,右鍵選擇“RemoveandRecalibrate”,可以重復上述步驟,直到認為誤差滿足標定需求為止。獲得棋盤格圖像二代碼分析點擊

選擇Exportcameraparameters,并點擊“OK”。獲得棋盤格圖像二代碼分析

讀取參數(shù)標定結(jié)束后,會得到如下標定參數(shù):TranslationOfCamera2:相機2相對于相機1的偏移矩陣,可以直接使用。RotationOfCamera2:相機2相對于相機1的旋轉(zhuǎn)矩陣,需要轉(zhuǎn)置之后才能使用。CameraParameters1與CameraParameters2為左右攝像頭的單獨標定參數(shù)。二代碼分析

讀取參數(shù)CameraParameters1與CameraParameters2中包含如下文件:IntrinsicMatrix存放的是攝像頭的內(nèi)參,只與攝像機的內(nèi)部結(jié)構(gòu)有關(guān),需要先轉(zhuǎn)置再使用。RadialDistortion:徑向畸變,攝像頭由于光學透鏡的特性使得成像存在著徑向畸變,可由K1,K2,K3確定。TangentialDistortion:切向畸變,由于裝配方面的誤差,傳感器與光學鏡頭之間并非完全平行,因此成像存在切向畸變,可由兩個參數(shù)P1,P2確定。使用時,需要注意參數(shù)的排放順序,即K1,K2,P1,P2,K3。切記不可弄錯,否則后續(xù)的立體匹配會出現(xiàn)很大的偏差。由上述方法獲得雙目相機的標定參數(shù)后,就可以進一步進行雙目校正了。三代碼演示

讀取參數(shù)

流程圖三代碼演示在Opencv中將標定所得數(shù)據(jù)放入對應的代碼中eft_camera_matrix=np.array([[947.76417,0.,296.46763],[0.,947.94886,197.26996],[0.,0.,1.]])left_distortion=np.array([[-0.10499,-0.62709,0.00206,-0.01470,0.00000]])right_camera_matrix=np.array([[907.19683,0.,265.54708],[0.,904.01159,222.68484],[0.,0.,1.]])right_distortion=np.array([[-0.68107,2.82674,0.01564,0.00873,0.00000]])om=np.array([-0.07326,0.00818,-0.02646])#旋轉(zhuǎn)關(guān)系向量R=cv2.Rodrigues(om)[0]#使用Rodrigues變換將om變換為RT=np.array([-71.15029,-3.56995,-17.15972])#平移關(guān)系向量size=(640,480)#圖像尺寸#進行立體更正R1,R2,P1,P2,Q,validPixROI1,validPixROI2=cv2.stereoRectify(left_camera_matrix,left_distortion,right_camera_matrix,right_distortion,size,R,T)#計算更正mapleft_map1,left_map2=cv2.initUndistortRectifyMap(left_camera_matrix,left_distortion,R1,P1,size,cv2.CV_16SC2)right_map1,right_map2=cv2.initUndistortRectifyMap(right_camera_matrix,right_distortion,R2,P2,size,cv2.CV_16SC2)三代碼演示相機校正#根據(jù)更正map對圖片進行重構(gòu)img1_rectified=cv2.remap(frame1,camera_configs.left_map1,camera_configs.left_map2,cv2.INTER_LINEAR)img2_rectified=cv2.remap(frame2,camera_configs.right_map1,camera_configs.right_map2,cv2.INTER_LINEAR)cv2.imshow("left",img1_rectified)cv2.imshow("right",img2_rectified)key=cv2.waitKey(1)ifkey==ord("q"):breakelifkey==ord("s"):cv2.imwrite("../image/BM_left.jpg",img1_rectified)cv2.imwrite("../image/BM_right.jpg",img2_rectified)camera1.release()camera2.release()三代碼演示左相機標定前后對比三代碼演示右相機標定前后對比2.1D線掃描相機標定的檢測方法講解課程引入處理原理處理步驟一二三目錄能力目標使用棋盤格模式定義真實世界坐標、從不同的角度捕獲棋盤的多個圖像、查找棋盤的2D坐標、校準相機;知識目標(1)確定真實世界中的3D點與其在該標定相機捕獲的圖像中的相應2D投影之間的精確關(guān)系課程目標一課程引入

計算機視覺的基本任務之一是從相機獲取的圖像信息出發(fā)計算三維空間中物體的幾何信息,并由此重建和識別物體,而空間物體表面某點的三維幾何位置與其在圖像中對應點之間的相互關(guān)系是由相機成像的幾何模型決定的,這些幾何模型參數(shù)就是相機參數(shù)。

簡單來說,標定是為了能夠從空間點的像素坐標映射到世界坐標,這是3D立體視覺必須經(jīng)過的過程。二處理原理相機標定的四個坐標系:世界坐標系、相機坐標系、圖像坐標系、像素坐標系二處理原理三維旋轉(zhuǎn)的矩陣表示二處理原理相機坐標與世界坐標系之間的關(guān)系二處理原理相機坐標系與像平面坐標系二處理原理像素坐標與像平面之間的關(guān)系二處理原理世界坐標與像素坐標之間的關(guān)系二處理原理像素坐標與像平面之間的關(guān)系二處理原理相機徑向畸變引起徑向畸變的主要因素:透鏡形狀二處理原理引起切向畸變的主要因素:透鏡與成像平面不平行二處理原理像素坐標與像平面之間的關(guān)系二處理原理單相機模型重建未知數(shù)分析流程圖三處理步驟1D線掃描相機標定程序運行演示課程引入代碼分析代碼演示一二三目錄能力目標使用棋盤格模式定義真實世界坐標、從不同的角度捕獲棋盤的多個圖像、查找棋盤的2D坐標、校準相機;知識目標(1)確定真實世界中的3D點與其在該標定相機捕獲的圖像中的相應2D投影之間的精確關(guān)系課程目標一課程引入

計算機視覺的基本任務之一是從相機獲取的圖像信息出發(fā)計算三維空間中物體的幾何信息,并由此重建和識別物體,而空間物體表面某點的三維幾何位置與其在圖像中對應點之間的相互關(guān)系是由相機成像的幾何模型決定的,這些幾何模型參數(shù)就是相機參數(shù)。

簡單來說,標定是為了能夠從空間點的像素坐標映射到世界坐標,這是3D立體視覺必須經(jīng)過的過程。二查找棋盤角點代碼分析OpenCV提供了一個名為findChessboardCorners的內(nèi)置函數(shù),該函數(shù)查找棋盤并返回角點的坐標。cv2.cornerSubPix(image,corners,winSize,zeroZone,criteria)參數(shù)如下:image表示輸入圖像corners表示輸入角的初始坐標和為輸出提供的精確坐標winSize表示搜索窗口邊長的一半zeroZone表示搜索區(qū)域中間零區(qū)大小的一半,在該零區(qū)上不進行下式求和。它有時用于避免自相關(guān)矩陣的可能奇點。(-1,-1)的值表示沒有這樣的大小riteria表示角點精化迭代過程的終止準則。也就是說,在criteria.maxCount迭代之后或在某些迭代中角位置移動小于criteria.epsilon時,角位置求精過程停止二相機校準處理原理校準的最后一步是將世界坐標系中的3D點及其在所有圖像中的2D位置傳遞給OpenCV的caliberecamera方法。retval,cameraMatrix,distCoeffs,rvecs,tvecs=cv2.calibrateCamera(objectPoints,imagePoints,imageSize)參數(shù):objectPoints代表三維圖像點的矢量imagePoints代表二維圖像點的矢量imageSize代表圖像大小cameraMatrix代表內(nèi)參矩陣distCoeffs代表透鏡畸變系數(shù)rvecs代表用于表達旋轉(zhuǎn)的3×1矢量。矢量的方向指定旋轉(zhuǎn)軸,矢量的大小指定旋轉(zhuǎn)角度tvecs代表用于表達位移的3×1矢量,與rvecs類似查找棋盤角點三代碼演示forf_nameinimages:img=cv2.imread(f_name)gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#尋找角點#如果在圖像中找到所需數(shù)量的角,ret=trueret,corners=cv2.findChessboardCorners(gray,checkerboard,cv2.CALIB_CB_ADAPTIVE_THRESH+cv2.CALIB_CB_FAST_CHECK+cv2.CALIB_CB_NORMALIZE_IMAGE)#如果檢測到所需數(shù)量的角點,我們將細化像素坐標并將其顯示在棋盤圖像上ifret:obj_points.append(obj_p)#為給定的二維點細化像素坐標corners2=cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)img_points.append(corners2)#在棋盤上顯示檢測到的角點img=cv2.drawChessboardCorners(img,checkerboard,corners2,ret)cv2.imshow('11',img)cv2.waitKey(0)cv2.imwrite("./image/camera_calibration/solved/"+str(counter)+".jpg",img)counter+=1查找棋盤角點三代碼演示

結(jié)果如下圖所示:相機校準三代碼演示ret,mtx,dist,r_vec,t_vec=cv2.calibrateCamera(obj_points,img_points,gray.shape[::-1],None,None)returnret,mtx,dist,r_vec,t_vecret_out,mtx_out,dist_out,r_vec_out,t_vec_out=camera_calibration()相機校準三代碼演示3.單相機標定程序運行演示課程引入代碼分析代碼演示一二三目錄能力目標使用棋盤格模式定義真實世界坐標、從不同的角度捕獲棋盤的多個圖像、查找棋盤的2D坐標、校準相機;知識目標(1)確定真實世界中的3D點與其在該標定相機捕獲的圖像中的相應2D投影之間的精確關(guān)系課程目標一課程引入

計算機視覺的基本任務之一是從相機獲取的圖像信息出發(fā)計算三維空間中物體的幾何信息,并由此重建和識別物體,而空間物體表面某點的三維幾何位置與其在圖像中對應點之間的相互關(guān)系是由相機成像的幾何模型決定的,這些幾何模型參數(shù)就是相機參數(shù)。

簡單來說,標定是為了能夠從空間點的像素坐標映射到世界坐標,這是3D立體視覺必須經(jīng)過的過程。二查找棋盤角點代碼分析OpenCV提供了一個名為findChessboardCorners的內(nèi)置函數(shù),該函數(shù)查找棋盤并返回角點的坐標。cv2.cornerSubPix(image,corners,winSize,zeroZone,criteria)參數(shù)如下:image表示輸入圖像corners表示輸入角的初始坐標和為輸出提供的精確坐標winSize表示搜索窗口邊長的一半zeroZone表示搜索區(qū)域中間零區(qū)大小的一半,在該零區(qū)上不進行下式求和。它有時用于避免自相關(guān)矩陣的可能奇點。(-1,-1)的值表示沒有這樣的大小riteria表示角點精化迭代過程的終止準則。也就是說,在criteria.maxCount迭代之后或在某些迭代中角位置移動小于criteria.epsilon時,角位置求精過程停止二相機校準處理原理校準的最后一步是將世界坐標系中的3D點及其在所有圖像中的2D位置傳遞給OpenCV的caliberecamera方法。retval,cameraMatrix,distCoeffs,rvecs,tvecs=cv2.calibrateCamera(objectPoints,imagePoints,imageSize)參數(shù):objectPoints代表三維圖像點的矢量imagePoints代表二維圖像點的矢量imageSize代表圖像大小cameraMatrix代表內(nèi)參矩陣distCoeffs代表透鏡畸變系數(shù)rvecs代表用于表達旋轉(zhuǎn)的3×1矢量。矢量的方向指定旋轉(zhuǎn)軸,矢量的大小指定旋轉(zhuǎn)角度tvecs代表用于表達位移的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論