ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:203.66KB ,
资源ID:10340352      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10340352.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字图像处理基本操作.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数字图像处理基本操作.docx

1、数字图像处理基本操作Matlab图像的读取和存储图像的读取l=imread( pout.tif );imread是读取图像的函数。pout.tif是matlab内置的图像,不管在什么程序内都可以直接读取。这里我们来说几种常见的情形注:Matlab文件夹内有test.m,1.jpg,image文件夹,同时image文件夹内有2.jpg读取1.jpgI=imread( 1.jpg );读取2.jpgI=imread( imagpg )相对寸路径的读取读取 D:1023251.jpgI=i mread( D: 1.jpg 绝寸路径的读取读取D:102325内20个图像。for i=1:20I=imr

2、ead( D: ,num2str(i), .jpg );end图像的显示关于这三个函数用法的区别,主要的意思是: imshow显示按照原来的比例,而 image会改变原来图像的比例。imtool,很少用到。一般用imshow就足够了。那么什么时候用figure呢?当程序中只显示一幅图像时, 直接imshow就可以。然后当图像多的时候,就需要用到 figuure;imshow(l1);figure;imshow(l2);figure;imshow(l3)如果想要在一张图片内,显示好几个图怎么办呢? title 显示在图像的上方,起到提示的作用。l=imread(pout.tif);subplot

3、(221);imshow(I);title(1);subplot(222);imshow(l);title(2);subplot(223);imshow(l);title(3);subplot(224);imshow(l);title(4);其中前面的22代表是2*2的分布,也可以是 2*3,3*4等。按照行来排列,从第一行开始分 别为1 2 3 4。如图所示。3如果没有要求的话, 直接用figure。此时希望图2来显示某个图像,那么figure(2),就指定来显示某个图像。当然了,如果仅有一个图像显示这样做,那么可能会被覆盖掉,因此, 一个程序中的用法一定要统一,并且保证后面的,不要把前面的

4、覆盖掉。图像的存储imwrite(l, pout1.jpg );同样,imwrite也有相对路径和绝对路径的存储,以及连续的存储方法。同 imreadimwrite(l, pout1.jpg );imwrite(l, image pout1.jpg );imwrite(l, D: pout1.jpg );imwrite(l, image ,num2str(i), .jpg ) ; %i 是变量,需要定义这里的.jpg可以改成.bmp等,想要的格式。需要注明的是,存储所选择的文件夹,需要已经建立好。自动建立文件夹需要用 mkdir函数。mkdir( D: 1 )%绝对路径的建立。mkdir( 1

5、 );%绝对路径文件夹的建立。创建之后,在 Matlab文件夹内。这样就能够节省很多的人力。当文件比较多的情况下,人工去建立的话,还容易出错。 代码:l=imread(pout.tif);figure;subplot(221);imshow(l);title(1);subplot(222);imshow(l);title(2);subplot(223);imshow(l);title(3);subplot(224);imshow(l);title(4);whos;mkdir(image)imwrite(l,imagepout2.jpg);Matlab图像的叠加将两幅图像比率叠加源函数funct

6、ion imout = ImageAdd( ima,imb,x,y,rate )%UNTITLED 此处显示有关此函数的摘要% 此处显示详细说明m,n,g = size(ima);a,b,g1 = size(imb);ima = im2double(ima);imb = im2double(imb);imout = zeros( m,n, g);for i = 1:mfor j = 1:nif ( i = x & j = y & jg)=2*pi-H(bg);H=H/(2*pi);num=min(min(r,g),b);den=r+g+b;den(den=0)=eps;S=1-3.*num./

7、den;H(S=0)=0;I=(r+g+b)/3;hsi=cat(3,H,S,I); imshow(hsi);CMY:function hsi=rgb2CMY(rgb) rgb=im2double(rgb);r=rgb(:,:,1);g=rgb(:,:,2);b=rgb(:,:,3);C = 1 - r;M = 1 - g;Y = 1 - b;CMY=cat(3,C,M,Y); imshow(CMY);实验内容: 读入彩色图像,提取其中的 R、 G、 B 颜色分量,并展示出来。我们学习了多种表示图像的颜色空间, 请编写程序将图像转换到 YUV 、YIQ 、YCrCb 、HIS、CMY等颜色空间

8、,并展示出来。 颜色空间的转化关系参考以下公式: 原始图片三个色调分量I = 0.596RQ=0.212RYUV与RGB之间的转换Y= 0.229R + 0.587G + 0.114BU=- 0.147R 0.289G+0.436BV=0.615R 0.515G 0.100BYIQ与RGB之间的转换Y = 0.299R + 0.587G + 0.114B0.275G 0.321B0.523G + 0.311BYCrCb与RGB之间的转换Y = 0.2990R + 0.5870G + 0.1140BCr = 0.5000R - 0.4187G - 0.0813B + 128Cb = -0.168

9、7R - 0.3313G + 0.5000B + 12HSI与RGB之间的转换1=( R + G + B) /3H = arccos 0.5*(R-G)+(R-B) / (R-G)A2 + (R-B)(G-B)9.5S=1-min ( R, G , B) / I 图像DCT变换(包含三种滤波器的平滑和锐化效果比较)代码global gma in Data;fname,pname=uigetfile(*.jpg, 打开文件);if fname=0return;endData,map=imread(fname);% 读取图像数据%n ew=rgb2gray(Data);%imwrite( new,

10、 new.bmp,bmp)%Data=im2bw(Data,map,0.6);%im2bw 转为二进制阈值 0.6%Data=+Data;%逻辑格式转为浮点格式Data=rgb2gray(Data);subplot(1,2,1); %准备显示两幅图像imshow(Data);function DCTcode;global Data;%全局变量,用于共享图像数据m, n=size(Data);fid=fopen(dct.bin,w+); % 创建 dct.bin 用存储 DCT 和 BTC 混合编码后的二进制文件。%补0使尺寸为4的整数倍以便分块m仁 4*ceil(m/4); n1=4*ceil

11、( n/4);Datatemp=zeros(m1, n1);Datatemp(1:m,1: n)=Data;%fwrite(fid,m1,lo ng);fwrite(fid, n1,l on g); % 在文件中记录图像大小block=zeros(4,4); % 4X4 大小的子带for j=1:4: nfor i=1:4:mfor t=0:1:3for p=0:1:3block(1+t,1+p)=Datatemp(i+t,j+p); % 取出 4X4 数据块endend% 对变换后数据进编码后存储或发送 ,只取其中的 2X2 数据 DctBlock=dct2(block);%存储(发送 )编

12、码文件fwrite(fid,DctBlock(1,1),bit12);% 直流分量 , 用 12bit 量化 fwrite(fid,DctBlock(1,2),bit9);% 用 9bit 量化非直流分量 fwrite(fid,DctBlock(2,1),bit9);fwrite(fid,DctBlock(2,2),bit9);endendfclose(fid);function IDctcode;用于存fid=fopen(dct.bin,r); m=fread(fid,1,long);n=fread(fid,1,long); data=zeros(m,n);% 放图像数据 temp=zero

13、s(4,4);block=zeros(4,4);%读取方块数据for j=1:4:nfor i=1:4:mblock(1,1)=fread(fid,1,bit12);block(1,2)=fread(fid,1,bit9);block(2,1)=fread(fid,1,bit9);block(2,2)=fread(fid,1,bit9);temp=idct2(block);for t=0:1:3for p=0:1:3Data(i+t,j+p)=temp(1+t,1+p);endendendenddata=uint8(Data);subplot(1,2,2);imshow(data);% 显示图

14、像fclose(fid);图像的傅立叶变换读入一幅图像;对图像做 FFT。使用subplot 命令,同时显示原始图像其频谱图;代码及图像l=imread(f:le na.jpg); % 读入图像F=fft2(im2double(l); %FFTF=fftshift(F); %FFT 频谱平移F=real(F);T=log(F+1); %频谱对数变换 subplot(1,2,1),imshow(l),title(原始图像);subplot(1,2,2),imshow(T,),title(原始图像其频谱图)原皓團煤 原始團擁苴频诺團读入一幅图像,分别为图像添加椒盐、高斯噪声,做 FFT变换。使用s

15、ubplot 命令,将原始图像、原始图像频谱图、添加噪声后的图像, 以及噪声图像的频谱图同时显示出来。得到原始图像的频谱图的方法同上,然后对原图像模拟叠加密度为0.04的椒盐噪声,然后添加模拟均值为 0方差为0.02的高斯噪声,然后得到噪声图像的频谱图,方法同上,最后显示所有图像。2.2代码及图像l=imread(f:lena.jpg); % 读入图像F=fft2(im2double(l); %FFTF=fftshift(F); %FFT 频谱平移F=real(F);T=log(F+1); %频谱对数变换subplot(3,2,1),imshow(l),title(原始图像);subplot(

16、3,2,2),imshow(T,),title(原始图像其频谱图);S=imnoise(l,salt & pepper, 0.04); % 模拟叠加密度为 0.04 的椒盐噪声K=fft2(im2double(S); %FFTK=fftshift(K); %FFT 频谱平移K=real(K);T=log(K+1); %频谱对数变换subplot(3,2,3),imshow(S),title(添加椒盐噪声后的图像); subplot(3,2,4),imshow(T,),title(椒盐噪声频谱图);G=imnoise(l,gaussian,0,0.02);% 模拟均值为 0 方差为 0.02 的

17、高斯噪声,H=fft2(im2double(G); %FFTH=fftshift(H); %FFT 频谱平移H=real(H);T=log(H+1); %频谱对数变换subplot(3,2,5),imshow(G),title(添加高斯噪声后的图像); subplot(3,2,6),imshow(T,),title(高斯噪声频谱图)JS始團像武頻谱團椒盐噪声频谱團离斯噪声频谱團逓加槻盐噪声后的團像漳加高斯噪声后的團像读入一幅图像,对图像分别进行高斯低通、巴特沃兹低通、高斯高通和巴特沃兹高通频域滤 波,比较其锐化和平滑效果;3.1实验过程对于高斯低通频域滤波,首先求原图像的频谱图,然后根据二维高

18、斯低通滤波器 (GLPF)定义,对频谱图做高斯低通滤波, 使低频通过而使高频衰减,最后做快速傅里叶逆变换, 结果发现滤波后的图像变模糊, 比原始图像减少尖锐的细节部分而突出平滑过渡部分; 对于巴特沃兹低通频域滤波,然后根据二级巴特沃思低通滤波器 (BLPF)定义,对频谱图做巴特沃兹低通滤波,使低频通过而使高频衰减, 最后做快速傅里叶逆变换, 结果发现滤波后的图像变经对比图像后发现, 经过巴特模糊,比原始图像减少尖锐的细节部分而突出平滑过渡部分; 沃思低通滤波的图像比经过高斯低通频域滤波的图像更平滑。对于高斯高通频域滤波, 首先求原图像的频谱图, 然后根据截频距原点为 D0 的高斯高通滤 波器

19、(GHPF) 定义,对频谱图做高斯高通滤波,使高频通过而使低频衰减,最后做快速傅里 叶逆变换,结果发现滤波后的图像变锐化, 比原始图像减少平滑过渡而突出边缘等细节部分; 对于巴特沃兹高通频域滤波, 然后根据二阶且截至频率距原点的距离为 D0 的巴特沃思高通 滤波器 (BHPF) 定义,对频谱图做巴特沃兹高通滤波,使高频通过而使低频衰减,最后做快 速傅里叶逆变换, 结果发现滤波后的图像变锐化, 比原始图像减少平滑过渡而突出边缘等细 节部分; 经对比图像后发现, 经过高斯低通滤波的图像比经过高斯低通巴特沃思低通频域滤 波的图像更平滑。3.2 代码及图像%高斯低通频域滤波I=imread(f:len

20、a.jpg);subplot(1,2,1),imshow(I),title( 原始图像 );I=double(I);S=fftshift(fft2(I);M,N=size(S);n=2;d0=30; %GLPF 滤波, d0=5 , 15 ,30 (程序中以 d0=30 为例)n1=floor(M/2);n2=floor(N/2);for i=1:Mfor j=1:Nd=sqrt(i-门1)人2+。-n2)2);h=1*exp(-1/2*(dA2/d0A2);S(i,j)=h*S(i,j);endendS=ifftshift(S);S=uint8(real(ifft2(S);subplot(1

21、,2,2),imshow(S),title( 高斯低通滤波图像 );%巴特沃斯低通频域滤波I=imread(f:lena.jpg);subplot(1,2,1),imshow(I),title( 原始图像F=double(I);% 数据类型转换, MATLAB 不支持图像的无符号整型的计算G=fft2(F);% 傅立叶变换G=fftshift(G);% 转换数据矩阵M,N=size(G);nn=2;% 二阶巴特沃斯 (Butterworth) 低通滤波器d0=30;% 截止频率为 30m=fix(M/2); n=fix(N/2);for i=1:Mfor j=1:Nd=sqrt(i-m)A2+

22、(j-n) A2);h=1心+0.414*(d/d0)A(2*nn); %计算低通滤波器传递函数result(i,j)=h*G(i,j);endendresult=ifftshift(result);Y2=ifft2(result);Y3=uint8(real(Y2);subplot(1,2,2),imshow(Y3),title( 巴特沃斯低通滤波 )% 巴特沃斯高通频域滤波I=imread(f:test.jpg);subplot(121),imshow(I); title( 原始图像 );F=double(I);% 数据类型转换, MATLAB 不支持图像的无符号整型的计算G=fft2(F

23、);% 傅立叶变换G=fftshift(G);% 转换数据矩阵M,N=size(G);nn=2;%二阶巴特沃斯(Butterworth)高通滤波器d0=30;m=fix(M/2); n=fix(N/2);for i=1:Mfor j=1:Nd=sqrt(i-m)A2+(j-n)A2);if (d=0)h=0;elseh=1/(1+0.414*(d0/d)A(2* nn);% 计算传递函数endresult(i,j)=h*G(i,j);endendresult=ifftshift(result);J2=ifft2(result);J3=ui nt8(real(J2);subplot(122),i

24、mshow(J3); title( 巴特沃斯高通滤波后图像);%滤波后图像显示原始團煤 巴特沃斯低迪址液巴特沃断高逋滤滅后團像原始图煨高昕高通追漱后團像d蠢.a1mm saa ti a a a a a,9 si j d Aclear all;MATLAB写的图像处理,直方图,灰度拉伸,均衡化代码%绘制直方图girl=imread(girl.bmp);figure(1);% 测量图像尺寸参数subplot(3,3,1); imshow(girl); title(原图); m,n =size(girl);计算每级灰度出现的概率,将其for k=0:255GreyHist(k+1)=length(f

25、ind(girl=k)/(m*n); %存入 GreyHist 中相应位置 end subplot(2,2,2);bar(0:255,GreyHist) % 绘制直方图 title(girl 的直方图 ) xlabel( 灰度值 ) ylabel( 出现概率 )%灰度拉伸figure(2);girlgrey=girl;prompt= 请输入系数 a, 请输入系数 b;words= 请输入线性拉伸函数 :;answer = inputdlg(prompt,words,1,0.5,2);a=str2double(answer(1);b=str2double(answer(2);for i=1:mfor j=1:n girl(i,j)=a*girl(i,j)+b;end endsubplot(3,3,1); imshow(girl); title( 灰度拉伸 );GreyHist=zeros(1,256); % 预创建存放灰度出现概率的向量for k=0:255GreyHist(k+1)=length(find(girl=k)/(m*n); % 计算每级灰度出现的概率,将其存入 GreyHist 中相应位置endsubplot(2,2,2);bar(0:2

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2