准备工具:MATLAB2021A,python,opencv3.4.2.16
图像处理一系列工作往往都需要用到不同、特殊的相机,这些相机不同于日常生活中的普通相机,我们往往需要对其进行标定,以及利用标定参数对所得到的图片进行矫正。
目前业界已有成熟的标定方法——张正友棋盘标定法,这也是我们所常用的。相机标定原理和畸变来源在此就不过多赘述,此篇文章只给出相关软件在相机标定中的使用。
原理部分请自行阅读《视觉SLAM十四讲从理论到实践 第二版》118页至128页
MATLAB部分
提前准备一块标定板,或者使用命令行生成棋盘格
close all;
clear all;
clc;
width=1024 ; %pattern的宽
height=768 ; %pattern的高
img_final=zeros(height,width);
reinforceconner=0 ;%是否加强角点
row=8; %pattern中棋盘格的行数
col=12 ; %pattern中棋盘格的列数
length=60; %pattern中棋盘格的大小
org_X=(height-row*length)/2; %pattern关于纵轴方向的位置,默认放在中间
org_Y=(width-col*length)/2; %pattern关于横轴方向的位置,默认放在中间
color1=1;
color2=color1;
img=zeros(row*length,col*length);
for i=0:(row-1)
color2=color1;
for j=0:(col-1)
if color2==1
img(i*length+1:(i+1)*length-1,j*length+1:(j+1)*length-1)=color2;
end
%不加的话,可以注释掉
%
color2=~color2;
end
color1=~color1;
end
img_final(org_X:org_X+row*length-1,org_Y:org_Y+col*length-1)=img;
img_final=~img_final;
figure;imshow(img_final);
imwrite(img_final, 'cheesBoard.bmp','bmp');
如果使用标定版则如下: