function Ans=NDX(data_1,data_2,method)
clear clc
%%正形变换输入1,仿射变换输入2,双线性变换输入3,最后得到的ans矩阵为变形系数矩阵.data1为像素坐标,data2为平面坐标。
if method==1
maritx_Y1 = [];
for i = 1:size(data_2,1)
X = data_2(i, 1);
Y = data_2(i, 2);
maritx_Y1 = [maritx_Y1; [X; Y]];
end
maritx_X1 = zeros(2*size(data_1, 1), 6);
for i = 1:size(data_1, 1)
x = data_1(i, 1);
y = data_1(i, 2);
maritx_X1(2*i-1, 2) = x;
maritx_X1(2*i-1, 3) = -y;
maritx_X1(2*i, 5) = x;
maritx_X1(2*i, 6) = y;
end
Ans=maritx_X1\maritx_Y1;
elseif method==2
maritx_Y1 = [];
for i = 1:size(data_2,1)
X = data_2(i, 1);
Y = data_2(i, 2);
maritx_Y1 = [maritx_Y1; [X; Y]];
end
maritx_X1 = zeros(2*size(data_1, 1), 8);
for i = 1:size(data_1, 1)
x = data_1(i, 1);
y = data_1(i, 2);
maritx_X1(2*i-1, 2) = x;
maritx_X1(2*i-1, 3) = y;
maritx_X1(2*i, 5) = x;
maritx_X1(2*i, 6) = y;
end
Ans=maritx_X1\maritx_Y1;
elseif method==3
maritx_Y1 = [];
for i = 1:size(data_2,1)
X = data_2(i, 1);
Y = data_2(i, 2);
maritx_Y1 = [maritx_Y1; [X; Y]];
end
maritx_X1 = zeros(2*size(data_1, 1), 8);
for i = 1:size(data_1, 1)
x = data_1(i, 1);
y = data_1(i, 2);
maritx_X1(2*i-1, 2) = x;
maritx_X1(2*i-1, 3) = y;
maritx_X1(2*i-1, 4) = x*y;
maritx_X1(2*i, 6) = x;
maritx_X1(2*i, 7) = y;
maritx_X1(2*i-1, 8) = x*y;
end
Ans=maritx_X1\maritx_Y1;
end
end
用MATLAB实现内定向的过程,可以说是将数学和计算机编程的力量结合起来,以精确地校准和纠正图像数据
需积分: 0 177 浏览量
2024-04-11
18:44:17
上传
评论
收藏 1KB ZIP 举报
不是细狗.
- 粉丝: 14
- 资源: 1