matlab实验 图像的基本运算.docx
- 文档编号:9110928
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:33
- 大小:3.95MB
matlab实验 图像的基本运算.docx
《matlab实验 图像的基本运算.docx》由会员分享,可在线阅读,更多相关《matlab实验 图像的基本运算.docx(33页珍藏版)》请在冰豆网上搜索。
matlab实验图像的基本运算
实验四、图像的基本运算
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,[420384]);%非比例放大至420:
384Cl=imresize(A,0.7);%比例缩小0.7倍
C1=imresize(A,0.7);
C2=imresize(A,[150180]);%非比例缩小到150:
180figure;
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,[550]);
%对原始图像进行旋转
J=imrotate(I,90,'bilinear','crop');
figure
imshow(J)
%求旋转后图像的傅里叶频谱
J1=fft2(J);
F=abs(J1);
J2=fftshift(F);figure
Imshow(J2,[550])
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,[88],'P1*x*P2',T,T');
maskl=[11110000
11100000
11000000
10000000
00000000
00000000
00000000
00000000];
%二值掩模,用来压缩DCT系数
B2=blkproc(B,[88],'P1.*x',maskl);
%只保留DCT变换的10个系数
I2=blkproc(B2,[88],'P1*x*P2',T',T);
%重构图像
figure,imshow(I);
figure,imshow(B2);
figure,imshow(I2);
实验六、图像的增强
1对一幅灰度图像进行幂次变换。
程序如下
clearall
closeall
I{1}=double(imread('C:
\lena8.jpg'));
I{1}=I{1}/255;
figure
(1),subplot(2,4,1),imshow(I{1},[]),holdon
I{2}=double(imread('C:
\lena1.jpg'));
I{2}=I{2}/255;
subplot(2,4,5),imshow(I{2},[]),holdon
form=1:
2
Index=0;
forlemta=[0.55]
Index=Index+1;
F{m}{Index}=I{m}.^lemta;
subplot(2,4,(m-1)*4+Index+1),
imshow(F{m}{Index},[])
end
end
2对一幅灰度图像采用两种目标直方图来规定化。
程序如下
clearall
closeall
%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.规定化处理
form=1:
2
Image=I;
%2.1SML处理
fork=1:
N
Temp=abs(Hist_image_cumulation(k)-Hist_cumulation{m});
[Tempi,Project{m}(k)]=min(Temp);
end
%2.2变换后直方图
fork=1:
N
Temp=find(Project{m}==k);
ifisempty(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;
fork=1:
N
Index=find(I>=Step*(k-1)&I Image(Index)=Project{m}(k); end figure, imshow(Image,[]) end 3对一幅灰度图像采用多种方法实现平滑、锐化滤波。 程序如下 clearall closeall 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; closeall; %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,[NN]); 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轴方向的纹波加性噪声进行陷波滤波。 程序如下 closeall clearall %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,[]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab实验 图像的基本运算 matlab 实验 图像 基本 运算
![提示](https://static.bdocx.com/images/bang_tan.gif)