自建网站平台 优帮云,如何做网站外部链接,零食网站推广策划书,建设部网站核对编号相机标定1.相机标定是什么2.怎么使用halcon进行相机内外参标定#xff1f; #xff08;1#xff09;搭建硬件1.**相机连好电脑#xff0c;用相机厂家软件打开相机#xff0c;检查一下相机是否正常。**2.**接下来使用halcon连接相机**#xff08;2#xff09;开始标定1.*… 相机标定1.相机标定是什么2.怎么使用halcon进行相机内外参标定 1搭建硬件1.**相机连好电脑用相机厂家软件打开相机检查一下相机是否正常。**2.**接下来使用halcon连接相机**2开始标定1.**生成标定板参数文件**2.**配置标定参数**3.**开始标定相机****总结提取标志点失败原因4.**得到标定参数**3使用标定出的数据矫正图像1**相机畸变矫正**2**相机坐标系转化成世界坐标系**终于完事了博主写作不容易还是需要您鼓励万水千山总是情 , 先点个赞行不行如果大家看完这一篇文章后还想深入了解相机标定可以参看文章《深入理解halcon相机标定》https://blog.csdn.net/cashmood/article/details/105221053 相机标定
这几天一直在搞相机的标定。过程中遇到了许许多多的问题为了让广大自动化行业的小白避免踩坑用这个帖子总结一下相机的标定。接下来我就给大家介绍一下标定侧重点在怎么做。
1.相机标定是什么
首先镜头有畸变也就是说照出的图像与实际不符产生了形变。即使号称无畸变的工业镜头也是有千分之几的畸变率的。上个图告诉大家畸变 这个图里第一个图就是我们相机下的真实的形状后边两个就是照出来有畸变的图片。
其次镜头与相机无论你的机械结构精度多高也不容易或者说没办法将相机安装的特别正那相机安装不正也是会导致误差的。大家想知道具体数学模型的话可以搜一下相机标定的理论方面的知识我侧重怎么做。 标定就是把上述两个东西转化成正常的。
2.怎么使用halcon进行相机内外参标定
1搭建硬件
首先相机连接电脑打开halcon连接相机这里不一定要连接相机用相机照好的图片也可以。 这里说一下halcon连接相机一般的相机都能用halcon连接做标定很方便。给大家展示一下连接步骤。
1.相机连好电脑用相机厂家软件打开相机检查一下相机是否正常。 1框内是检查相机是否能够索引到2框是看是否有图像3框是检查帧率与带宽相机尺寸4框是检查有无错误信息。 如果正常用相机厂家软件关闭相机并且断开连接这很重要要不halcon连不上相机记住停止采集不代表断开连接把相机固定好
2.接下来使用halcon连接相机 点击助手点击打开新的ImageAcquisition。 选择图像获取接口点击自动检测检测相机类型。后边的文本框里会显示相机类型我的是千兆网相机所以显示GigeVision。前边大家用相机厂家的软件打开了相机那么说明大家都安装了相机厂家halcon连接的sdk所以接口是可以检测到的如果没安装相机厂家的软件要安装哦不然连接不上。有啥不懂留言问我。 切换资源窗口到连接窗口 1就是咱们安装相机厂家软件之后的相机采集SDK包。 2选择你要连接的设备 3点击连接连接相机如果有其他程序连着现在的相机halcon是没办法连接上的所以上边让大家记得断开连接 4点击实时实时显示图像 连接上相机并实时显示 1图像显示区域 2断开相机连接 3停止实时采集 进行完上述设置后停止实时采集关闭ImageAcquisition窗口不用保存因为只要我们不关闭halcon这个图像采集ImageAcquisition01都可以在助手里边找到。
2开始标定
1.生成标定板参数文件
这个文件是描述你的标定板尺寸的有了这个文件halcon才知道你的标定板是多大的。 怎么生成呢很简单 为了让大家方便复制我把代码贴出来 gen_caltab (7, 7, 0.004, 0.5, ‘C:/Users/Administrator/Desktop/caltab.descr’, ‘C:/Users/Administrator/Desktop/caltab.ps’)关于gen_caltab 算子详细解释传送门点击即可查看gen_caltab 解释
2.配置标定参数
点击助手点击打开新的Calibration。 在安装界面 1标定任务选择全标定内外参数全部标定。 2.标定板的描述文件选择我们刚刚创建的描述文件。C:/Users/Administrator/Desktop/caltab.descr 厚度的话就填写标定板厚度 3.摄像机参数 选择摄像机模型我的是面阵相机。镜头是远心镜头就选择远心 4.像元的宽高填写相机的像元尺寸如果不知道去问相机厂家。焦距填写镜头的焦距。 确保以上内容填写正确 我的填写好后
3.开始标定相机
接下来切换到标定栏 1图像源选择图相采集助手 2点击这个显示图相采集助手按钮显示图像采集窗口 3点击连接连接相机点击实时显示图像 4点击图像采集助手里的参数调整焦距调整光源让成像质量好一点。不过曝、标定片黑色圆点与白色背景对比度大于100、对焦清晰 完成调整后关闭图像采集助手的实时显示。关闭图像采集助手窗口。 1点击采集按钮采集标定板图像 2删除标志点提取失败的图像 3图像数量为3框不提示图像数量太少为止 4可以识别的标定板图像要把相机视野覆盖完全哪里没有覆盖到可以点击show查看。 5点击这个按钮就可以出来标定数据了但是如果有标志点提取失败的图像或者图像数量太少或者视野没有完全覆盖到那么这个标定按钮会不可用处理以上问题即可解决。 提取标志点成功图片有各个标志点与xyz坐标轴 提取标志点失败图片没有各个标志点与xyz坐标轴
**总结提取标志点失败原因
1、打光不均有的地方亮有的地方暗 2、标定板的对比度不好提取不出来标志点 3、标定文件读取错误标定板的参数相差太大 4、对焦不清晰
4.得到标定参数
点击标定按钮自动切换到结果界面。 1相机内参 2相机外参 1点击代码生成 2选择标定数据 3点击插入代码 生成的代码 CameraParameters为相机内参 CameraPose为相机外参
3使用标定出的数据矫正图像
1相机畸变矫正
CameraParameters : [0.00367057,-809.403,2.20647e-006,2.2e-006,1136.84,1064.02,2592,1944]
CameraPose : [0.0290517,-0.0118443,0.242762,0.3944,0.507229,287.921,0]
CamParVirtualFixed:CameraParameters
read_image (Image, ImageFiles[Index])
gen_radial_distortion_map(MapFixed,CameraParameters,CamParVirtualFixed,bilinear)
map_image(Image,MapFixed,ImageRectifiedFixed)ImageRectifiedFixed就是进行了畸变矫正的图像
2相机坐标系转化成世界坐标系
一、像素点相机坐标转化成世界坐标系坐标
CameraParameters : [0.00367057,-809.403,2.20647e-006,2.2e-006,1136.84,1064.02,2592,1944]
CameraPose : [0.0290517,-0.0118443,0.242762,0.3944,0.507229,287.921,0]
read_image (Image, ImageFiles[Index])
image_points_to_world_plane (CameraParameters, CameraPose, TmpCtrl_ImageRows, TmpCtrl_ImageColumns, mm, TmpCtrl_WorldX, TmpCtrl_WorldY)二、图片相机坐标转化成世界坐标系
CameraParameters : [0.00367057,-809.403,2.20647e-006,2.2e-006,1136.84,1064.02,2592,1944]
CameraPose : [0.0290517,-0.0118443,0.242762,0.3944,0.507229,287.921,0]
read_image (Image, ImageFiles[Index])
get_image_size (Image, Width, Height)
相机视野宽度
TmpCtrl_RectificationWidth : 79
转换成米单位
TmpCtrl_RectificationWidth : TmpCtrl_RectificationWidth / 1000.0
生成转换矩阵
gen_image_to_world_plane_map (TmpObj_RectificationMap, CameraParameters, CameraPose, Width, Height, Width, Height, TmpCtrl_RectificationWidth / Width, bilinear)
转换
map_image (Image, TmpObj_RectificationMap, TmpObj_RectifiedImage)注意像素转世界坐标系不用先进行畸变矫正因为我们看到在转换成世界坐标系时候用到了CameraParameters已经考虑了相机的畸变。