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)
