MatLab代码大全Word文件下载.docx
- 文档编号:18938870
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:88
- 大小:60.13KB
MatLab代码大全Word文件下载.docx
《MatLab代码大全Word文件下载.docx》由会员分享,可在线阅读,更多相关《MatLab代码大全Word文件下载.docx(88页珍藏版)》请在冰豆网上搜索。
%显示图像saturn2如图3.6(a)所示
S=fftshift(fft2(saturn2));
%计算傅里叶变换并移位
imshow(log(abs(S)),[]);
%显示傅里叶变换谱如3.6(b)所示
例3.4真彩图像及其傅里叶变换谱
A=imread('
image1.jpg'
%装入真彩图像,见图1.1(b)
B=rgb2gray(A);
%将真彩图像转换为灰度图像
imshow(B);
%显示灰度图像如图3.7(a)所示
C=fftshift(fft2(B));
imshow(log(abs(C)),[]);
%显示傅里叶变换谱如3.7(b)所示
3.5.4离散余弦变换的MATLAB实现
例3.5计算并显示真彩图像余弦变换的MATLAB程序如下:
RGB=imread('
image2.jpg'
%装入真彩图像
imshow(RGB);
%显示彩色图像
GRAY=rgb2gray(RGB);
imshow(GRAY);
%显示灰度图像如图3.10(a)所示
DCT=dct2(GRAY);
%进行余弦变换
figure(3);
imshow(log(abs(DCT)),[]);
%显示余弦变换如图3.10(b)所示。
3.8.2Radon变换的MATLAB实现
例3.8真彩图像的Radon变换
MATLAB程序如下:
%显示灰度图像如图3.16(a)
[R,xp]=radon(GRAY,[045]);
%计算变换角度为0°
和45°
的Radon变换
figure;
plot(xp,R(:
1));
title('
R_{0^o}(x\prime)'
)
%显示0°
方向上的Radon变换如图3.16(b)
2));
R_{45^o}(x\prime)'
%显示45°
方向上的Radon变换如图3.16(c)
例3.9连续角度的Radon变换
对于一组连续角度的Radon变换通常用一幅图像来表示。
本例先建立一幅简单图像,然后令变换角度从0°
以1°
的增量变化到180°
时的Radon变换情况。
其MATLAB程序如下:
I=zeros(100,100);
%建立简单图像如图3.17(a)
I(25:
75,25:
75)=1;
imshow(I);
theta=0:
180;
%规定变换角度的范围
[R,xp]=radon(I,theta);
%计算Radon变换
imagesc(theta,xp,R);
%以图像方式显示变换结果R,
%其x轴和y轴分别为theta和xp
title(‘R_{\theta}(X\prime)’);
%显示图像标题
xlabel(‘\theta(degrees)’);
%显示x坐标“
”
ylabel(‘X\prime’);
%显示y坐标“
set(gca,’Xtick’,0:
20:
180);
%设置x坐标刻度
colormap(hot);
%设置调色板
colorbar;
%显示当前图像的调色板
第4章图像增强
4.2.1直接灰度变换
Matlab程序实现图像求反:
I=imread('
cameraman.tif'
imshow(I)
I=double(I)
I=256-1-I
I=uint8(I)
figure
例4.1
用Matlab程序实现线性灰度变换的图像增强:
%读入并显示原始图像
I=imread('
pout.tif'
imshow(I);
I=double(I);
[M,N]=size(I);
%进行线性灰度变换
fori=1:
M
forj=1:
N
ifI(i,j)<
=30
I(i,j)=I(i,j);
elseifI(i,j)<
=150
I(i,j)=(200-30)/(150-30)*(I(i,j)-30)+30;
else
I(i,j)=(255-200)/(255-150)*(I(i,j)-150)+200;
end
end
end
例4.2
I=imread('
lena.bmp'
I2=41*log(1+I);
I2=uint8(I2);
imshow(I2);
例4.3
灰度切割变换的Matlab的程序如下:
007.bmp'
=50
I(i,j)=40;
=180
I(i,j)=220;
I=uint8(I);
例4.4
具体Matlab程序如下:
fork=1:
8
J=zeros(M,N);
fori=1:
temp=I(i,j);
s1=0;
s2=0;
range=[k:
-1:
1];
ford=range
s1=2^(8-d)+s1;
s2=2^(8-d+1);
iftemp>
=s1&
temp<
s2;
J(i,j)=255;
break;
J=uint8(J);
imshow(J);
4.2.2直方图修正
例4.6直方图均衡化效果实例
用Matlab中的histeq函数实现直方图均衡化的程序如下:
circuit.tif'
subplot(221);
subplot(222);
imhist(I)
I1=histeq(I);
imshow(I1)
imhist(I1)
例4.8:
直方图规定效果实例
用matlab中的histeq函数实现直方图均衡化的程序如下:
8:
257
counts(i)=i;
Q=imread('
N=histeq(Q,counts);
imshow(N);
imhist(N);
axis([026005000]);
4.2.3图像间运算
例:
用图像平均减少随机噪声
tire.tif'
II1=zeros(M,N);
16
II(:
:
i)=imnoise(I,'
gaussian'
0,0.01);
II1=II1+double(II(:
i));
ifor(or(i==1,i==4),or(i==8,i==16));
figure;
imshow(uint8(II1/i));
4.3空域滤波增强
Matlab实现的邻域平均法抑制噪声的程序:
eight.tif'
J=imnoise(I,'
salt&
pepper'
0.02);
subplot(231),imshow(I);
title('
原图像'
subplot(232),imshow(J);
添加椒盐噪声图像'
)
k1=filter2(fspecial('
average'
3),J);
%进行3×
3模板平滑滤波
k2=filter2(fspecial('
5),J);
%进行5×
5模板平滑滤波
k3=filter2(fspecial('
7),J);
%进行7×
7模板平滑滤波
k4=filter2(fspecial('
9),J);
%进行9×
9模板平滑滤波
subplot(233),imshow(uint8(k1));
3×
3模板平滑滤波'
subplot(234),imshow(uint8(k2));
5×
5模板平滑滤波'
subplot(235),imshow(uint8(k3));
7×
7模板平滑滤波'
subplot(236),imshow(uint8(k4));
9×
9模板平滑滤波'
例4.10:
使用中值滤波降低图像噪声
k1=medfilt2(J);
3模板中值滤波
k2=medfilt2(J,[55]);
5模板中值滤波
k3=medfilt2(J,[77]);
7模板中值滤波
k4=medfilt2(J,[99]);
9模板中值滤波
subplot(233),imshow(k1);
3模板中值滤波'
subplot(234),imshow(k2);
5模板中值滤波'
subplot(235),imshow(k3);
7模板中值滤波'
subplot(236),imshow(k4);
9模板中值滤波'
例4.11:
梯度锐化实例
cameraman.tif'
subplot(131),imshow(I)
H=fspecial('
Sobel'
H=H'
;
%Sobel垂直模板
TH=filter2(H,I);
subplot(132),imshow(TH,[]);
%Sobel水平模板
subplot(133),imshow(TH,[])
4.4图像频域增强
例4.12:
频域低通滤波所产生的模糊
%理想低通过滤波器所产生的模糊和振铃现象
J=imread('
subplot(331);
J=double(J);
%采用傅里叶变换
f=fft2(J);
%数据矩阵平衡
g=fftshift(f);
subplot(332);
imshow(log(abs(g)),[]),color(jet(64));
[M,N]=size(f);
n1=floor(M/2);
n2=floor(N/2);
%d0=5,15,45,65
d0=5;
d=sqrt((i-n1)^2+(j-n2)^2);
ifd<
=d0
h=1;
else
h=0;
g(i,j)=h*g(i,j);
g=ifftshift(g);
g=uint8(real(ifft2(g)));
subplot(333);
imshow(g);
用巴特沃斯低通滤波器去除图像中的盐椒噪声
%实现Butterworth低通过滤波器
saturn.tif'
0.02);
%给原图像加入椒盐噪声,如图4.33(a)所示
subplot(121);
tilte('
含有盐椒噪声的图像'
g=fftshift(f)
n=3;
d0=20
n1=floor(M/2)
n2=floor(N/2)
d=sqrt((i-n1)^2+(j-n2)^2)
h=1/(1+(d/d0)^(2*n));
subplot(122);
%结果如图4.33(b)所示
例4.13:
频域高通滤波增强示例
lenabu.bmp'
imshow(uint8(J));
模糊图像'
%采用傅里叶变换
d0=20;
M%进行理想高通滤波和理想高通加强滤波
ifd>
h1=1;
h2=1+0.5;
h1=0;
h2=0.5;
g1(i,j)=h1*g(i,j);
g2(i,j)=h2*g(i,j);
g1=ifftshift(g1);
g1=uint8(real(ifft2(g1)));
imshow(g1);
%显示理想高通滤波结果
理想高通滤波结果'
g2=ifftshift(g2);
g2=uint8(real(ifft2(g2)));
imshow(g2);
%显示理想高通加强滤波结果
理想高通加强滤波结果'
n=2;
M%进行巴特沃斯高通滤波和巴特沃斯高通加强滤波
ifd==0
h1=1/(1+(d0/d)^(2*n));
h2=1/(1+(d0/d)^(2*n))+0.5;
gg1(i,j)=h1*g(i,j);
gg2(i,j)=h2*g(i,j);
gg1=ifftshift(gg1);
gg1=uint8(real(ifft2(gg1)));
subplot(223);
imshow(gg1);
%显示巴特沃斯高通滤波结果
巴特沃斯高通滤波结果'
gg2=ifftshift(gg2);
gg2=uint8(real(ifft2(gg2)));
subplot(224);
imshow(gg2);
%显示巴特沃斯高通加强滤波结果
巴特沃斯高通加强滤波结果'
例4.14:
同态滤波的增强效果
%读入原图
%数据矩阵平衡
[M,N]=size(f);
d0=10;
rl=0.5;
rh=2
c=4;
h=(rh-rl)*(1-exp(-c*(d.^2/d0.^2)))+rl;
第5章图像复原
例5.1
C=imread('
image3.jpg'
%装入清晰图像
subplot(1,2,1);
%将图形窗口分成两个矩形平面
imshow(C);
%在第一个矩形平面中显示装入的图像
LEN=30;
%设置运动位移为30个象素
THETA=45;
%设置运动角度为45o
PSF=fspecial('
motion'
LEN,THETA);
%建立二维仿真线性运动滤波器PSF
MF=imfilter(C,PSF,'
circular'
'
conv'
%用PSF产生退化图像
subplot(1,2,2),imshow(MFUZZY);
%在第二个矩形平面中显示模糊后的图像
imwrite(MF,'
image3-MF.jpg'
%将运动模糊后的图像保存起来备用
例5.2消除图5.4(b)的运动模糊,其MATLAB程序如下:
[MF,map]=imread('
%装入运动模糊图像
imshow(MF);
%显示模糊图像
INITPSF=fspecial('
%建立复原点扩散函数
[JP]=deconvblind(MF,INITPSF,30);
%去卷积
imshow(J);
%显示结果图像如图5.6(a)
imshow(P,[],'
%显示复原点扩散函数如图5.6(b)
例5.3逆滤波与维纳滤波的比较
F=checkerboard(8);
%生成原始图像F
imshow(F,[]);
PSF=fspecial('
7,45);
%生成运动模糊图像MF
MF=imfilter(F,PSF,'
noise=imnoise(zeros(size(F)),'
0,0.001);
%生成高斯噪声
MFN=MF+noise;
%生成运动模糊+高斯噪声图像MFN
imshow(MFN,[]);
NSR=sum(noise(:
).^2)/sum(MFN(:
).^2);
%计算噪信比
imshow(deconvwnr(MFN,PSF),[]);
%逆滤波复原
figure(4);
imshow(deconvwnr(MFN,PSF,NSR),[]);
%维纳滤波复原
例5.7顺序统计滤波器比较
f=imread('
image4g.jpg'
imshow(f);
原始图像'
g=imnoise(f,'
0.2);
imshow(g);
椒盐噪声污染的图像'
g1=double(g)/255;
j1=medfilt2(g1,'
symmetric'
imshow(j1);
中值滤波图像'
j2=ordfilt2(g1,median(1:
3*3),ones(3,3),'
imshow(j2);
中点滤波图像'
j3=ordfilt2(g1,1,ones(3,3));
figure(5);
imshow(j3);
最小值滤波图像'
j4=ordfilt2(g1,9,ones(3,3));
figure(6);
imshow(j4);
最大值滤波图像'
例5.8简单图像的affine变换
f=checkerboard(24);
%建立原始图像,如图5.16(a)
s=0.7;
theta=pi/6;
T=[s*cos(theta)s*sin(theta)0%建立变换矩阵:
旋转与尺度变换
-s*sin(theta)s*cos(theta)0
001];
tform=maketform('
affine'
T);
g1=imtransform(f,tform,'
nearest'
%最近邻插值变换,如图5.16(b)
imshow(g1);
g2=imtransform(f,tform);
%双线性插值变换,如图5.16(c)
imshow(g2);
g3=imtransform(f,tform,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MatLab 代码 大全