Coder Social home page Coder Social logo

calibcamera's Introduction

单目相机标定方法从理论到实践

帮助文档:

  1. 单目相机成像原理.pdf
  2. 程序帮助文档.pdf

同样提供 md 文件,在 doc 文件夹中,可以下载下来,用Typora打开即可,

单目相机的标定是所有三维重建算法的基础,所以,大致明白单目相机的成像原理,以及基于OpenCV的标定流程,对于我们后序深入地学习三维重建算法至关重要。

相机标定的具体原理比较复杂,但好在OpenCV很多过程都帮我们封装好了,基于张正友标定发的单目相机标定具体步骤如下:

  1. 准备标定图片(不同位置、角度、姿态下拍摄,至少需要3张,以10~20张为宜)
  2. 对每一张标定图片,提取角点信息,并进行亚像素角点优化(绘制相应图像)
  3. 调用张正友标定方法,对相机进标定,也就是计算内参和畸变系数
  4. 对标定结果进行评价(重投影误差)
  5. 利用标定结果(内参、畸变系数),对任何输入的图像进行矫正

相信在明白了理论之后,阅读我们的代码应该非常容易:尽量命名做到望文知义、封装做到了面对对象、增加了额外注释。

使用方法

  1. OpenCV安装与配置(尽量不需要选择特别新的OpenCV版本,很难编译通过)
  2. Clion安装与配置(Ubuntu是相类似的)
  3. 修改相应的配置路径
    • CMakeList.txt,主要是OpenCV包的路径
    • main.cpp,里面标定图片文件夹路径,以及测试图片路径

之后点击运行即可(reload cmake project),当然你也可以用Visual studio来运行,因为是Cmake来管理环境变量的,所以迁移较为方便。代码已经在Windows、Ubuntu18.04下测试,能够运行。

图片名称

图片名称

图片名称

基础知识(简要回顾)

简要的原理回顾如下:相机模型如下,主要包含四个坐标系:

img

四个坐标系的转换关系如下:

图片名称

而我们主要关心的是从世界坐标系到像素坐标系的变换,它们的公式如下:

图片名称

而相机成像过程中存在着径向畸变和切向畸变,合并后:

图片名称

为了之后三维重建算法的精确性,我们必须对这些畸变进行矫正。我们可以通过张正友标定法得到相机的畸变系数,除此之外还有它的内参。获得了这两个参数,我们就能对相机的整个成像过程建立较为准确的映射关系(至少是单向的)。

感谢

标定用的图片搜集自互联网,感谢原作者!邮箱:[email protected],有问题欢迎提问!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.