zoukankan      html  css  js  c++  java
  • 记录相机成像原理(三)精确标定

    偶然看到一篇论文讲到如何对相机形变进行高精度校准,因为项目需要高精度的定位,因此记录下其实现

    首先对标定图像做单应性变换,标定图像如下:

    可以用cv::findcheeseboard找到所有的白点中心,也可以自己找。

    1. 接下来根据像素当量生成真实物理世界位置点的像素坐标集合。

    2. 然后求出单应性矩阵,具体调用opencv函数,并通过pespectivetranform()生成单应性变换后的点集

    但是,这时候变换后的点集还是和真实点的位置有3-4个像素的差距,但是项目要求精度保证在1个像素以内。

    3. 因此在对其做 非线性多项式拟合,非线性多项式为 f(x) = a0 + a1x + a2x + a3x^2 + a4xy + a5y^ + a6x^3 + a7x^y + a8xy^ + a9y^3

    也就是对于真实点x, y, 求其多项式的映射系数 (a0-a9) (b0-b9).

    可以写成 Ax = b的形式(A 矩阵为点集多项式, 大小为 M x 10), x为系数矩阵,b为真实坐标(上式f(x))

    4.由于M远大于10,要解这个超定矩阵 可以求其投影在其列向量的最小二乘解。先对其做投影变换 A^T A x= A^TA

       用SVD算出其最小特征值对应的特征向量即是其系数

    具体参考如下:

     可以用opencv求出其系数,最后结果如下(绿色点为真实坐标,蓝色为预测坐标,只有一种颜色为重叠):

     本项目像素当量约为0.03mm,检测结果良好

  • 相关阅读:
    如何缓解DDOS攻击
    centos-linux热拔插scsi硬盘
    AWS CLI以及AWS S3 SYNC命令行使用
    CentOS安装VMware Tools
    在VM克隆CENTOS以后,网卡的处理过程
    Centos 的计划任务 crontab
    Windows7无法访问共享文件夹(0x800704cf,0x80070035)解决方法
    Javascript遍历页面控件
    总结一些js自定义的函数
    JS应用(资料很全)
  • 原文地址:https://www.cnblogs.com/ChrisInsistPy/p/11858030.html
Copyright © 2011-2022 走看看