双目相机标定流程(使用opencv采集图像、使用matlab标定相机参数)

一、使用opencv采集双目图像

1.准备标准棋盘并打印

这里我们使用OpenCV提供的sample程序中的标定图片,图片位于opencv(C++版本)的安装路径:opencv\sources\samples\data下。使用打印机打印图片,注意不要选择适应边框,直接原大小打印,这样每一个小方格子的边长就是26mm(实际测量)

2.摄像头采集双目图像并且保存

标定图片需要使用标定板在不同位置、不同角度、不同姿态下拍摄,以10~20张为宜。标定板需要是黑白相间的矩形构成的棋盘图,制作精度要求较高。下面代码是使用opencv读取双目照片,进行分割之后将左右相机的的照片分别保存道相应的文件夹下。用户在使用的时候只需要修改文件夹放置的位置即可。按C键采集一次图片

#include 
#include 
#include 
#include 
#include 

using namespace cv;
using namespace std;

#define WIDTH 2560
#define HEIGHT 720
int main() 
{
	char c = 0;
    VideoCapture capture(0);
    Mat cam;
    int i = 0;
    if (!capture.isOpened())
    {
        cout<<"can not open the camera"<> cam
    {
        int w, h ;
        w= cam.cols;  //获取相机画面宽高
        h= cam.rows;      
        imshow("cam",cam);        
        Rect rect0(0, 0, w/2, h); //(x,y,width,height)定义矩形框截取
        Mat caml = cam(rect0); //截取左摄像头画面
        Rect rect1(w/2, 0, w/2, h);
        Mat camr = cam(rect1); //截取右半边

        c = waitKey(10);
        if(c == 'c') //按c键采集图像
        {
			num = to_string(i);
            fileNameL = pathNameLeft + num + formatName;
			fileNameR = pathNameRight + num + formatName;
            imwrite(fileNameL, caml);
            imwrite(fileNameR, camr);
			++i;
            cout<<"capture ok!"<

二、使用matlab2018标定相机参数

 

1.内参

IntrinsicMatrix对应内参,注意这个和OpenCV中是转置的关系,注意不要搞错。 

2.畸变参数

RadialDistortion:径向畸变,摄像头由于光学透镜的特性使得成像存在着径向畸变,可由K1,K2,K3确定。

这里写图片描述

NOTE:

  • matlab选择3 Coefficients,则是K1,K2,K3三个参数非线性拟合;畸变不严重的情况下可以选择2 Coefficients,这样径向畸变就由K1,K2确定,K3为0。
  • 对于畸变较小的图像中心区域,主要是k1起作用;对于畸变较大的边缘区域主要是k2起作用。普通相机这两个系数就够用了,对于鱼眼相机这种畸变特别大的才用的上第三个参数k3  

TangentialDistortion:切向畸变,由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数P1,P2确定。

这里写图片描述

opencv使用时,需要注意参数的排放顺序,即K1K2P1P2K3。千万不要以为k是连着的。 

这里写图片描述

 

 

ref:

https://blog.csdn.net/ktigerhero3/article/details/83039964

https://blog.csdn.net/moonshapedpool/article/details/83105526

https://blog.csdn.net/yanli33/article/details/60478023

https://blog.csdn.net/Loser__Wang/article/details/51811347

http://www.cnblogs.com/chay/p/7551151.html

https://www.cnblogs.com/voyagee/p/7524946.html

你可能感兴趣的:(双目相机标定流程(使用opencv采集图像、使用matlab标定相机参数))