图像复原模型matlab

《数字图像处理》课程实验报告实验名2:图像复原模型建立实验院系:班级:姓名:学号:哈尔滨工业大学

电气工程及自动化学院

光电信息工程

2015年12月13日

一、实验原理

二、实验内容

三、实验结果与分析

附主要程序代码:

%桶形失真演示程序

%Ref:

%

clc;clear;close all;

X=imread('C:\Documentsand Settings\Administrator\桌面\4.1.01.tiff');%读入图像X=rgb2gray(X);

X=double(X);

[M,N]=size(X);%获取图像的size

%M=32;N=M;

[x,y]=meshgrid(0:N-1,0:M-1);%生成网格矩阵坐标

x =x-[N-1]/2;%平移中心坐标至原点

y =y-[M-1]/2;%平移中心坐标至原点

r =abs(x+i*y);%极坐标关系的极径

r =r/max(r(:));%极坐标关系的极径:归一化

a =+0.4;K=1;%参数设置

xp =a*x.*r+x*[K-abs(a)];%失真后的坐标

yp =a*y.*r+y*[K-abs(a)];%失真后的坐标

%plot(x(:),y(:),'+');%绘图演示点阵效果

%hold on;

%plot(xp(:),yp(:),'o');%绘图演示点阵效果

dx =xp-x; %计算出位移dx

dy =yp-y; %计算出位移dy

Xp =interp2(x,y,X,x+dx,y+dy);%插值获得桶形失真后的图像

subplot(221);I1=imshow(X,[]);%显示原始图像

subplot(222);I2=imshow(Xp,[]);%显示桶形失真的图像

ti =title(['参数a =',num2str(a)],'Color','r');%显示参数值

Xq =interp2(x,y,Xp,x-dx,y-dy);%恢复桶形失真的图像

subplot(223);I3=imshow(Xq,[]);%显示恢复后的图像

set(gcf,'Name','桶形失真演示系统');%设置图像名称

Pu1=uicontrol(gcf,'Units','N','Position',[0.5,0.4,0.13,0.08],...

'Style','Push','String','选择图像',...

'HorizontalAlignment','Left','Fontsize',10,'Callback',[...

'[fname,pname]=uigetfile(''*.tiff'');',...

'if pname~=0;X=imread([pname,fname]);',...

'X =rgb2gray(X);X=double(X);set(I1,''CData'',X);',...

'xp =a*x.*r+x*[K-abs(a)];yp=a*y.*r+y*[K-abs(a)];',...

'dx =xp-x;dy =yp-y;Xp =interp2(x,y,X,x+dx,y+dy);',...

'Xq =interp2(x,y,Xp,x-dx,y-dy);',...

'set(I2,''CData'',Xp);',...

'set(I3,''CData'',Xq);end;']);%生成按钮控件,该控件用于选择图像

%Callback 部分是计算程序,实时地计算显示失真结果

S1=uicontrol(gcf,'Units','N','Position',[0.7,0.1,0.03,0.4],...

'Style','slide','min',0,'max',0.6,'value',0.3,...

'SliderStep',[0.01,0.01],...

'HorizontalAlignment','Left','Fontsize',10,'Callback',[...

'a =get(S1,''Value'');',...

'set(ti,''String'',[''参数a='',num2str(a)]);',...

'xp =a*x.*r+x*[K-abs(a)];yp=a*y.*r+y*[K-abs(a)];',...

'dx =xp-x;dy =yp-y;Xp =interp2(x,y,X,x+dx,y+dy);',...

'Xq =interp2(x,y,Xp,x-dx,y-dy);',...

'set(I2,''CData'',Xp);',...

'set(I3,''CData'',Xq);']);%生成滑动条控件,用于改变参数

%Callback 部分是计算程序,实时地计算显示失真结果;

%枕形失真演示程序

clc;clear;close all;

X=imread('C:\Documentsand Settings\Administrator\桌面\4.1.01.tiff');%读入图像X=rgb2gray(X);

X=double(X);

[M,N]=size(X);%获取图像数据的size

%M=32;N=M;

[x,y]=meshgrid(0:N-1,0:M-1);%生成坐标点阵坐标

x =x-[N-1]/2;%平移中心坐标至原点

y =y-[M-1]/2;%平移中心坐标至原点

r =abs(x+i*y);%极坐标关系的极径

r =r/max(r(:));%极坐标关系的极径:归一化

a =+0.4;K=1;%参数设置

xp =a*x.*r+x*[K-abs(a)];%失真后的坐标

yp =a*y.*r+y*[K-abs(a)];%失真后的坐标

%plot(x(:),y(:),'+');%绘图演示点阵效果

%hold on;

%plot(xp(:),yp(:),'o');%绘图演示点阵效果

dx =xp-x; %计算出位移dx

dy =yp-y; %计算出位移dy

Xp =interp2(x,y,X,x-dx,y-dy);%插值获得桶形失真后的图像

subplot(221);I1=imshow(X,[]);%显示原始图像

subplot(222);I2=imshow(Xp,[]);%显示桶形失真的图像

Xq =interp2(x,y,Xp,x+dx,y+dy);%恢复桶形失真的图像

ti =title(['参数a =',num2str(a)],'Color','r');%显示参数值subplot(223);I3=imshow(Xq,[]);%显示恢复后的图像

set(gcf,'Name','枕形失真演示系统');%设置图像名称

Pu1=uicontrol(gcf,'Units','N','Position',[0.5,0.4,0.13,0.08],...

'Style','Push','String','选择图像',...

'HorizontalAlignment','Left','Fontsize',10,'Callback',[...

'[fname,pname]=uigetfile(''*.tiff'');',...

'if pname~=0;X=imread([pname,fname]);',...

'X =rgb2gray(X);X=double(X);set(I1,''CData'',X);',...

'xp =a*x.*r+x*[K-abs(a)];yp=a*y.*r+y*[K-abs(a)];',...

'dx =xp-x;dy =yp-y;Xp =interp2(x,y,X,x-dx,y-dy);',...

'Xq =interp2(x,y,Xp,x+dx,y+dy);',...

'set(I2,''CData'',Xp);',...

'set(I3,''CData'',Xq);end;']);%生成按钮控件,该控件用于选择图像%Callback 部分是计算程序,实时地计算显示失真结果

S1=uicontrol(gcf,'Units','N','Position',[0.7,0.1,0.03,0.4],...

'Style','slide','min',0,'max',0.6,'value',0.3,...

'SliderStep',[0.01,0.01],'TooltipString',['a=',num2str(a)],...'HorizontalAlignment','Left','Fontsize',10,'Callback',[...

'a =get(S1,''Value'');',...

'set(S1,''TooltipString'',[''a='',num2str(a)]);',...

'set(ti,''String'',[''参数a='',num2str(a)]);',...

'xp =a*x.*r+x*[K-abs(a)];yp=a*y.*r+y*[K-abs(a)];',...

'dx =xp-x;dy =yp-y;Xp =interp2(x,y,X,x-dx,y-dy);',...

'Xq =interp2(x,y,Xp,x+dx,y+dy);',...

'set(I2,''CData'',Xp);',...

'set(I3,''CData'',Xq);']);%生成滑动条控件,用于改变参数

%Callback 部分是计算程序,实时地计算显示失真结果

运动恢复:

I =imread('C:\Documentsand Settings\Administrator\桌面\4.1.01.tiff');imshow(I)

BW1=edge(I,'sobel');

BW2=edge(I,'canny');

imshow(BW1)

figure, imshow(BW2)


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn