TSAI相机标定(matlab)
在做一维测量、三维测量之前,必须先对视觉系统进行标定;这里给出由matlab实现的TSAI标定方法,当然matlab里面也有自带的张正友标定法模块。
直接上代码:
%清空变量,关闭窗口
clear;close all;
%读取图像
img=imread('1.bmp');
I1=imread('1.bmp');
[M,N]=size(I1);
%使用最大类间方差法找到图片的一个合适的阈值
level=graythresh(I1);
%设level为阈值,将图片二值化
I1=im2bw(I1,level);
%开操作一般应用在二值图像分析处理的基础上,使对象的轮廓变得光滑,断开狭窄的间断和消除细的突出物。
%主要用来保留某种结构操作,消除其他不符合结构区域的前景区域像素。
%创建半径为2的圆盘结构元素
se=strel('disk',1);
%用创建好的结构元素对图形开操作
openI1=imopen(I1,se);
%把连通域面积小于4个像素的都删掉
L=bwareaopen(I1,4);
% 获得图像99个联通域的属性(面积大小,重心位置,包围该区域的最小矩形),生成一个结构体stats
stats = regionprops(L, 'basic');
% 用CAT函数将stats结构体中的重心数据提取出来
zhongxin=cat(1,stats.Centroid);
[M,N]=size(zhongxin);
figure(1)
imshow(L),title('二值化后图像中心坐标'),hold on
for i=1:M
plot(zhongxin(i,1),