相機標定簡介:
????????首先,相機會產生畸變,即實際圖像和拍攝圖像不一致,可以是凸性也可以是凹性形變,相機標定的過程就是將畸變圖像還原為原始圖像,并將圖像中的像素坐標轉換為世界坐標。
形如:相機內參 CameraParameters 和相機外參 CameraPose
CameraParameters := ['area_scan_division',0.000775057,-131550,6.66883e-07,6.67e-07,796.074,594.063,1600,1200]
CameraPose := [0.000732489,0.0324252,0.533711,359.244,357.29,0.365181,0]
1.標定板生成
用gen_caltab算子來制作一個標定板,具體見深入理解halcon相機標定_halcon標定-CSDN博客
gen_caltab( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : )
2.標定板擺放
標定板數量9-16張為宜,標定板占標定圖像1/3到1/4,可以偏離標定板所在平面一定角度。
3.怎么用halcon進行相機內外參標定?
連接好相機后,打開相機驅動軟件看相機是否正確連接,再更改設置里的網絡和internet中IP4地址和掩碼為驅動軟件上顯示的相應內容。
?打開halcon窗口的image acquisition,自動檢測,連接設備,實時顯示圖像。
也可通過相機驅動軟件進行拍攝存儲,拍攝圖像存放置指定文件夾。
通過上述操作得到標定描述文件后,打開halcon的celarbation窗口:查詢相機所屬型號的焦距、像元。
進一步,選標定==>圖像文件==>加載存儲的圖像
?標志失敗原因:1)打光不好,過亮、過暗
? ? ? ? ? ? ? ? ? ? ? ? ? ?2)對焦不清晰
? ? ? ? ? ? ? ? ? ? ? ? ? ?3)標定板的對比度不夠(>128)
去除標志失敗點圖像,適當移除部分品質不好的圖像,選定方向較正的圖像作為參考位姿,點擊標定。
得到生成結果
進一步,代碼生成,
可在halcon代碼里看到生成的相機內外參數
示例代碼如下:
CameraParameters := ['area_scan_division',0.000733146,-131210,6.66914e-07,6.67e-07,794.794,595.823,1600,1200]
CameraPose := [0.00132212,0.0316434,0.504834,359.297,357.443,0.364191,0]read_image (Image, 'C:/ProgramData/Galaxy/userdata/top_camera/Pic_20250415192151821.bmp')rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Regions, 4, 100)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and',300,1000.5)
select_shape (SelectedRegions, SelectedRegions, 'column', 'and', 525.7, 960)
area_center (SelectedRegions, Area, Row, Column)at_colum := [Column[0],Column[1]]
at_row := [ Row[0],Row[1]]gen_contour_polygon_xld (Contour,at_row , at_colum)
image_points_to_world_plane (CameraParameters, CameraPose, at_row,at_colum, 'mm', X, Y)
x1 := X[0]
x2 := X[1]
y1 := Y[0]
y2 := Y[1]
distance_pp (x1, y1, x2, y2, Distance)
stop ()
?
?