收藏 分销(赏)

matlab实验 图像的基本运算.doc

上传人:xrp****65 文档编号:5920112 上传时间:2024-11-23 格式:DOC 页数:20 大小:4.08MB 下载积分:10 金币
下载 相关 举报
matlab实验 图像的基本运算.doc_第1页
第1页 / 共20页
matlab实验 图像的基本运算.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
实验四、图像的基本运算 1(1)选择一幅图像lena8.jpg,设置输入/输出变换的灰度级范围,a=0.3,b=0.6,c=0.1,d=0.9 (2)设置非线性扩展函数的参数c=2 (3)采用灰度倒置变换函数s=255-r进行图像变换 (4)设置二值化图像的阈值,分别为level=0.4,level=0.7 程序如下 I=imread('C:\lena8.jpg'); figure; subplot(2,3,1); imshow(I); title('原图'); J=imadjust(I,[0.3;0.6],[0.1;0.9]); %设置灰度变换的范围 subplot(2,3,2); imshow(J); title('线性扩展'); I1=double(I); %将图像转换为double类型 I2=I1/255; %归一化此图像 C=2; K=C*log(1+I2); %求图像的对数变换 subplot(2,3,3); imshow(K); title('非线性扩展'); M=im2bw(I,0.5); M=~M; %M=255-I; %将此图像取反 %Figure subplot(2,3,4); imshow(M); title('灰度倒置'); N1=im2bw(I,0.4); %将此图像二值化,阈值为0.4 N2=im2bw(I,0.7); %将此图像二值化,阈值为0.7 subplot(2,3,5); imshow(N1); title('二值化阈值0.4'); subplot(2,3,6); imshow(N2); title('二值化阈值0.7'); 2 选取两幅大小一样的灰度图像hough.bmp和rice.bmp,将两幅图像进行加法运算。 程序如下 I=imread('C:\hough.bmp'); %I=rgb2gray(I); J=imread('C:\rice.bmp'); I=im2double(I); %将图像转换成double型 J=im2double(J); K=I+0.3*J; %两幅图像相加 subplot(1,3,1); imshow(I); title('物图'); subplot(1,3,2); imshow(J); title('背景图'); subplot(1,3,3); imshow(K); title('相加后的图'); imwrite(K,'C:\lena1.jpg'); 3 选取一幅混合图像,如相加得到的图像lenal.jpg,将混合图像与背景图像做减法运算。 程序如下 A=imread('C:\lena1.jpg'); B=imread('C:\rice.bmp'); A=im2double(A); %将图像转换成double型 B=im2double(B); C=A-0.3*B; subplot(1,3,1); imshow(A); title('混合图'); subplot(1,3,2); imshow(B); title('背景图'); subplot(1,3,3); imshow(C); title('分离后的图'); 4 选取一幅尺寸为256x256像素的灰度图,如rice.bmp。设置掩模模板,对于需要保留下来的区域,掩模图像的值置为1,而需要被抑制掉的区域,掩模图像的值置为0。 程序如下 A=imread('C:\rice.bmp'); %A=rgb2gray(A); A=im2double(A); subplot(1,2,1); imshow(A); title('原图'); B=zeros(256,256); B(40:200,40:200)=1; K=A.*B; subplot(1,2,2); imshow(K); title('局部图'); 5 选取一幅大小为256x256像素的图像,如lena8.jpg. 分别将图比例放大1.5倍,比例缩小0.7倍,非比例放大到420x384像素,非比例缩小到15x180像素。 程序如下 A=imread('C:\lena8.jpg'); Bl=imresize(A,1.5); %比例放大1.5倍,默认采用的是最近邻法进行线性插值 B2=imresize (A, [420 384]); %非比例放大至420:384 Cl=imresize (A, 0 . 7) ; %比例缩小0.7 倍 C1=imresize(A, 0.7) ; C2=imresize(A, [150 180]) ; %非比例缩小到150:180 figure; imshow(Bl); title('比例放大图'); figure; imshow(B2); title('非比例放大图'); figure; imshow(C1); title('比例缩小图'); figure; imshow(C2); title('非比例缩小图'); 实验五、图像的变换 1 选取一幅图像,进行离散傅里叶变换,再对其分别进行X轴与Y轴上的平移,得其离散傅里叶变换,观察结果图。 程序如下 I=imread('C:\1.bmp'); %I=imread('C:\lena8.jpg'); %imshow(I); imshow(real(I)); figure(1) I=I(:,:,3); fftI=fft2(I); sfftI=fftshift(fftI); %求离散傅里叶频谱 %对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置 RRfdpl=real(sfftI); IIfdpl=imag(sfftI); a=sqrt(RRfdpl.^2+IIfdpl.^2); a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225; figure(2); imshow(real(a)); I=imread('C:\2.bmp'); figure(3); imshow(real(I)); I=I(:,:,3); fftI=fft2(I); sfftI=fftshift (fftI) ; %求离散傅里叶频谱 %对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置 RRfdpl=real(sfftI); IIfdpl=imag(sfftI); a=sqrt(RRfdpl.^2+IIfdpl.^2); a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225; figure(4); imshow(real (a)); I=imread('C:\3.bmp'); figure (5); imshow(real (I)); I=I(:,:,3); fftI=fft2 (I); sfftI = fftshift (fftI) ; %求离散傅里叶频谱 %对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱图中央位置 RRfdpl=real (sfftI); IIfdpl=imag(sfftI); a=sqrt(RRfdpl.^2+IIfdpl.^2); a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225; figure(6); imshow(real(a)); 2 选取一幅图像,进行离散傅里叶变换,再对其进行一定角度的旋转,进行离散傅里叶变化。 程序如下 %构造原始图像 I=zeros(256,256); I(88:168,124:132)=1; %图像范围是256*256,前一值是纵向比,后一值是横向比 imshow(I); %求原始图像的傅里叶变换 J=fft2(I); F=abs(J); J1=fftshift(F);figure imshow(J1,[5 50]); %对原始图像进行旋转 J=imrotate(I,90,'bilinear','crop'); figure imshow(J) %求旋转后图像的傅里叶频谱 J1=fft2(J); F=abs(J1); J2=fftshift(F);figure Imshow(J2,[5 50]) 3 选取一幅图像,进行离散余弦变换,并对其进行离散余弦反变换,观察其结果 程序如下 %对lena24.ipg文件计算二维DCT变换 RGB = imread('C:\lena24.jpg'); figure(1) imshow(RGB) I=rgb2gray(RGB); %真彩色图像转换成灰度图像 J = dct2(I); %计算二维DCT变换 figure (2) imshow(log(abs(J)),[]) %图像大部分能量集中在上左角处 figure (3); J(abs(J) < 10) = 0; %把变换矩阵中小于10的值置换为0,然后用idct2重构图像 K = idct2(J)/255; imshow(K) 4 选取一幅图像,进行离散余弦变换,并对其进行压缩解压,观察其结果。 程序如下 RGB = imread('C:\lena24.jpg'); I=rgb2gray(RGB); I = im2double(I); %转换图像矩阵为双精度型 T = dctmtx(8); %产生二维00?变换矩阵, %矩阵T及其转置T‘是DCT函数P1*X*P2的参数 B = blkproc(I, [8 8],'P1*x*P2',T,T'); maskl= [ 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; %二值掩模,用来压缩DCT系数 B2=blkproc(B,[8 8],'P1.*x',maskl); %只保留DCT变换的10个系数 I2=blkproc(B2,[8 8],'P1*x*P2',T',T); %重构图像 figure,imshow(I); figure,imshow(B2); figure,imshow(I2); 实验六、图像的增强 1 对一幅灰度图像进行幂次变换。 程序如下 clear all close all I{1}=double(imread('C:\lena8.jpg')); I{1}=I{1}/255; figure(1),subplot(2,4,1),imshow(I{1}, []),hold on I{2}=double(imread('C:\lena1.jpg')); I{2}=I{2}/255; subplot(2,4,5),imshow(I{2}, []),hold on for m=1:2 Index=0; for lemta=[0.5 5] Index=Index+1; F{m}{Index}=I{m}.^lemta; subplot (2,4,(m-1)*4+Index+1) , imshow(F{m}{Index},[]) end end 2 对一幅灰度图像采用两种目标直方图来规定化。 程序如下 clear all close all %0.读图像 I=double(imread('C:\lena8.jpg')); figure, imshow (I,[]) N=32; Hist_image=hist (I(:),N) ; %直方图 Hist_image=Hist_image/sum (Hist_image); Hist_image_cumulation=cumsum(Hist_image); %累计直方图 figure, stem([0:N-1] ,Hist_image) ; %1.设计目标直方图 Index=0:N-1; Index=0:7; %正态分布直方图 Hist{1}=exp(-(Index-4).^2/8); Hist{1}=Hist{1}/sum(Hist{1}); Hist_cumulation{1}=cumsum(Hist{1}); figure, stem([0:7],Hist{1}) %倒三角形状直方图 Hist{2}=abs(15-2*Index); Hist{2}=Hist{2}/sum(Hist{2}); Hist_cumulation{2}=cumsum(Hist{2}); figure, stem([0:7],Hist{2}) %2.规定化处理 for m=1:2 Image=I; %2.1 SML处理 for k=1:N Temp=abs(Hist_image_cumulation(k)-Hist_cumulation{m}); [Tempi,Project{m}(k)]=min(Temp); end %2.2变换后直方图 for k=1:N Temp=find(Project{m}==k); if isempty(Temp) Hist_result{m}(k)=0; else Histresult{m}(k)=sum(Hist_image(Temp)); end end figure, stem([0:31],Hist_result{m}); %2.3结果图 Step=256/N; for k=1:N Index=find(I>=Step*(k-1)&I<Step*k); Image(Index)=Project{m}(k); end figure, imshow(Image,[]) end 3 对一幅灰度图像采用多种方法实现平滑、锐化滤波。 程序如下 clear all close all I=double(imread('C:\lena8.jpg')); figure,imshow(I,[]); % 1.均值低通滤波 H=fspecial('average',5); F{1}=double(filter2(H,I)); figure,imshow(F{1},[]); % 2 . gaussian低通滤波 H=fspecial('gaussian',7,3); F{2}=double(filter2(H,I)); figure,imshow(F{2},[]); % 3.增强图像-原图-均值低通滤波 F{3}=2*I-F{1}; figure,imshow(uint8 (F{3}),[]); % 4.增强图像=原图-高斯低通滤波 F{4}=2*I-F{2}; figure,imshow(uint8 (F{4}),[]); %5. ‘prewitt’边缘算子增强 H=fspecial('prewitt'); F{ 5}=uint8(I+filter2(H,I)); figure,imshow(F{5},[]); %6. ‘sobel’边缘算子增强 H=fspecial('sobel'); F{6}=uint8(I + filter2(H,I)); figure,imshow(F{6},[]); 实验7、图像的复原 1 对一幅灰度图像添加噪声并滤波。 程序如下 clear; close all; %1.生成含噪图像 img = imread('C:\lena8.bmp'); figure; imshow(img); img =double(imnoise(img,'salt & pepper', 0.01)); figure,imshow(img,[]); %2.采用均值滤波 N=5; %滤波模板大小 h=fspecial('average',N); I=filter2(h,img); figure,imshow(I,[]) %3.中值滤波 I=medfilt2(img,[N N]); figure,imshow(I,[]) %4.最大值滤波 I=ordfilt2(img,N*N,true(N)); figure,imshow(I,[]) %5.最小值滤波 I=ordfilt2(img,1,true(N)); figure,imshow(I,[]) 2 对沿X轴方向的纹波加性噪声进行陷波滤波。 程序如下 close all clear all %1.生成波纹噪声图像 img = double(imread('C:\lena8.bmp')); figure; imshow(img,[]); sizec=size(img); w=0.4*2*pi; %噪声的数字频率 N=2*pi/w; %噪声每一周期的采样点数 img_noise=img+20*ones(sizec(1),1)*sin(w*[1:sizec(2)]); figure,imshow(img_noise,[]); %图像频谱 F0=fft2(img); F0=fftshift(F0); figure,imshow(log(abs(F0)),[]); F=fft2(img_noise); F=fftshift(F); figure,imshow(log(abs(F)),[]); %2.设计理想陷波滤波器 H=ones(sizec(1),sizec(2)); %图像中心点 x0=sizec(1)/2+1; y0=sizec(2)/2+1; %噪声所处频率点(x,y) x=x0; y=y0-round(sizec(2)/N); H (x,y-3:y+3)=0; H(x,(y0-y)+y0-3:(y0-y)+y0+3)=0; %3.滤波结果 I=ifftshift(F.*H); imgl=ifft2(I); figure; imshow(imgl,[]);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服