数字图像处理与matlab编程.docx
- 文档编号:20877309
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:24
- 大小:1.35MB
数字图像处理与matlab编程.docx
《数字图像处理与matlab编程.docx》由会员分享,可在线阅读,更多相关《数字图像处理与matlab编程.docx(24页珍藏版)》请在冰豆网上搜索。
数字图像处理与matlab编程
数字图像处理与matlab编程
1、图像的二值化
▪clear
▪i=imread('lenna_2.bmp');
▪j=double(i);
▪[mn]=size(j);
▪lk=j;
▪forp=1:
m;
▪forq=1:
n;
▪ifj(p,q)>=125
▪lk(p,q)=255;
▪else
▪lk(p,q)=0;
▪end
▪end
▪end
▪k=uint8(lk);
▪figure,imshow(i);
▪figure,imshow(k)
实验结果:
处理前处理后
2、数字图像旋转、放大及缩小
1)旋转
▪i=imread('Lenna.bmp');
▪j=imrotate(i,45,'bilinear');
▪subplot(1,2,1),imshow(i);
▪subplot(1,2,2),imshow(j);
实验结果:
2)放大
▪i=imread('Lenna.bmp');
▪j=imresize(i,1.5,'bilinear');
▪figure
(1),imshow(i);
▪figure
(2),imshow(j);
实验结果:
放大前
放大后
3)缩小
▪i=imread('Lenna.bmp');
▪j=imresize(i,0.8,'bilinear');
▪figure
(1),imshow(i);
▪figure
(2),imshow(j);
实验结果:
缩小前
缩小后
3、数字图像水平镜像、垂直镜像和平移
1)数字图像的水平镜像
▪i=imread('Lenna.bmp');
▪subplot(1,2,1),imshow(i);
▪[x,y]=size(i);
▪p=1:
x;q=1:
y;
▪j(p,y-q+1)=i(p,q);
▪subplot(1,2,2),imshow(j);
实验结果:
2)数字图像的垂直镜像
▪i=imread('Lenna.bmp');
▪subplot(1,2,1),imshow(i);
▪[x,y]=size(i);
▪p=1:
x;q=1:
y;
▪j(x-p+1,q)=i(p,q);
▪subplot(1,2,2),imshow(j);
实验结果:
3)数字图像的平移
▪i=imread('Lenna.bmp');
▪subplot(1,2,1),imshow(i);
▪[x,y]=size(i);
▪p=1:
x;q=1:
y;
▪j(p+20,q+20)=i(p,q);
▪j(1:
p+19,q+20)=0;
▪j(p+20,p+20:
q+19)=0;
▪subplot(1,2,2),imshow(j);
实验结果:
4、图像的错切
▪clear
▪a=imread('lenna_2.bmp');
▪figure,imshow(a);
▪[mn]=size(a);
▪b(1:
m+0.5*n,1:
n)=0;
▪forx=1:
m
▪fory=1:
n
▪b(fix(x+0.5*y),y)=double(a(x,y));
▪end
▪end
▪figure,imshow(uint8(b));
实验结果:
错切前错切后
5、中值滤波
▪i=imread('rice.tif');
▪j=imnoise(i,‘salt&pepper’,0.02);加椒盐噪声
▪i2=medfilt2(j,[3,3]);
▪subplot(1,3,1),imshow(i);title('原图像')
▪subplot(1,3,2),imshow(j);title('加噪声图像')
▪subplot(1,3,3),imshow(i2,[]);title('中值滤波后图像')
实验结果:
6、均值滤波
▪i=imread('flowers.tif');
▪j=imnoise(i,‘gaussian’,0.02);加高斯噪声
▪h=fspecial('average',3);
▪i2=filter2(h,j);
▪subplot(1,3,1),imshow(i);title('原图像')
▪subplot(1,3,2),imshow(j);title('加噪声图像')
▪subplot(1,3,3),imshow(i2,[]);title('均值滤波后图像')
实验结果:
7、图像加波浪噪声
▪i=imread('rice.tif');
▪s=size(i);
▪[x,y]=meshgrid(1:
s
(1),1:
s
(2));
▪p=cos(x/3+y/5)+1;
▪j=(im2double(i)+p/2)/2;
▪subplot(1,2,1),imshow(i);title('原图像')
▪subplot(1,2,2),imshow(j);title('加噪声图像')
实验结果:
8、图像的边缘检测(三种算子roberts、lop、sobel)
I1=imread('Lenna.bmp');
subplot(2,2,1),imshow(I1);
BW1=edge(I1,'roberts');
subplot(2,2,2),imshow(BW1),title('用Roberts算子');
BW2=edge(I1,'sobel');
subplot(2,2,3),imshow(BW2),title('用Sobel算子');
BW3=edge(I1,'log');
subplot(2,2,4),imshow(BW3),title('用拉普拉斯算子');
实验结果:
9、傅里叶变换与高低频滤波
1)低频滤波
▪Z=imread('Lenna.bmp')
▪A=double(Z);
▪subplot(1,2,1),imshow(Z);
▪B=ones(256,256);
▪B(128-30:
128+30,128-30:
128+30)=1;
▪C=fftshift(fft2(A));
▪D=C.*B;
▪FF=ifft2(D);
▪subplot(1,2,2),imshow(abs(FF),[]);
实验结果:
可以发现变换后的图像有些模糊
2)高频滤波实现1
▪Z=imread('Lenna.bmp')
▪A=double(Z);
▪subplot(1,2,1),imshow(Z);
▪B=zeros(256,256);
▪B(128-30:
128+30,128-30:
128+30)=1;
▪B1=1-B;
▪C=fftshift(fft2(A));
▪D=C.*B1;
▪FF=ifft2(D);
▪subplot(1,2,2),imshow(abs(FF),[]);
高频滤波实现2
▪Z=imread('Lenna.bmp')
▪A=double(Z);
▪subplot(1,2,1),imshow(Z);
▪B=ones(256,256);
▪B(128-30:
128+30,128-30:
128+30)=0;
▪C=fftshift(fft2(A));
▪D=C.*B;
▪FF=ifft2(D);
▪subplot(1,2,2),imshow(abs(FF),[]);
实验结果:
可以发现得到了图像的轮廓。
10、数字图像的腐蚀、膨胀、开运算和闭运算
im=imread('njnu.png');%(‘rice.jpg’)
subplot(2,3,1),imshow(im);title('原图')
se=strel('line',10,45);
im2=imerode(im,se);
subplot(2,3,2),imshow(im2);title('腐蚀后')
im3=imdilate(im,se);
subplot(2,3,3),,imshow(im3);title('膨胀后')
im4=imopen(im,se);
subplot(2,3,4),imshow(im4);title('开运算后')
im5=imclose(im,se);
subplot(2,3,5),imshow(im5);title('闭运算后')
原图:
分别如下:
为什么对于两幅不同的图像,同样的程序,处理的结果会不同呢?
10彩色图像到灰度图像转换
i=imread('lily.tif')
subplot(1,2,1),imshow(i),title('rgb')
j=rgb2gray(i)
subplot(1,2,2),imshow(j),title('gray')
11、图像的转置及灰度翻转
i=imread('Lenna.bmp');
j=i';
k=255-double(i);
subplot(1,3,1),imshow(i),title('originalpicture');
subplot(1,3,2),imshow(j),title('retotedpicture');
subplot(1,3,3),imshow(uint8(k)),title('oppositepicture');
12、图像对比度展宽
i=imread('pout.tif');
subplot(2,2,1),imshow(i)
subplot(2,2,2),imhist(i)
j=imadjust(i,[0.30.7],[]);
subplot(2,2,3),imshow(j)
subplot(2,2,4),imhist(j)
13、图像直方图均衡化
i=imread('pout.tif')
j=histeq(i)
subplot(2,2,1),imshow(i)
subplot(2,2,2),imhist(i,256)
subplot(2,2,3),imshow(j)
subplot(2,2,4),imhist(j,256)
14、离散余弦变换与图像压缩
i=imread('Lenna.bmp');
i=im2double(i);
T=dctmtx(8);
B=blkproc(i,[88],'P1*x*P2',T,T');
mask=[11110000
11100000
11000000
10000000
00000000
00000000
00000000
00000000];%二值掩模,用来压缩DCT的系数
B2=blkproc(B,[88],'P1.*x',mask);%只保留DCT变换的10个系数
i2=blkproc(B2,[88],'P1*x*P2',T',T);%逆DCT变换,用来重构图像
subplot(1,2,1),imshow(i);title('原图');
subplot(1,2,2),imshow(i2);title('变换后');
可以发现变换后的图像有一定的失真,但不影响视觉,但图像数据量大大缩小。
15、图像加噪声再通过多次相加求平均的方法去除噪声
[I,M]=imread('Lenna.bmp');
J=imnoise(I,'gaussian',0,0.02);
subplot(1,3,1),imshow(I,M);
title('原图像');
subplot(1,3,2),imshow(J,M);
title('加噪声后图像');
[m,n]=size(i);
K=zeros(m,n);
fori=1:
100
J=imnoise(I,'gaussian',0,0.02);
J1=im2double(J);
K=K+J1;
end
K=K/100;
subplot(1,3,3),imshow(K);title('相加求平均后的图像');
16、小波变换去噪实例
st=3;init=231434;
[x,xn]=wnoise(3,11,st,init);
subplot(2,2,1),plot(x);title('原始信号')
subplot(2,2,2),plot(xn);title('含噪信号')
lev=5;
xd=wden(x,'heursure','s','one',lev,'sym8');
subplot(2,2,3),plot(xd);title('启发式sure阈值去噪结果')
xd2=wden(x,'rigrsure','s','sln',lev,'sym8');
subplot(2,2,4),plot(xd2);title('软sure阈值去噪结果')
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 matlab 编程