📄 buchang22.m
字号:
% function image12=buchang22(X,pa) %%运行正确
% 此程序完成视频稳定系统中的运动补偿功能
% 根据全局运动估计参数,也就是模型参数,对于校正后图像的任一像素坐标(x',y')
% 都可以求得它在参考图像中的对应坐标(x,y),公式为
% x=(a5*x'-a2*y'-a3*a5+a2*a6)/(a1*a5-a2*a4)
% y=(a4*x'-a1*y'-a3*a4+a1*a6)/(a2*a4-a1*a5)
% 求解后的x和y值未必是整数,而在参考图像中只有x和y都是整数时才有像素
% 所以实现方法是使用双线性插值方法
% X 输入的参考图像
% pa 求得的仿射模型六参数
% image 视频校正后的稳定图像
clear all;
close all;
load woman;
image(X); colormap(map);
pa=[0.01 0.005 0.01 0.005 0 0];
X=double(X);
[row,col]=size(X);
B=zeros(row,col);
for xx=1:row % xx相当于教正后的图像的任一像素坐标的横坐标x'
for yy=1:col % yy相当于教正后的图像的任一像素坐标的纵坐标y'
mm=pa(5)*xx-pa(2)*yy-pa(3)*pa(5)+pa(2)*pa(6);
nn=pa(1)*pa(5)-pa(2)*pa(4);
pp=pa(4)*xx-pa(1)*yy-pa(3)*pa(4)+pa(1)*pa(6);
qq=pa(2)*pa(4)-pa(1)*pa(5);
x=mm/nn;
y=pp/qq;
if x<1|x>=row|y<1|y>=col
continue;
end
x1=floor(x); % 确定(x,y)周围的四个坐标点
y1=floor(y);
x2=x1+1;
y2=y1+1;
P1=X(x1,y1); % (x,y)周围的四个坐标点的像素值
P2=X(x1,y2);
P3=X(x2,y1);
P4=X(x2,y2);
% 双线形插值开始
P12=P1+(x-x1)*(P2-P1);
P34=P3+(x-x1)*(P4-P3);
B(xx,yy)=floor(P12+(y-y1)*(P34-P12)); % 教正后图像(xx,yy)点的像素值
end
end
image12=B;
figure;
image(image12);colormap(map);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -