基于靶标平面相机参数动态标定Matlab程序
张正友标定法matlab代码

张正友标定法是相机标定中常用的一种方法,通过该方法可以实现相机内外参数的标定。
在使用张正友标定法进行相机标定时,需要编写相应的matlab代码来实现算法。
下面将介绍如何使用matlab实现张正友标定法,并给出相应的matlab代码。
1. 准备标定板图像首先需要准备一组包含标定板的图像,标定板上应具有特定的特征点,例如棋盘格。
这些图像将用于计算相机的内外参数。
2. 读取标定板图像使用matlab的imread函数读取准备好的标定板图像,将图像存储为一个cell数组。
```matlabimages = cell(1,N);for i = 1:Nfilename = ['image',num2str(i),'.jpg'];images{i} = imread(filename);end```3. 提取标定板角点利用matlab的detectCheckerboardPoints函数提取标定板图像中的角点坐标,将提取的角点保存到一个cell数组中。
```matlabimagePoints = cell(1, N);for i = 1:NI = images{i};[imagePoints{i}, boardSize] = detectCheckerboardPoints(I); end```4. 标定相机参数使用matlab的estimateCameraParameters函数对提取的角点进行相机参数标定,得到相机的内外参数。
```matlab[cameraParams, imagesUsed, estimationErrors] = estimateCameraParameters(imagePoints, worldPoints,'EstimateSkew', true, 'EstimateTangentialDistortion', true);```5. 查看标定结果可以利用标定得到的相机参数对新的图像进行矫正,并查看标定结果的精度。
三点标定法 matlab

三点标定法是一种常用的标定相机内部参数和外部参数的方法,可以通过拍摄已知标定板的图像来计算相机的内部参数和外部参数。
在MATLAB 中,可以使用以下步骤进行三点标定法的标定:
1. 准备标定板:选择一个已知尺寸和标定信息的标定板,例如棋盘格标定板。
将标定板放在相机前,使其完全覆盖相机的成像区域。
2. 拍摄标定板图像:使用相机拍摄标定板图像,确保图像清晰、无畸变。
3. 提取标定板特征点:使用特征点检测算法(如SURF、SIFT、ORB 等)从图像中提取标定板的特征点。
4. 计算基础矩阵:使用FindFundamentalMat 函数计算相机和标定板之间的基础矩阵。
5. 计算本质矩阵:使用RANSAC 算法计算相机的本质矩阵。
6. 计算相机参数:使用本质矩阵和基础矩阵计算相机的内部参数和外部参数。
7. 可视化标定结果:将标定结果可视化为相机的内部参数矩阵和外部参数矩阵。
需要注意的是,三点标定法需要拍摄至少三张标定板的图像,以确保标定结果的准确性。
同时,在拍摄图像时需要保持相机的位置和朝向不变,避免因相机位置和朝向的变化导致标定结果不准确。
相机标定方法 matlab

相机标定方法 matlab相机标定是计算机视觉中的重要部分之一,它是通过测量图像上的物体点和其在相机坐标系下对应的点坐标,来估算相机内部参数和外部参数的过程。
相机内部参数通常包括焦距、主点位置和畸变参数等,它们决定了图像中的物体大小和位置。
相机外部参数包括相机的旋转和平移参数,它们决定了物体在相机坐标系下的坐标。
在 MATLAB 中,相机标定是通过图像处理工具箱中的“camera calibration”函数实现的。
在执行相机标定之前,需要准备一组称为标定板的物体,并在不同位置和姿态下拍摄多个图像。
标定板可以是长方形或正方形的棋盘格,也可以是自定义形状的物体,但是必须有已知的三维坐标和相应的二维坐标对。
以下是一个基本的相机标定流程,详细介绍了如何使用 MATLAB 实现相机标定。
1. 准备标定板需要准备一个标定板。
标定板可以是一个黑白棋盘格或自定义形状的物体。
在这里,我们将使用一个 9x7 的黑白棋盘格。
2. 采集标定图像接下来,需要拍摄多个标定图像,并记录标定板在每个图像中的位置和姿态。
对于每个图像,需要至少拍摄 10 张,以确保图像的质量和特征的稳定性。
可以使用不同的相机设置,例如不同的焦距、光圈和曝光时间等,来捕捉标定板的不同姿态。
3. 读取图像和标定板角点在 MATLAB 中,可以使用“imageDatastore”函数读取标定图像并创建一个图像数据存储对象。
接下来,可以使用“detectCheckerboardPoints”函数来检测标定板上的角点。
这个函数会返回一个 Nx2 的矩阵,其中 N 是标定板上检测到的角点数。
4. 定义标定板上角点的空间坐标现在需要定义标定板上角点的空间坐标。
这些坐标可以使用“generateCheckerboardPoints”函数自动生成。
该函数会返回一个 Nx3 的矩阵,其中N 是标定板上的角点数,每一行代表一个角点的空间坐标。
5. 进行相机标定用于相机标定的主要函数是“cameraCalibration”函数。
matlab相机内参数标定原理 -回复

