halcon之屌炸天的自標定(1)


 

 

本次先對halcon的自標定做個整體介紹,了解屌炸天的自標定在實際應用中的應用與實現方法,具體的編程細節將在后續的文章中介紹。

 

halcon提供了一種自標定的算子,它可以在不用標定板的情況下,標定出相機內參(無焦距),相對於多幅標定無法獲取相機的外參。

 

求出了相機內參就可以進行畸變校正,因而自標定相對於多幅標定,在畸變校正方面更快捷,這樣設備在現場更容易操作、維護。

 

在畸變校正以后我們同樣可以放置一個參考物求取像素當量,構建XY世界坐標系,以用於測量、定位等應用。

 

  1. edges_sub_pix (GrayImage,Edges,'canny',1.0,20,40)
    segment_contours_xld (Edges,ContoursSplit,'lines_circles',5,8,4)
    radial_distortion_self_calibration (ContoursSplit,SelectedContours, \
                                       640,480,0.08,42,'division', \
                                       'variable',0,CameraParam)
    get_domain (GrayImage,Domain)
    change_radial_distortion_cam_par ('fullsize',CameraParam,0,CamParamOut)
    change_radial_distortion_image (GrayImage,Domain,ImageRectified, \
                                    CameraParam,CamParamOut)

 

上述代碼是一個常規的自標定流程:

1.求出拍攝物體的邊緣XLD

2.使用radial_distortion_self_calibration函數,根據邊緣求出相機內參

3.change_radial_distortion_cam_par 求出理想無畸變內參

4.change_radial_distortion_image 根據相機內參,對圖像進行畸變校正

 

更多例程參考halcon example

radial_distortion_self_calibration.hdev

 

Calibrate the radial distortion coefficient and the center of distortion

radial_distortion_comparison.hdev

 

Compare results of camera calibration and radial distortion self-calibration

 

自標定的原理來自此論文,論文要錢無法獲取實在遺憾無法深入了解,哪位能下載到記得email我一份。

T. Thormälen, H. Broszio: “Automatic line-based estimation of radial lens distortion”; in: Integrated Computer-Aided Engineering; vol. 12; pp. 177-190; 2005.

 
但是根據說明文檔可以了解到:halcon的自標定根據提取到是物體邊緣的直線,求出相機畸變系數。
 
因為畸變一般在圖像的邊緣更嚴重,所以需要保證在圖像的四周邊緣有足夠的直線線段。
 
當然在實際項目中拍攝物體不可能都像例程中一樣有理想的直線邊緣,替代方法是:用菲林片制作一張網格黑色印制(10*10,可以根據自己實際情況調整)充滿整個視野,
 
相機拍攝一次求取內參,根據此結果進行標定,同時還可以根據網格求出像素當量,構建XY世界坐標系。
 
NOTICE:使用halcon自標定需要保證運行環境內存>=2G,當使用 多項式模式標定則需要>=4G,否則會出現error 6001:memory not enough。
 
 
關注微信:halconhub,每日獲取halcon精華文章
 
 
 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM