zoukankan      html  css  js  c++  java
  • 机器视觉学习笔记(4)——单目摄像机标定参数说明

    机器视觉学习笔记(4)——单目摄像机标定参数说明

    标签: 机器视觉


    1.针孔摄像机模型

    • 在介绍摄像机标定参数之前,需要先简单说一下针孔摄像机的原理。投影平面到小孔的距离为焦距f物体到小孔的距离为Z,其中物体和投影是倒立相似的关系,下图为针孔摄像机的投影示意图:

    • 如果按照实际的投影关系建立坐标系,那么投影坐标和物体坐标的符号总是相反的,考虑起来不太方便,于是在“数学上”把投影平面平移到其关于小孔对称的位置,这样投影坐标和物体坐标符号就相同了,示意图如下:

    • 根据三角形相似的原理,可以列出如下等式: 

      fZ=ll

    2.摄像机中的坐标系

    • 摄像机中的坐标系有4个,均为右手坐标系,分别记为{world},{camera},{picture},{pixel},下图所示列出了{camera},{picture}和{pixel}坐标系:

    • {world},{camera},{picture}和{pixel}坐标系的坐标用下标来区分,分别是W,c,p,pix

    • {world},{camera},{picture}坐标系单位为长度,一般为mm;{pixel}坐标系单位为像素,一般为pix
    • {world}坐标系为世界坐标系,可以任意指定,其他坐标系都有明确的定义
    • {camera}坐标系为摄像机坐标系,原点在小孔的位置,z轴与光轴重合,Xc轴和Yc轴分别和投影面两边平行
    • {picture}坐标系为图像坐标系,光轴和投影面的交点为原点,Xp轴和Yp轴分别和投影面两边平行
    • {pixel}坐标系为像素坐标系,从小孔向投影面方向看,投影面的左上角为原点Opix,Xpix轴和Ypix轴和投影面两边重合

    3.各个坐标系的坐标转换

    3.1{world}到{camera}

    设某点在{world}坐标系中的坐标为 PW=[xW,yW,zW,]T,该点在{camera}坐标系中的坐标为Pc=[xc,yc,zc,]T,则有 

    Pc=[R0T1]PW(1)

    其中R是正交旋转矩阵: 
    R=r11r21r31r12r22r32r13r23r33(2)

    T是平移矩阵: 
    T=[txtytz]T(3)

    确定R需要3个参数,确定T需要3个参数,共需6个参数,这6个参数称为摄像机的外部参数

    3.2{camera}到{picture}

    根据三角形相似原理,可得 

    xp=fxczcyp=fyczc(4)

    写成矩阵形式 
    zcxpyp1=f000f0001000xcyczc1(5)

    3.3{picture}到{pixel}

    sx表示Xpix方向上单位mm的像素数,单位是pix/mm 
    sy表示Ypix方向上单位mm的像素数,单位是pix/mm 
    x0,y0  表示投影平面中心在{pixel}中的坐标,则有 

    {xpix=x0+xpsxypix=y0+ypsy(6)

    写成矩阵形式 
    xpixypix1=sx000sy0x0y01xpyp1(7)

    3.4{world}到{pixel}

    记 

    {fx=fsxfy=fsy(8)

    分别表示焦距f在Xpix和Ypix方向上的等效焦距,单位是pix,结合(1)(5)(7)(8)式可得 
    zcxpixypix1=fx000fy0x0y01000[R0T1]xWyWzW1(9)

    3.5小结

    单目摄像机需要标定参数就是fx,fy,x0,y0    这4个参数

    • fx,fy,x0,y  0      叫做摄像机的内部参数,因为这些参数只和摄像机有关系,和具体的摄像场景,和世界坐标系没有关系
    • RT内部一共有6个独立的参数,叫做外部参数。外部参数是描述世界坐标系和摄相机坐标系的参数,所以只要世界坐标系和摄相机坐标系的相对位姿发生了变化,RT就会改变,甚至可以说,每一张图片的RT都不一样
    • 单目摄像机标定就是已知像素坐标系下的坐标Ppix和世界坐标系下的坐标PW,列方程组求解内部参数

    4.摄像机透镜畸变

    由于针孔可以透过的光线太少,成像会不清楚,所以往往都会加上凸透镜汇聚更多的光线。但是加上凸透镜以后,会导致成像畸变,所以还需要校正透镜畸变。透镜的畸变主要分为两类,一类是径向畸变,一类是切向畸变

    4.1径向畸变

    径向畸变会产生“鱼眼”现象。成像中心处径向畸变为0,径向畸变随着与成像中心距离增大而增大,在图像边缘处达到最大径向畸变。常常用偶次幂的泰勒公式描述径向畸变 

    {xcerrected=x(1+k1r2+k2r4+k3r6)ycerrected=y(1+k1r2+k2r4+k3r6)(10)

    4.2切向畸变

    切向畸变由透镜和成像平面不平行引起。常用如下公式描述 

    {xcerrectedycerrected=x+[2p1y+p2(r2+2x2)]=y+[p1(r2+2y2)+2p2x](11)

    4.3小结

    单目摄像机透镜畸变校正需要确定的就是k1,k2,k3,p1,p2    这5个参数,如果“鱼眼”现象不明显的话,常常使用k1,k2 来校正径向畸变

    5.总结

    • 单目摄像机标定和校正最终将获得9个参数,内部参数是4个,畸变校正参数是5个
    • 单目摄像机标定常用的工具有OpenCV库和Matlab摄像机标定工具箱

    具体如何使用OpenCV标定单目摄像机(含源代码),请参考下一篇博文机器视觉学习笔记(5)——基于OpenCV的单目摄像机标定

    转自:http://blog.csdn.net/xuelabizp/article/details/50314633

  • 相关阅读:
    《Machine Learning in Action》—— 白话贝叶斯,“恰瓜群众”应该恰好瓜还是恰坏瓜
    《Machine Learning in Action》—— 女同学问Taoye,KNN应该怎么玩才能通关
    《Machine Learning in Action》—— Taoye给你讲讲决策树到底是支什么“鬼”
    深度学习炼丹术 —— Taoye不讲码德,又水文了,居然写感知器这么简单的内容
    《Machine Learning in Action》—— 浅谈线性回归的那些事
    《Machine Learning in Action》—— 懂的都懂,不懂的也能懂。非线性支持向量机
    《Machine Learning in Action》—— hao朋友,快来玩啊,决策树呦
    《Machine Learning in Action》—— 剖析支持向量机,优化SMO
    《Machine Learning in Action》—— 剖析支持向量机,单手狂撕线性SVM
    JVM 字节码指令
  • 原文地址:https://www.cnblogs.com/alan666/p/8311923.html
Copyright © 2011-2022 走看看