matlab相机内参数标定原理-回复导语:相机内参数标定是摄影测量中的一项重要工作,它通过确定相机的内部参数来提高图像的质量和精度。
本文将介绍相机内参数标定的原理和步骤,以及在Matlab中进行相机标定的具体实现。
一、相机内参数标定的意义和概述(150字)相机内参数是指相机的内部构造和特性,包括焦距、主点位置、像素尺寸、畸变等。
标定相机的内参数可以提高图像的质量和精度,用于计算三维空间中点的坐标。
相机内参数标定是摄影测量的关键步骤之一,对于计算机视觉、机器人导航等应用领域起着重要的作用。
二、相机内参数标定的原理(300字)相机内参数标定的原理是基于针孔成像模型,即相机捕捉到的物体影像是通过相机的中心投影到成像平面上的。
由于相机存在像素尺寸不一致、镜头畸变等问题,所以需要通过标定来确定相机的内参数。
相机内参数标定主要包括焦距、主点位置、径向畸变和切向畸变等参数的确定。
其中,焦距和主点位置确定相机的相对尺度和相对位置,径向畸变参数通过拟合成像圆的畸变效果实现,切向畸变参数通过拟合成像椭圆的畸变效果实现。
标定相机的过程通常需要采集多组不同位置和姿态的标定板图像,并通过标定板上已知的特征点来计算出相机的内参数。
这些特征点通过角点检测算法获取,然后通过最小二乘法拟合得到相机的内参数矩阵。
三、Matlab相机内参数标定的步骤(600字)在Matlab中,可以使用Computer Vision Toolbox提供的函数来实现相机内参数标定。
以下是一步一步的实现过程:1. 准备标定板:选择一个标定板,常见的有棋盘格、圆点标定板等。
确保标定板的特征点能够被准确检测到。
2. 采集标定板图像:在不同位置和姿态下,使用相机采集多组标定板图像。
图像的数量越多,标定结果越准确。
3. 检测标定板角点:使用角点检测算法,如Harris角点检测或亚像素角点检测,来获取标定板图像中的特征点坐标。
4. 优化角点坐标:使用亚像素精确化算法对检测到的角点坐标进行优化,提高标定的精度。
Matlab摄像机标定工具箱的使用说明

