read_image  ( Image ,  '直线标定板图片/Left201118140641772.bmp' ) 
get_image_size  ( Image ,  Width ,  Height ) 
dev_close_window  ( ) 
dev_open_window_fit_image  ( Image ,  0 ,  0 ,  - 1 ,  - 1 ,  WindowHandle ) 
dev_display  ( Image ) 
*  Image  Acquisition  01 :  Code  generated  by  Image  Acquisition  01 
list_files  ( '直线标定板图片' ,  [ 'files' , 'follow_links' ] ,  ImageFiles ) 
tuple_regexp_select  ( ImageFiles ,  [ '\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$' , 'ignore_case' ] ,  ImageFiles ) 
gen_empty_obj  ( Edges ) 
* | ImageFiles | 
for  Index  : =  0  to  | ImageFiles |  -  1  by  1 read_image  ( Image ,  ImageFiles [ Index ] ) edges_sub_pix  ( Image ,  ImageEdges ,  'canny' ,  1 ,  10 ,  40 ) segment_contours_xld  ( ImageEdges ,  SplitEdges ,  'lines_circles' ,  5 ,  4 ,  2 ) select_shape_xld  ( SplitEdges ,  SelectedEdges ,  'contlength' ,  'and' ,  30 ,  100000 ) concat_obj  ( Edges ,  SelectedEdges ,  Edges ) dev_display  ( Image ) dev_set_colored  ( 12 ) dev_display  ( SelectedEdges ) 
*      wait_seconds  ( 0.1 ) 
endfor 
stop  ( ) radial_distortion_self_calibration  ( Edges ,  CalibrationEdges ,  Width ,  Height ,  0.01 ,  42 ,  'division' ,  'variable' ,  0 ,  CamParMultiImage ) 
dev_clear_window  ( ) 
dev_set_colored  ( 12 ) 
dev_display  ( CalibrationEdges ) PosInImageX: = 0 
PosInImageY: = 0 
RadiusInImage: = 0 
* 直线畸变矫正准备 
change_radial_distortion_cam_par  ( 'fixed' ,  CamParMultiImage ,  0 ,  CamParMultiImageRect ) 
get_domain  ( Image ,  Domain ) 
create_metrology_model  ( MetrologyHandle ) 
*  Image  Acquisition  01 :  Code  generated  by  Image  Acquisition  01 
list_files  ( 'weizhi' ,  [ 'files' , 'follow_links' ] ,  ImageFiles ) 
tuple_regexp_select  ( ImageFiles ,  [ '\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$' , 'ignore_case' ] ,  ImageFiles ) 
for  Index  : =  0  to  | ImageFiles |  -  1  by  1 read_image  ( Image ,  ImageFiles [ Index ] ) *  直线标定 change_radial_distortion_image  ( Image ,  Domain ,  ImageRectified ,  CamParMultiImage ,  CamParMultiImageRect ) binary_threshold  ( ImageRectified ,  Region ,  'max_separability' ,  'dark' ,  UsedThreshold ) fill_up  ( Region ,  RegionFillUp ) difference  ( RegionFillUp ,  Region ,  RegionDifference ) fill_up  ( RegionDifference ,  RegionFillUp1 ) connection  ( RegionFillUp1 ,  ConnectedRegions ) select_shape_std  ( ConnectedRegions ,  SelectedRegions ,  'max_area' ,  70 ) smallest_circle  ( SelectedRegions ,  Row ,  Column ,  Radius ) add_metrology_object_circle_measure  ( MetrologyHandle ,  Row ,  Column ,  Radius ,  Radius / 10 ,  Radius / 60 ,  1 ,  90 ,  [ 'measure_distance' , 'min_score' ] ,  [ Radius / 30 , 0.2 ] ,  Index1 ) apply_metrology_model  ( ImageRectified ,  MetrologyHandle ) gen_empty_obj  ( Contours ) get_metrology_object_measures  ( Contours ,  MetrologyHandle ,  'all' ,  'all' ,  Row1 ,  Column1 ) get_metrology_object_result  ( MetrologyHandle ,  'all' ,  'all' ,  'result_type' ,  'all_param' ,  Parameter ) get_metrology_object_result_contour  ( Contour ,  MetrologyHandle ,  'all' ,  'all' ,  1.5 ) dev_display  ( ImageRectified ) dev_display  ( Contour ) PosInImageX [ Index ] : = Parameter [ 1 ] PosInImageY [ Index ] : = Parameter [ 0 ] RadiusInImage [ Index ] : = Parameter [ 2 ] 
endfor 
stop  ( ) MacX: = [ 154.394 , 151.394 , 148.394 , 154.394 , 151.394 , 148.394 , 154.394 , 151.394 , 148.394 ] 
MacY: = [ - 12.367 , - 12.367 , - 12.367 , - 14.368 , - 14.368 , - 14.368 , - 16.367 , - 16.367 , - 16.367 ] PointImageDis: = 0 
PointMacDis: = 0 distance_pp  ( PosInImageY [ 0 ] ,  PosInImageX [ 0 ] ,  PosInImageY [ 1 ] ,  PosInImageX [ 1 ] ,  Distance ) 
PointImageDis [ 0 ] : = Distance distance_pp  ( MacY [ 0 ] ,  MacX [ 0 ] ,  MacY [ 1 ] ,  MacX [ 1 ] ,  Distance ) 
PointMacDis [ 0 ] : = Distance distance_pp  ( PosInImageY [ 1 ] ,  PosInImageX [ 1 ] ,  PosInImageY [ 2 ] ,  PosInImageX [ 2 ] ,  Distance ) 
PointImageDis [ 1 ] : = Distance distance_pp  ( MacY [ 1 ] ,  MacX [ 1 ] ,  MacY [ 2 ] ,  MacX [ 2 ] ,  Distance ) 
PointMacDis [ 1 ] : = Distance distance_pp  ( PosInImageY [ 3 ] ,  PosInImageX [ 3 ] ,  PosInImageY [ 4 ] ,  PosInImageX [ 4 ] ,  Distance ) 
PointImageDis [ 2 ] : = Distance distance_pp  ( MacY [ 3 ] ,  MacX [ 3 ] ,  MacY [ 4 ] ,  MacX [ 4 ] ,  Distance ) 
PointMacDis [ 2 ] : = Distance distance_pp  ( PosInImageY [ 4 ] ,  PosInImageX [ 4 ] ,  PosInImageY [ 5 ] ,  PosInImageX [ 5 ] ,  Distance ) 
PointImageDis [ 3 ] : = Distance distance_pp  ( MacY [ 4 ] ,  MacX [ 4 ] ,  MacY [ 5 ] ,  MacX [ 5 ] ,  Distance ) 
PointMacDis [ 3 ] : = Distance pix: = PointMacDis [ 0 ] / PointImageDis [ 0 ] vector_to_hom_mat2d  ( PosInImageX ,  PosInImageY ,  MacX ,  MacY ,  HomMat2D ) / / 求解变换矩阵HomMat2D 
affine_trans_point_2d  ( HomMat2D ,  PosInImageX ,  PosInImageY ,  Qx ,  Qy ) / / 根据模板中心坐标求取距离相机中心实际距离