Halcon 圖像畸變校正


set_system ('clip_region', 'false')
read_image (Image, 'pioneer')
get_image_pointer1 (Image, Pointer, Type, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'white', WindowHandle)
rgb1_to_gray (Image, GrayImage)
//相機內參,用標定板可以標定得到 gen_cam_par_area_scan_division (0.00219846, -78129.2, 5.46495e-06, 5.5e-06, 318.206, 236.732, 640, 480, CamParOriginal) * extract edges in the original image dev_set_color ('red') edges_sub_pix (GrayImage, Edges, 'lanser2', 0.5, 20, 40) dev_set_color ('green') disp_continue_message (WindowHandle, 'black', 'true') stop () * Eliminating radial distortions from the extracted edges * Change the radial distortion: set kappa to 0 CamParVirtualFixed := CamParOriginal set_cam_par_data (CamParVirtualFixed, 'kappa', 0, CamParVirtualFixed) * Alternatively, the operator change_radial_distortion_cam_par can be used
//根據內參得到畸變映射參數 change_radial_distortion_cam_par ('fixed', CamParOriginal, 0, CamParVirtualFixed) change_radial_distortion_contours_xld (Edges, EdgesRectifiedFixed, CamParOriginal, CamParVirtualFixed) dev_display (GrayImage) dev_display (EdgesRectifiedFixed) disp_continue_message (WindowHandle, 'black', 'true') stop () * Change the radial distortion: mode 'fullsize' change_radial_distortion_cam_par ('fullsize', CamParOriginal, 0, CamParVirtualFullsize) change_radial_distortion_contours_xld (Edges, EdgesRectifiedFullsize, CamParOriginal, CamParVirtualFullsize) dev_display (GrayImage) dev_display (EdgesRectifiedFullsize) disp_continue_message (WindowHandle, 'black', 'true') stop () * Change the radial distortion: mode 'adaptive' change_radial_distortion_cam_par ('adaptive', CamParOriginal, 0, CamParVirtualAdaptive) change_radial_distortion_contours_xld (Edges, EdgesRectifiedAdaptive, CamParOriginal, CamParVirtualAdaptive) dev_display (GrayImage) dev_display (EdgesRectifiedAdaptive) disp_continue_message (WindowHandle, 'black', 'true') stop () * Change the radial distortion: mode 'preserve_resolution' change_radial_distortion_cam_par ('preserve_resolution', CamParOriginal, 0, CamParVirtualPreservedResolution) change_radial_distortion_contours_xld (Edges, EdgesRectifiedPreservedResolution, CamParOriginal, CamParVirtualPreservedResolution) dev_display (GrayImage) dev_display (EdgesRectifiedPreservedResolution) disp_continue_message (WindowHandle, 'black', 'true') stop () * Eliminating radial distortions from the image * Change the radial distortion: set kappa to 0
//得到畸變映射圖像 gen_radial_distortion_map (MapFixed, CamParOriginal, CamParVirtualFixed, 'bilinear')
//根據映射圖像,校正畸變圖像 map_image (GrayImage, MapFixed, ImageRectifiedFixed) disp_continue_message (WindowHandle, 'black', 'true') stop () * In case, only one image has to be rectified, the operator * change_radial_distortion_image can be used instead of the operators * gen_radial_distortion_map together with map_image. get_cam_par_data (CamParVirtualFullsize, 'image_width', WidthVirtualFullsize) get_cam_par_data (CamParVirtualFullsize, 'image_height', HeightVirtualFullsize) gen_rectangle1 (ROI, 0, 0, HeightVirtualFullsize - 1, WidthVirtualFullsize - 1) change_radial_distortion_image (GrayImage, ROI, ImageRectifiedFullsize, CamParOriginal, CamParVirtualFullsize) dev_clear_window () dev_display (ImageRectifiedFullsize) disp_continue_message (WindowHandle, 'black', 'true') stop () get_cam_par_data (CamParVirtualAdaptive, 'image_width', WidthVirtualAdaptive) get_cam_par_data (CamParVirtualAdaptive, 'image_height', HeightVirtualAdaptive) gen_rectangle1 (ROI, 0, 0, HeightVirtualAdaptive - 1, WidthVirtualAdaptive - 1) change_radial_distortion_image (GrayImage, ROI, ImageRectifiedAdaptive, CamParOriginal, CamParVirtualAdaptive) dev_clear_window () dev_display (ImageRectifiedAdaptive) disp_continue_message (WindowHandle, 'black', 'true') stop () get_cam_par_data (CamParVirtualPreservedResolution, 'image_width', WidthVirtualPreservedResolution) get_cam_par_data (CamParVirtualPreservedResolution, 'image_height', HeightVirtualPreservedResolution) gen_rectangle1 (ROI, 0, 0, HeightVirtualPreservedResolution - 1, WidthVirtualPreservedResolution - 1) change_radial_distortion_image (GrayImage, ROI, ImageRectifiedPreservedResolution, CamParOriginal, CamParVirtualPreservedResolution) dev_clear_window () dev_display (ImageRectifiedPreservedResolution)

  圖像畸變校正:

             第一步,先用標定板標定得到相機內參

            第二步,根據相機內參得到畸變映射參數

         change_radial_distortion_cam_par('fixed',CamParOriginal,0,CamParVirtualFixed)

         第三步,根據畸變映射參數跟相機內參得到畸變映射圖像

        gen_radial_distortion_map(MapFixed,CamParOriginal,CamParVirtualFixed,'bilinear')

        第四步,根據映射圖像校正畸變圖像

       map_image(GrayImage,MapFixed,ImageRectifiedFiexd)

 

 
 
        


               


免責聲明!

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



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