摄像机标定工具箱1.1 Matlab 摄像机标定工具箱工具箱下载:/bouguetj/calib_doc/download/index.html说明文档:/bouguetj/calib_doc/安装:将下载的工具箱文件toolbox_calib.zip 解压缩,将目录toolbox_calib 拷贝到Matlab 的目录下。
采集图像:采集的图像统一命名后,拷贝到toolbox_calib 目录中。
命名规则为基本名和编号,基本名在前,后面直接跟着数字编号。
编号最多为3位十进制数字。
1.1.1 标定模型内参数标定采用的模型如式(1-1)所示,Brown 畸变模型式(1-2)所示。
⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11//100011100c c in c c c c ys x y x M z y z x v k u k k v u (1-1) 式中:(u , v )是特征点的图像坐标,(x c , y c , z c )是特征点在摄像机坐标系的坐标,k x 、k y 是焦距归一化成像平面上的成像点坐标到图像坐标的放大系数,k s 是对应于图像坐标u 、v 的摄像机的x 、y 轴之间不垂直带来的耦合放大系数,(u 0, v 0)是光轴中心点的图像坐标即主点坐标,(x c 1, y c 1)是焦距归一化成像平面上的成像点坐标。
k s =αc k x ,αc 是摄像机的实际y 轴与理想y 轴之间的夹角,单位为弧度。
⎪⎩⎪⎨⎧++++++=++++++=1142123654221112124113654221112)2()1()2(2)1(c c c c c c c c c d c c c c c c c c c c d c y x k y r k r k r k r k y y x r k y x k r k r k r k x x (1-2) 式中:(x c 1d , y c 1d )是焦距归一化成像平面上的成像点畸变后的坐标,k c 1是2阶径向畸变系数,k c 2是4阶径向畸变系数,k c 5是6阶径向畸变系数,k c 3、k c 4是切向畸变系数,r 为成像点到摄像机坐标系原点的距离,r 2= x c 12 + y c 12。
基于MATLAB的棉株识别系统摄像头标定研究

在图像平面 Ⅱ : 的成像点 P 2 的坐标为( x y , z ) , 则有 :
I x 1一x 2一
j z J z 2,
l I : 丝: 丝
z 1 z 2 f
( 1 )
。
料 1 【 1 y J l = l 【 f 0 0 , 0 1 8 0 J I 1 f l 『
㈩ ( 3 )
式中 f 为摄像机焦距 ,
世界坐标 系是用来描述摄像机所处 的位置 , 它
由X w, Y w, Z w三个 轴组 成 , 其刻 度单 位 为 m m, 如 图 5 。 摄像 机 坐标 系与 世界 坐标 系 的关 系可 以用旋 转矩
阵 R和平 移 向量 丁 描述 , 空 间某 点在 世 界坐 标 系 的
U
( u 0 , V o ) x
V
『 1
y
料 X w } ㈦
式中Z e 为比 例常数为 1 , M 1 = l 0 v 。 o I ;
图 3 图 像 像 素 及 物 理 坐标 图 4 摄 像 机 坐 标 及 世 界 坐标
图像物理坐标系中的任一点( x , y ) 转换成像素坐
( 4 )
正 向焦距 ( f ) 处, 图像 像素 坐 标 系 ( u , v ) 是 以图像 左 上 角点 为原 点 , 以像 素为 坐标单 位 的直 角坐标 系 。u 、 v 分 别 表 示 该 像 素 在 图像 像 素 坐 标 系 中 的列 数 和行 数 。图像 物理 坐标 系 ( x , y ) 是 以光轴 与像平 面 的交 点 为原 点 0 . , 以m m 为单 位 的直 角坐 标 系 ,x , y 轴 与 图 像 像素 坐标 系 中的 u , v 轴平 行 。
相机标定实用方案

相机标定实⽤⽅案相机标定实⽤⽅案相机标定就是确定相机内参和外参的过程,其结果精度会直接影响视觉系统后续⼯作的准确性。
⼀.OPENCV⽅法在opencv中提供了⼀组函数⽤于实现相机的标定,标定返回的值包括:相机内参矩阵(fx fy xc yc)、相机外参矩阵(R t)以及畸变矩阵。
标定的步骤如下:1. 准备棋盘格,棋盘格图⽚可以⾃⾏打印,以下使⽤10*7⽅格的棋盘格,交点则为9*6,棋盘格的⼤⼩1mm,即 gridsize=12. 拍照,拍照的原则是多⾓度,根据理论⾄少要两种⾓度的拍照,实际中通常会拍20张左右;3. 使⽤opencv提供的⾓点检测函数findChessboardCorners找到棋盘格中的⾓点,并将每幅图⽚的⾓点值存放到list中,同时将棋盘格的⾓点的三维坐标存放到另⼀个list。
4. 使⽤calibrateCamera函数获取内存矩阵、畸变矩阵、旋转矩阵以及转移矩阵。
5.使⽤undistort函数将畸变的图像进⾏校正并查看校正后的图⽚效果。
下⾯我们⽤另外的⽅法,详细介绍流程。
⼆.坐标系相机标定涉及到了四⼤坐标系,分别为:像素坐标系图像物理坐标系相机坐标系世界坐标系为了进⾏相机标定,必须已知世界坐标系中⾜够多的三维空间点坐标,找到这些空间点在图像中投影点的⼆维图像坐标,并建⽴对应关系。
世界坐标系中某个给定点投影到图像坐标系中被分为两个步骤:机器视觉中常⽤的有两种不同类型的镜头:普通镜头和远⼼镜头。
使⽤普通镜头时,世界坐标系到图像坐标系为透视投影;使⽤远⼼镜头时为平⾏投影。
三.相机标定⽅法分类相机标定⽅法有:传统相机标定法、主动视觉相机标定法、相机⾃标定法。
1. Tsai两步法是先线性求得相机参数,之后考虑畸变因素,得到初始的参数值,通过⾮线性优化得到最终的相机参数。
Tsai两步法速度较快,但仅考虑径向畸变,当相机畸变严重时,该⽅法不适⽤。
2. 张⽒标定法使⽤⼆维⽅格组成的标定板进⾏标定,采集标定板不同位姿图⽚,提取图⽚中⾓点像素坐标,通过单应矩阵计算出相机的内外参数初始值,利⽤⾮线性最⼩⼆乘法估计畸变系数,最后使⽤极⼤似然估计法优化参数。
立体视觉系统的参数标定的Matlab实现

