一、基于MATLAB的双目标定

基于MATLAB的双目标定

  • 一、使用的工具及器件
  • 二、图像收集及预处理
    • (一)图像获取
    • (二)图像处理
      • 1、命名
      • 2、切割
  • 三、标定

一、使用的工具及器件

1、双目摄像头(OV9732)
一、基于MATLAB的双目标定_第1张图片

2、MATLAB2018a
3、pycharm
4、格子图(棋牌格)
5、电脑自带相机

二、图像收集及预处理

(一)图像获取

1、打印出下面的棋牌格子图并固定好
一、基于MATLAB的双目标定_第2张图片
2、将摄像头通过USB线与电脑连接
一、基于MATLAB的双目标定_第3张图片
3、调整分辨率为2560720、1280480、640*240

4、连续拍摄10张照片后,将棋牌格子图调整位置再拍10张照片,总共拍摄40张照片(可多一点)
一、基于MATLAB的双目标定_第4张图片

(二)图像处理

1、命名

打开pycharm,对收集的照片统一命名(当然也可以自己一个个命名,但是会很麻烦)

import os


class BatchRename():
    def __init__(self):
        self.path = r'F:\asd'

    def rename(self):
        filelist = os.listdir(self.path)
        total_num = len(filelist)
        i = 0
        for item in filelist:
            if item.endswith('.jpg'):
                src = os.path.join(os.path.abspath(self.path), item)
                dst = os.path.join(os.path.abspath(self.path), (str(i)) + '.jpg')
                try:
                    os.rename(src, dst)
                    print('converting %s to %s ...' % (src, ('pyp.' + dst)))
                    i = i + 1
                except:
                    continue
        print('total %d to rename & converted %d jpgs' % (total_num, i))


if __name__ == '__main__':
    demo = BatchRename()
    demo.rename()

目的是命名统一,方便后面对图片进行切割和处理

2、切割

首先创建两个文件夹,一个命名为left,一个命名为right,打开MATLAB编写代码进行图片切割

clc;
for i=0:39	%40张照片,根据我自己的命名的方法从0到39
    C=strcat('F:\asd\',num2str(i),'.jpg'); 
    A=imread(C); 
    [m ,n,~]=size(A); 
    n1=n/2;

    p_1=zeros(m,n1,3);
    p_2=zeros(m,n1,3);
    p_1=A(:,1:n1,:);
    p_2=A(:,n1+1:n,:);
    a=num2str(i);
    cd('F:\asdzong\left'); 
    imwrite(p_1,strcat(a,'_l.jpg'));
    cd('F:\asdzong\right');
    imwrite(p_2,strcat(a,'_r.jpg'));
end

效果图如下:
一、基于MATLAB的双目标定_第5张图片

三、标定

1、打开matlab中的APP找到stereoCameraCalibrator运行
一、基于MATLAB的双目标定_第6张图片
一、基于MATLAB的双目标定_第7张图片
2、点击左上角的AddImages并将leftright文件夹地址分别输入,Size of checkerboard square后面填上棋牌格子图的格子尺寸(边长),点击确定,等待出现下面这个图

一、基于MATLAB的双目标定_第8张图片
3、然后点击Calibrate出现下图:
一、基于MATLAB的双目标定_第9张图片
4、去除误差比较大的数据:
一、基于MATLAB的双目标定_第10张图片
5、得出最后结果:
一、基于MATLAB的双目标定_第11张图片
6、打印标定结果(Export Camera Parameters):
一、基于MATLAB的双目标定_第12张图片
一、基于MATLAB的双目标定_第13张图片7、退出stereoCameraCalibrator并保存结果生成一个mat文件
然后就可以利用标定结果进行校正和深度图的获取,在后续文章介绍

你可能感兴趣的:(matlab,python)