QQ登录

只需一步,快速开始

工业视觉HALCON执行相机标定

[ 复制链接 ]
halcon中,相机之所以要标定,就是要确定 一些参数值,
我们可以用这些参数 把一个三维空间的点映射到图像 空间,
计算机视觉的基本任务之一是从摄像 机获取 图像 信息,
而后计算三维空间物体的几何信息,由此重建与识别物体。
所以相机标定 极为重要。
相机的标定 方法很多,涉及的算法公式也很多,在halcon中,相机标定的最终目的就是求相机的内参与外参。
相机类型也很多,我们这里以常用面阵相机为例介绍。
相机内参含6个参数,包括已知参数共9个,分别为
'area_scan_division', Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight
相机类型,相机焦距,径向畸变量,X,Y方向缩放因子,X,Y图像中心点,图像长宽。
相机外参有6个,分别为Tx,Ty,Tz,α,β,γ,
相机在X,Y,Z方向上的平移旋转量。

在用相机对标定板拍摄时,标定板充满相机视野的1/3到1/4便可,
其次是标定的成像灰度值最好大于128,以便于快速提取特征,
最后是标定的拍摄张数最好在9--16张
gen_caltab( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : )
XNum,  每行黑色圆点的个数;
YNum,  每列黑色圆点的个数;
MarkDist, 两个相邻黑色圆点的中心间距,单位米;
DiameterRatio, 黑色圆心直径与中心间距比值。
CalPlateDescr,标定板描述文件路径(.descr).
CalPlatePSFile,标定板图像文件路径.

下面为实例代码,可以运行查看效果。

工业视觉HALCON执行相机标定

工业视觉HALCON执行相机标定

ImageFiles := []
ImageFiles[0] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_01.png'
ImageFiles[1] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_02.png'
ImageFiles[2] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_03.png'
ImageFiles[3] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_04.png'
ImageFiles[4] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_05.png'
ImageFiles[5] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_06.png'
ImageFiles[6] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_07.png'
ImageFiles[7] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_08.png'
ImageFiles[8] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_09.png'
ImageFiles[9] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_10.png'
ImageFiles[10] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_11.png'
ImageFiles[11] := 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/scratch/scratch_calib_12.png'
TmpCtrl_ReferenceIndex := 0
TmpCtrl_PlateDescription := 'D:/Program Files/MVTec/HALCON-17.12-Progress/calib/caltab_30mm.descr'
StartParameters := ['area_scan_division',0.008,0,8.3e-006,8.3e-006,320,240,640,480]
TmpCtrl_FindCalObjParNames := ['gap_tolerance','alpha','skip_find_caltab']
TmpCtrl_FindCalObjParValues := [1,1,'false']
gen_caltab (7, 7, 0.0125, 0.5, 'caltab.descr', 'caltab.ps')
* Calibration 02: Create calibration model for managing calibration data
create_calib_data ('calibration_object', 1, 1, CalibHandle)
set_calib_data_cam_param (CalibHandle, 0, [], StartParameters)
set_calib_data_calib_object (CalibHandle, 0, TmpCtrl_PlateDescription)
* Calibration 02: Collect mark positions and estimated poses for all plates
for Index := 0 to |ImageFiles|-1 by 1
    read_image (Image, ImageFiles[Index])
    find_calib_object (Image, CalibHandle, 0, 0, Index, TmpCtrl_FindCalObjParNames, TmpCtrl_FindCalObjParValues)
endfor
* Calibration 02: Perform the actual calibration
calibrate_cameras (CalibHandle, TmpCtrl_Errors)
get_calib_data (CalibHandle, 'camera', 0, 'params', CameraParameters)
get_calib_data (CalibHandle, 'calib_obj_pose', [0, TmpCtrl_ReferenceIndex], 'pose', CameraPose)
* Calibration 02: Adjust origin for plate thickness
set_origin_pose (CameraPose, 0.0, 0.0, 0.001, CameraPose)
* Calibration 02: Clear calibration model when done
clear_calib_data (CalibHandle)
stop ()
文章为下面HALCON视频教程的部分内容,
可以下载视频教程观看学习。
  

halcon从自学到接项目视频教程,另外再赠送全网最全资源  

  

欢迎围观我录制的一套halcon自学视频教程(进入)


  

上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例

  

经历1年的编程与录制点击进入查看


  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索