rai d t f b ele lMa a . ersl o a esf aecnb p l di poet. z l l ut s w t t ot r a ea pi r cs e sh h t h w e n j
Ke r s c me a c i r t n;c r e xr ci n;se e iin s s m y wo d : a r a b a o l i on re t t a o tr o vso y t e
Ca e a Cai a i n o tr o Vii n S se s d o a l b m r l br t fS e e so y tm Ba e n M ta o
BI AN u— i Ho q n,TAN Ye
(colfCm ue a dI om t nE gne n , hn h i nvmt Sho o o p t n fr ai n i r g S ag a i i o r n o ei U e yf Eetc o e, h n h i 0 0 0 C i ) l r w r S g a 20 9 , hn c iP a a
c l rt n meI a e n te p rmee airt n o h tro vso y tm Sd srb d a d ai ai to b s d o h aa tr c l a o fte see i n s se i ec e n b o l d b i i i
文章编号 :10 4 2 (0 1o 0 7 o 0 6— 7 9 2 1 )4— 33一 5
立 体 视 觉 系统 的 参 数 标 定 的 Malb实 现 t a
边后琴 , 谭 叶
209 ) 000
( 上海 电力学 院 计 算机与信 息工程学院 , 上海
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于靶标平面相机参数动态标定Matlab程序★注意:直接运行bd.m文件即可进行动态标定,附录Ⅲ中的其它函数文件均会被bd.m文件调用;坐标数据由实验获取。
bd .m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % M为靶标角点的世界坐标数据,m1—m5为5组图像像素坐标数据;本函数为主函数,它将数据赋值给函数Dtbd(M,m)实现相机动态标定。
clc;clear;M=load('Model.txt'); %Model.txt中为靶标角点的世界坐标,由实验测得m1=load('data1.txt');m2=load('data2.txt');m3=load('data3.txt');m4=load('data4.txt'); %data1.txt—data5.txt中为不同视角所对应的角点图像坐%标,可用附录Ⅱ中的程序测得m5=load('data5.txt');%Model.txt为靶标的世界坐标M=[M(:,1:2) ; M(:,3:4) ; M(:,5:6) ; M(:,7:8)];m1=[m1(:,1:2) ; m1(:,3:4) ; m1(:,5:6) ; m1(:,7:8)];m2=[m2(:,1:2) ; m2(:,3:4) ; m2(:,5:6) ; m2(:,7:8)];m3=[m3(:,1:2) ; m3(:,3:4) ; m3(:,5:6) ; m3(:,7:8)];m4=[m4(:,1:2) ; m4(:,3:4) ; m4(:,5:6) ; m4(:,7:8)];m5=[m5(:,1:2) ; m5(:,3:4) ; m5(:,5:6) ; m5(:,7:8)];M=M'; % 将靶标平面上角点的世界坐标写入矩阵M中,M为2维矩阵m(:,:,1)=m1';m(:,:,2)=m2';m(:,:,3)=m3';m(:,:,4)=m4';m(:,:,5)=m5'; % 将5个视角对应的图像像素坐标写入矩阵m中,m为3维矩阵Dtbd(M,m) % 调用Dtbd .m文件进行动态标定%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Dtbd .m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Dtbd(M,m)函数实现的功能正是本论文中第4章所讲述的动态标定技术,它引入了径向畸变和切向畸变,具体标定过程可参照本论文。
function Dtbd(M,m)[rows,npts]=size(M);matrixone=ones(1,npts);M=[M;matrixone];num=size(m,3);for i=1:numm(3,:,i)=matrixone;endfor i=1:numH(:,:,i)=homography2d1(M,m(:,:,i))'; % 调用homography2d1.m文件,%计算不同视角所对应的单应性矩阵Hi,并将所有的Hi存入矩阵H中endV=[];for flag=1:numv12(:,:,flag)=[H(1,1,flag)*H(2,1,flag),H(1,1,flag)*H(2,2,flag)+H(1,2,flag)*H(2,1,flag), H(1,2,flag)*H(2,2,flag),H(1,3,flag)*H(2,1,flag)+H(1,1,flag)*H(2,3,flag),H(1,3,flag)*H(2,2,flag)+H(1,2,flag)*H(2,3,flag), H(1,3,flag)*H(2,3,flag)];v11(:,:,flag)=[H(1,1,flag)*H(1,1,flag),H(1,1,flag)*H(1,2,flag)+H(1,2,flag)*H(1,1,flag), H(1,2,flag)*H(1,2,flag),H(1,3,flag)*H(1,1,flag)+H(1,1,flag)*H(1,3,flag),H(1,3,flag)*H(1,2,flag)+H(1,2,flag)*H(1,3,flag), H(1,3,flag)*H(1,3,flag)];v22(:,:,flag)=[H(2,1,flag)*H(2,1,flag),H(2,1,flag)*H(2,2,flag)+H(2,2,flag)*H(2,1,flag), H(2,2,flag)*H(2,2,flag),H(2,3,flag)*H(2,1,flag)+H(2,1,flag)*H(2,3,flag),H(2,3,flag)*H(2,2,flag)+H(2,2,flag)*H(2,3,flag), H(2,3,flag)*H(2,3,flag)];V=[V;v12(:,:,flag);v11(:,:,flag)-v22(:,:,flag)];endk=V'*V;[u,v,d]=svd(k); %d(:,6)为所求的最小特征值对应的特征向量[e,d2]=eig(k); %e(1,:)为所求的最小特征值对应的特征向量b=d(:,6);v0=(b(2)*b(4)-b(1)*b(5))/(b(1)*b(3)-b(2)^2);s=b(6)-(b(4)^2+v0*(b(2)*b(4)-b(1)*b(5)))/b(1);alpha_u=sqrt(s/b(1));alpha_v=sqrt(s*b(1)/(b(1)*b(3)-b(2)^2));skewness=-b(2)*alpha_u*alpha_u*alpha_v/s;u0=skewness*v0/alpha_u-b(4)*alpha_u*alpha_u/s; % 求解摄像机内参数A=[alpha_u skewness u00 alpha_v v00 0 1]; % 求解内部参数矩阵AD=[];d=[];Rm=[];for flag=1:nums=(1/norm(inv(A)*H(1,:,flag)')+1/norm(inv(A)*H(2,:,flag)'))/2;rl1=s*inv(A)*H(1,:,flag)';rl2=s*inv(A)*H(2,:,flag)';rl3=cross(rl1,rl2);RL=[rl1,rl2,rl3]; % 求解不同视角所对应的外部参数矩阵RL[U,S,V] = svd(RL);RL=U*V'; % 修正RLTL=s*inv(A)*H(3,:,flag)';RT=[rl1,rl2,TL];XY=RT*M;UV=A*XY;UV=[UV(1,:)./UV(3,:); UV(2,:)./UV(3,:); UV(3,:)./UV(3,:)];XY=[XY(1,:)./XY(3,:); XY(2,:)./XY(3,:); XY(3,:)./XY(3,:)];for j=1:nptsD1=[(UV(1,j)-u0)*( (XY(1,j))^2 + (XY(2,j))^2 ),(UV(1,j)-u0)*( (XY(1,j))^2 + (XY(2,j))^2 )^2 , 2*XY(1,j)*XY(2,j)*A(1,1) , (3*XY(1,j)^2+XY(2,j)^2)*A(1,1) ];D2=[(UV(2,j)-v0)*( (XY(1,j))^2 + (XY(2,j))^2 ),(UV(2,j)-v0)*( (XY(1,j))^2 + (XY(2,j))^2 )^2 , (3*XY(2,j)^2+XY(1,j)^2)*A(2,2) , 2*XY(1,j)*XY(2,j)*A(2,2) ];D=[D;D1;D2];d=[d; (m(1,j,flag)-UV(1,j)) ; (m(2,j,flag)-UV(2,j))]; %引入径向、切向畸变系数endr13=RL(1,3);r12=RL(1,2);r23=RL(2,3);Q1=-asin(r13);Q2=asin(r12/cos(Q1));Q3=asin(r23/cos(Q1));[cos(Q2)*cos(Q1) sin(Q2)*cos(Q1) -sin(Q1) ;-sin(Q2)*cos(Q3)+cos(Q2)*sin(Q1)*sin(Q3)cos(Q2)*cos(Q3)+sin(Q2)*sin(Q1)*sin(Q3) cos(Q1)*sin(Q3) ;sin(Q2)*sin(Q3)+cos(Q2)*sin(Q1)*cos(Q3)-cos(Q2)*sin(Q3)+sin(Q2)*sin(Q1)*cos(Q3) cos(Q1)*cos(Q3)];R_new=[Q1,Q2,Q3,TL'];Rm=[Rm , R_new];endk=inv(D'*D)*D'*d; % 求解径向、切向畸变系数k1、k2、k3和k4para=[Rm,k(1),k(2),k(3),k(4),alpha_u,skewness,u0,alpha_v,v0];Rmoptions = optimset('LargeScale','off','LevenbergMarquardt','on');[x,resnorm,residual,exitflag,output] = lsqnonlin( @youhua_HHH, para, [],[],options, m, M); % 对所有内、外参数进行非线性优化xresnormexitflagoutputx(1:6)k1=x(num*6+1)k2=x(num*6+2)k3=x(num*6+3)k4=x(num*6+4)A=[x(num*6+5) x(num*6+6) x(num*6+7); 0 x(num*6+8) x(num*6+9); 0,0,1] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%homography2d1 .m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 本函数用来计算单应性矩阵H,可被其他函数直接调用function H = homography2d1(varargin)[x1, x2] = checkargs(varargin(:));%调用checkargs函数,将数据varargin分成两部%分并分别赋值给x1和x2M=x1;m=x2;[x1, T1] = normalise2dpts(x1);[x2, T2] = normalise2dpts(x2); %调用normalise2dpts.m文件对x1和x2归一化Npts = length(x1);A = zeros(3*Npts,9);O = [0 0 0];for n = 1:NptsX = x1(:,n)';x = x2(1,n); y = x2(2,n); w = x2(3,n);A(3*n-2,:) = [ O -w*X y*X];A(3*n-1,:) = [ w*X O -x*X];A(3*n ,:) = [-y*X x*X O ];end[U,D,V] = svd(A);H = reshape(V(:,9),3,3)';H = T2\H*T1; % 对单应性矩阵H进行反向规格化H=H/H(3,3);options = optimset('LargeScale','off','LevenbergMarquardt','on');[x,resnorm,residual,exitflag,output] = lsqnonlin( @youhua_H, reshape(H,1,9) , [],[],options,m, M); % 对H进行非线性优化H=reshape(x,3,3);H=H/H(3,3); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%checkargs .m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % checkargs函数是将标定需要的坐标数据分离出来,并赋值给x1和x2 function [x1, x2] = checkargs(arg);if length(arg) == 2x1 = arg{1};x2 = arg{2};if ~all(size(x1)==size(x2))error('x1 and x2 must have the same size');elseif size(x1,1) ~= 3error('x1 and x2 must be 3xN');endelseif length(arg) == 1if size(arg{1},1) ~= 6error('Single argument x must be 6xN');elsex1 = arg{1}(1:3,:);x2 = arg{1}(4:6,:);endelseerror('Wrong number of arguments supplied');end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%normalise2dpts .m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 本函数是对数据进行归一化,输出归一化变量以及相应的变换矩阵。