opencv设置相机参数 调整相机高度会影响内参吗

近期使用opencv设置相机参数进行单相機标定采用张正友的棋盘格网标定方法,标定过程中的注意事项如下:

1. opencv设置相机参数检测棋盘格角点函数输出角点坐标顺序有两种可能,顺时针或者逆时针确保每张图片检测出的角点顺序都一致。

2. 标定计算出的每张相片的外参数是指物方坐标系经过旋转和平移,转換到像空间坐标系的参数物方坐标系圆点在棋盘格第一个角点处。

3. 标定前需要输入棋盘格尺寸(单位一般用毫米)用于计算每个棋盘格角点在物方坐标系下的坐标。

4. 若自己打印棋盘格不要让每个格子的尺寸太大,否知会导致提取角点失败优先保证有较多的行列数。

这几天一直在搞相机的标定过程中遇到了许许多多的问题,为了让广大自动化行业的小白避免踩坑用这个帖子总结一下相机的标定。接下来我就给大家介绍一下标定侧重点在怎么做。

首先镜头有畸变也就是说照出的图像与实际不符产生了形变。即使号称无畸变的工业镜头也是有千分之几的畸变率嘚上个图告诉大家畸变

其次镜头与相机无论你的机械结构精度多高,也不容易或者说没办法将相机安装的特别正那相机安装不正也是會导致误差的。大家想知道具体数学模型的话可以搜一下相机标定的理论方面的知识我侧重怎么做。

2.怎么使用halcon进行相机内外参标定

首先相机连接电脑,打开halcon连接相机(这里不一定要连接相机,用相机照好的图片也可以)

1.相机连好电脑,用相机厂家软件打开相机检查一下相机是否正常。


2.接下来使用halcon连接相机


1.生成标定板参数文件

点击助手点击打开新的Calibration。


**总结提取标志点失败原因

1、打光不均有的地方亮有的地方暗

点击标定按钮,自动切换到结果界面

(3)使用标定出的数据矫正图像
2相机坐标系转化成世界坐标系

一、像素点相机坐标轉化成世界坐标系坐标

二、图片相机坐标转化成世界坐标系

注意:像素转世界坐标系不用先进行畸变矫正,因为我们看到在转换成世界坐標系时候用到了CameraParameters已经考虑了相机的畸变。

希望能够帮到你哦如果帮到了你记得给我点个赞,在CSDN页面的右上角有个点赞标志

  单目定位和双目定位的选择我觉得主要还是成本和时间的考虑。之前也尝试过双目定位感觉要更精准些,但双目测距需要对两幅图像进行图像变换和极线匹配稍微耗时了一些。这几天尝试了一下单摄像头进行测距定位主要有两个思路:
  1.定位测量插值得到每个像素的实际坐标  
  该方法总觉得有很大的问题:一个是摄像头安装后就必须固定不动,稍微的旋转都会导致之间测量的像素点对应的坐标偏移另一个是人工测量的工程量之大,对于像素的摄像头准确的测量就应该是130万个点,而就算我们按米来分割地面10*20m2的地面也要测量200个点,就算可以通过算法自动识别做200个标志就算测量画线也是令人头疼的。考虑到针孔成像模型的等比例放大我们通过直接打印布满等距阵列圆点的纸来进荇测量。
  根据相似三角形的等比例关系有:


  如此一来,可以在较高距离测量等距阵列点(如标定板)经过插值,再进行等比例放大即可得到每个像素点对应的实际地面的坐标
  处理的示意图如下:

  这样操作可以省去人工在地面测量绘画标志。测量好纸上嘚点距后再进行H/h的放大就可以得到像素对应实际地面的坐标但实际操作过程中遇到的问题是图像上边缘的梯形失真过于严重,导致打印紙上的标志点不容易识别因此还需要准备不同距离的等距阵列圆点图。

  2.根据相似三角比例计算出对应像素点的实际坐标  
  这個方法对摄像机标定的要求比较高同时要求镜头本身造成的畸变就比较小,但总体来说这种方法的可移植性和实用性都较强其主要的思路还是小孔成像的模型。
   模型一:假设测量的点都在Y轴上此时无X轴分量  
  该图主要有三个坐标系,分别是图像坐标系UO1VO2為原点的摄像机坐标系,世界坐标系XO3Y(相关的内容我就不复述了,不懂的百度和知乎上都有搜搜相机标定的知识)
  我们可以看到,世界坐标中的点通过光轴成像在图像坐标的点是成比例的其比例媒介就是相机镜头中心在图像上的像素点O1与其在世界坐标中的实际点M,通过推导可以求解O3P的长度(注意,由于相机安装一般都有误差所以镜头中心点不一定是图像的中点,所以ucentervcenter不一定为0) 

  已知量:摄像机高度H
      图像坐标中心对应的世界坐标点与摄像头在y轴上的距离O3M
      镜头中心点的图像坐标(ucentervcenter)
      測量像素点的图像坐标P1(u0      
      实际像素的长度xpix
      实际像素的宽度ypix。
      摄像头焦距f
      (镜头中心点图像坐标焦距,像素长宽都可以由标定直接求解出来通过halcon的标定助手可以很容易的得到,opencv设置相机参数也有相应的程序)

      β=α?γ

  这样就可以得到垂直方向的坐标 Y=O3P
   模型二:假设测量的点有X轴、Y轴分量  

  针对以下模型图我們将进行说明:
  已知量:摄像机高度H
      图像坐标中心对应的世界坐标点与摄像头在y轴上的距离O3M
      测量像素点的圖像坐标P1(u0Q1uv      
      实际像素的长度xpix
      实际像素的宽度ypix
      摄像头焦距f
(y轴方向计算和仩一个模型相同x轴计算是y轴坐标通过比例计算得到)

      β=α?γ

  这样就可以得到垂直方向的坐标 Y=O3P

?????????????

  这样就可以得到垂直方向的坐标 X=PQ
   模型三:假设测量的点有X轴、Y轴分量,且物体有高度h    
  针对以下模型图峩们将进行说明:
  由于物体有高度因此还需要进行一个投影变换,其实也还是相似变换 
  设真实的坐标(X,Y)模型二求出的坐標(X,Y)
   模型评价    

  实际操作过程中,发现该模型在畸变较小的图像中误差较小且在矫正畸变后的图像中测量的图像坐标可以嘚到更准确的值。另一方面在实际操作过程中,发现由于镜头有稍微歪曲或者内置感光区域安装歪了可能导致我们找不到真正的X,Y轴,所以在测量验证的时候会有稍许误差但即便如此,在10米的定位下误差也不到5%,效果还是可以接受的如果有人知道如何找到真正的X,Y轴,请博客留言告知一下先谢谢了。

我要回帖

更多关于 opencv设置相机参数 的文章

 

随机推荐