资源简介
基于灰度的电子稳像,matlab实现的课程设计
代码片段和文件信息
A=imread(‘tire.tif‘); %打开原图
[hw]=size(A); %取图像的长宽,用在imtransform中
figure;
imshow(A);title(‘前一帧‘) %输出前一帧
tform=maketform(‘affine‘[1 0 5; 0 1 5; 0 0 1]‘);
B=imtransform(Atform‘XData‘[1 w]‘YData‘[1 h]); %得到处理素材
figure;
imshow(B);title(‘当前帧‘) %输出当前帧
m=0; %建立变量m
n=0; %建立变量n
[mn]= size(A); %把A中图像行数赋给m,列数赋给n
Hproj=zeros(m1); %建立m*1的一维数组Hproj
Hproj1=zeros(m1); %建立m*1的一维数组Hproj1
Vproj=zeros(1n); %建立1*n的一维数组Vproj
Vproj1=zeros(1n); %建立1*n的一维数组Vproj1
for k=1:m
Hproj(k) = sum(A(k:));
Hproj1(k) = sum(B(k:));
end; %每行求和,赋给对应的Hproj数组中的元素
figure;plot(Hproj); xlabel(‘前一帧行投影‘);%得到前一帧行投影
figure;plot(Hproj1); xlabel(‘当前帧行投影‘); %得到当前帧行投影
for v=1:n
Vproj(v) = sum(A(:v));
Vproj1(v) = sum(B(:v));
end; %每行求和,赋给对应的Hproj数组中的元素
figure;plot(Vproj); xlabel(‘前一帧列投影‘); %输出一维曲线
figure;plot(Vproj1); xlabel(‘当前帧列投影‘);
cc=zeros(160);
for i=1:60
for j=1:120
cc(i)=cc(i)+(Hproj(i+j)-Hproj1(30+j))^2; %行相关计算
end ;
end ;
figure;plot(cc‘g‘); xlabel(‘垂直方向‘) ;
[simin]=min(cc);
dy=31-imin; %得到垂直偏移量
cr=zeros(160);
for d=1:60
for b=1:120
cr(d)=cr(d)+(Vproj(d+b)-Vproj1(30+b))^2; %列相关计算
end ;
end ;
figure;plot(cr‘r‘); xlabel(‘水平方向‘) ;
[gdmin]=min(cr);
dx=31-dmin; %得到水平偏移量
tform=maketform(‘affine‘[1 0 -dx; 0 1 -dy; 0 0 1]‘); %运动矢量补偿
C=imtransform(Btform‘XData‘[1 w]‘YData‘[1 h]);
figure;
imshow(C);title(‘稳像后的当前帧‘); %处理结果输出
K=imsubtract(AB);
figure;
imshow(K); title(‘稳像前两帧差‘) %输出稳像前两帧差
H=imsubtract(AC);
figure;
imshow(H);title(‘稳像后两帧差‘); %输出稳像后两帧差
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2026 2012-06-05 07:49 wancheng.m
评论
共有 条评论