中电网移动|移动中电网|高清图滚动区

LabVIEW编程基础:标定相机参数

一、Labview程序中控制相机参数

在Labview中控制相机参数比在NI MAX中去控制相机参数要方便得多,所以研究了下怎么在Labview中去控制相机参数。本文所使用Labview版本为2015,相机信型号AVT的G-201C,gige接口。

1、利用IMAQdx Enumerate Attributes.vi枚举属性函数找到对应参数字符串

如图1,创建 IMAQdx Enumerate Attributes.vi枚举属性函数,并创建一个显示控件。

图1

枚举属性函数可以枚举相机支持的所有属性。枚举的数据包含了属性的类型、是否允许读写、属性名称等。

Session In为相机摄像头的引用输入。

Session Out相机引用输出。

Attribute Information Array属性信息数组:显示所有枚举出来的信息。

2、在显示控件中找到对应参数字符串

通过显示控件,找到需要修改参数的对应字符串,如图2所示。本文中以修改曝光时间为例。

图2 枚举函数显示控件

从图示知控制曝光时间的字符串为Controls::Exposure::ExposureTimeAbs。

3、创建属性节点

通过第二步得到的字符串创建对应属性节点。

图三 创建属性节点

二、labview 标定相机参数

标定相机的参数是labview工具箱对相机参数的标定只能得到相机的焦距,具体的畸变系数什么的,通过这个工具箱我还没有得到,但是他提供的相机内参的函数是可以得到的,今天先把这个工具说完,等以后就开始用labview的代码去讲了,然后还会穿插一些原理性的东西,就想这个相机标定,其实网上的原理已经都讲烂了,但是说实话我还没看到哪篇文章把这部分的原理说的很直白,都是很官方的各种公式,我当时看的时候也很吃力,下一步准备把原理这块简单说说,当然今天还是把这个工具说完。上图

今天要说的就是这个,相机模式,下边已经解释得挺明白了,用5幅图片得到相机参数以及镜头的畸变。我这水平都能翻译过来,嗯,你也可以好,下一步。

这里会发现多一个reference,参考的意思,也就说会以这个平面为基准来修正透视畸变,所以最好选择跟镜头光轴垂直的图像,这个参考平面的选择还是有影响的,这里我选择了图1.基本上和光轴垂直。下一步。

这里对特征点进行提取,注意箭头部分,5张图片是需要分别提取特征的,而且没张图片提取特征点的方式和阈值都是独立的,好的 ,我再放一张看一下吧。

一般阈值什么都不需要改,我也只是改了一下区域,每张图片都要重新调整一下。我就不贴5张图了。下一步

到这一步就跟以前差不多了,还是选择间隔,下一步。

可以看到多了两个参数,一个是焦距,一个光学中心,也就是光轴位置。单位都是像素,理论上如果知道图像传感器一个像素点的尺寸我们是可以计算出焦距的长度的,但是我用的这个就是普通的网络摄像头,并不是工业相机,所以相机的一些真实参数我还真就不知道,所以,基本上我就相信这个值是可以得到了,因为上边也会给出一些误差参数,我们也可以跟据这个误差参数去衡量一下自己的标定结果。如果你用的是工业相机,是可以得到真实的相机焦距的,下一步。

检查标定结果,保存就好了。

猜你喜欢
中电网移动|移动中电网|频道导航区