OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 80087|回复: 59

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

[复制链接]
发表于 2011-8-11 17:38:45 | 显示全部楼层 |阅读模式
各位大侠,本人用1组35张图片,标定相机参数。分别用MATLAB和OPENCV分别标定,标定结果基本一致。
现在,我希望从标定的一副图像中(使用这幅图像标定的相机外参),计算图像上几个红点之间的在3维世界坐标系下的距离(mm)。

相机标定的结果:
1、        相机内参:
Focal Length:      fc = [ 854.37091   855.65897 ] ?[ 6.10263   6.00058 ]
Principal point:     cc = [ 369.52264   296.19708 ] ?[ 5.51474   5.45121 ]
Skew:alpha_c = [ 0.00000 ] ?[ 0.00000  ]   => angle of pixel axes = 90.00000 ?0.00000 degrees
Distortion: kc = [ -0.09667   0.12791   -0.00171   -0.00139  0.00000 ] ?[ 0.02533   0.19119   0.00167   0.00185  0.00000 ]
Pixel error:          err = [ 0.20807   0.26036 ]
相机的传感器尺寸:
size        Width/mm        Height/mm        Width/(像素)        Height/(像素)        Sx        Sy
1/2’        6.4                         4.8                           656                          492                   9.75um/p        9.75um/p

2、对本图的相机外参:

Translation vector:  Tc_ext = [-69.316901          -51.302449          237.121385 ]
Rotation vector:    omc_ext = [ -1.923062          -1.999779          -0.515738 ]
Rotation matrix:    Rc_ext = [-0.042297          0.998969          0.016462
                          0.880689          0.029498          0.472776
                          0.471803          0.034495          -0.881029 ]
Pixel error:        err = [ 0.31120          0.39245 ]

3.通过图像处理方法提取关键点坐标,分别获取了图像上两个红色圆圈所代表的位置在图像上的坐标(像素):W1(108.69794,4.6928058),W2(226.48865,8.7926397),在3维空间中,W1和W2两点之间的物理实际距离为30mm。
现想通过将W1和W2坐标从图像坐标系变换到世界坐标系,计算两点间的距离,是否和实际结果对应,之后,在这个标定板所放置的物理位置上进行产品尺寸的精确测量。这种应用在商用机器视觉软件HALCON中已有应用。我想通过OPENCV实现。

方法1.不考虑镜头畸变,由像素坐标与毫米坐标的关系得:
回复

使用道具 举报

 楼主| 发表于 2011-8-12 09:57:00 | 显示全部楼层

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

没有人帮忙吗???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-8-15 18:01:58 | 显示全部楼层

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

我用OPENCV中的矫正函数,矫正图像后,提取关键点坐标,计算的结果也还是和实际对不上,误差3mm左右~~怎么办啊~~~
回复 支持 反对

使用道具 举报

发表于 2011-8-25 01:41:23 | 显示全部楼层

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

你好 ,我用你标定出来的相机矩阵M,以及图像坐标W1,W2,W3,W4在没有进行畸变校正的情况下,计算对应的三维坐标,三个距离误差w1w2,w2w3,w3w4分别为1.28mm,0.55mm,0.34mm.我是令z=0,直接求解三维坐标的x和y两个坐标的。我个人认为在求解x和y时没必要用最小二乘法思想,似乎也不能用。希望对你有所帮助吧!

点评

请问您是用opencv的相关函数计算得吗?您是怎样做到的?  发表于 2014-4-22 17:04
回复 支持 反对

使用道具 举报

发表于 2011-11-28 11:38:58 | 显示全部楼层

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

你的畸变参数的标定结果:
  Distortion: kc = [ -0.09667 0.12791 -0.00171 -0.00139 0.00000 ] ?[ 0.02533 0.19119 0.00167 0.00185 0.00000 ]
其中第二、三、四项的不确定度跟它本身的值相差不大,可以将它们忽略,在matlab中令est_dist = [ 1 ; 0 ; 0 ; 0 ; 0 ];即只考虑径向畸变中第一个参数k1,忽略其他四个畸变参数,这样标定的结果会更准确!
回复 支持 反对

使用道具 举报

发表于 2011-12-7 17:25:46 | 显示全部楼层

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

想从图像获得实际的三维坐标,必须要知道该坐标点的Z轴的实际距离吧?
回复 支持 反对

使用道具 举报

发表于 2011-12-26 14:51:21 | 显示全部楼层

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

我也在做双目距离测量问题。也是距离相差3-5mm.不知道楼主最后怎么解决的?
回复 支持 反对

使用道具 举报

发表于 2012-2-14 18:57:08 | 显示全部楼层

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

我是做单目摄像机测距的,也遇到了同样的问题。是不是计算的距离和实际距离存在线性关系?
顺便问一下,坐标轴你怎么确定的。X Y Z分别是指向什么方向,原点在哪里?
回复 支持 反对

使用道具 举报

发表于 2012-2-15 17:05:59 | 显示全部楼层

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

楼主   你标定的参数误差不大呢
    求指导啊!
    相机内参:
    Focal Length: fc = [ 854.37091 855.65897 ] ?[ 6.10263 6.00058 ]
       我标定出来的参数:
    Focal Length:          fc = [ 859.09190   942.16956 ]  [ 10.25117   10.87475 ]
       误差很大也!!
    现在最大的问题就是那个外参数
    那个表示高度的参数   与实际的相差很大呢
    这困惑了我很久呢   指点指点下哇!!
回复 支持 反对

使用道具 举报

发表于 2012-3-29 16:17:56 | 显示全部楼层

相机标定后,从图像坐标(像素)向物理坐标的转换计算,

修正畸变的公式不对把  应该k1 k2 p1 p2都有用
不考虑畸变肯定误差要大一点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-4-29 16:37 , Processed in 0.016212 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表