matlab处理图像代码_第1页
matlab处理图像代码_第2页
matlab处理图像代码_第3页
matlab处理图像代码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、图像的读取 MATLAB中从图像文件中读取数据用函数imread(,这个函数的作用就是将图像文件的数据读入矩阵中,此外还可以用imfinfo(函数查看图像文件的信息(见例1) %例1:图像数据及图像信息的读取 imfinfo c:lilizongboat.bmp %读取图像信息 A,M=imread('c:lilizongboat.bmp' %图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中 imshow(A,M;title('原图像' M(:,1=0;%将颜色数据矩阵的一列置零 figure imshow(A,M;title('改变颜色

2、后的图像' MATLAB还提供了将数据写入一个文件的函数imwrite以及不同类型文件相互转换的函数,可以参考MATLAB 的帮助文件。 2、灰度直方图及直方图均衡化 灰度直方图用于显示图像的灰度值分布情况,是数字图像处理中最简单和最实用的工具。MATLAB中提供了专门绘制直方图的函数imhist(。用它可以很简单的绘制出一幅图像的灰度直方图(见例2)。 %例2:直方图的显示 imshow('c:lilizongboat.bmp'title('原图像' %显示原图像 A=imread('e:matlabworktuxiangGirl.bmp

3、9;,'bmp' figure;imhist(A,title('对应直方图' 在图像处理中,点运算是简单而又重要的一种技术,其中最常用的一种应用就是直方图的均衡化(见例3)。 %例3:直方图均衡化 imshow('c:lilizongboat1.bmp'title('原图像' I=imread('c:lilizongboat1.bmp' figure;imhist(I,title('对应直方图' %从得到的直方图可以看出,图像的对比度很低,灰度级集中在70-160范围内,如果只取 %这个范围内的灰度

4、,并扩展到0,255,则会明显增强图像对比度 J=imadjust(I,70/255 160/255,; figure;imshow(J,title('经灰度级调整后的图' figure;imhist(J,title('灰度级调整后的直方图' %MATLAB还提供了histeq函数(自动直方图均衡化) K=histeq(I; figure;imshow(K,title('经直方图均衡化后的图' figure;imhist(K,title('直方图均衡化后的直方图' 3、图像的代数运算 代数运算是指对两幅输入图像进行点对点的加、减、

5、乘和除计算而得到输出图像的运算。对于相加和相乘的情形,可能不止有两幅图像参加运算。图像相加的一个重要应用是对同一场景的多幅图像求平均值。这点被经常用来有效地降低加性(additive)随机噪声的影响(见例4) %例4:图象加噪声再通过多次相加求平均的方法祛除噪声 I,M=imread('c:boat.png' J=imnoise(I,'salt & pepper',0.005; subplot(1,2,1,imshow(I,M,title('原图象' subplot(1,2,2,imshow(J,M,title('加噪声后图象&#

6、39; K=zeros(256; for i=1:100 J=imnoise(I,'salt & pepper',0.005; J1=im2double(J; % K=K+J1; K=K+J1; end K=K/100; figure,imshow(K,title('相加求平均后的图象' 4、图像滤波处理 在数字图像处理中,常 常会遇到图像中混杂有许多的噪声。因此,在进行图像处理中,有时要先进行祛除噪声的工作。最常用的祛除噪声的方法是用滤波器进行滤波处理。MATLAB的图像处理工具箱里也设计了许多的滤波器。如均值滤波器、中值滤波器、维纳滤波器等。用户可以

7、很方便的运用一些函数完成数字滤波工作。(见例5)。 %例5:用滤波器祛除图象噪声(分别用均值滤波,中值滤波,及维纳滤波器祛除加入高斯噪声的图象) I=imread('C:boat.png' J=imnoise(I,'gaussian',0,0.002; %加入高斯噪声 %进行均值滤波 h=fspecial('average',3; %fspecial函数用于产生预定义滤波器 I2=uint8(round(filter2(h,I; %filter2函数用于图像滤波,此处h是滤波参数(均值),I是要处理的图像 %进行中值滤波 I3=medfilt2(

8、J,3,3; %medfilt2函数用于图像的中值滤波 %进行维纳滤波 I4=wiener2(J,3,3;%进行一次维纳滤波 I5=wiener2(I4,3,3;%进行二次维纳滤波 subplot(2,3,1,imshow(I,title('原图象' subplot(2,3,2,imshow(J,title('加噪声图象' subplot(2,3,3,imshow(I2,title('均值滤波后图象' subplot(2,3,4,imshow(I3,title('中值滤波后图象' subplot(2,3,5,imshow(I4,t

9、itle('维纳滤波后图象' subplot(2,3,6,imshow(I5,title('两次维纳滤波后图象' 5、傅立叶变换 傅立叶变换是线性系统分析的一个有力的工具。它在图像处理,特别是在图像增强、复原和压缩中,扮演着非常重要的作用。实际中一般采用一种叫做快速傅立叶变换(FFT)的方法,MATLAB中的fft2指令用于得到二维FFT的结果,ifft2指令用于得到二维FFT逆变换的结果。(见例6) %例6:近似冲击函数的二维快速傅立叶变换(FFT) x=1:99;y=1:99; X,Y=meshgrid(x,y; A=zeros(99,99; A(49:51

10、,49:51=1; B=fft2(A; subplot(1,2,1,imshow(A,xlabel('空域图象' subplot(1,2,2,imshow(B,xlabel('时域图象' figure subplot(1,2,1,mesh(X,Y,A,xlabel('空域',grid on; subplot(1,2,2,mesh(X,Y,abs(B,xlabel('时域',grid on; 6、图像压缩 在图像的变换和压缩中,常常用到离散余弦变换(DCT)。DCT具有能使图像的最重要的信息集中在DCT的几个系数上的性能。正是基于此

11、,DCT通常应用于图像的压缩。(见例7) JPEG图像压缩算法: 输入图像被分成8*8或16*16的小块,然后对每一小块进行二维DCT(离散余弦变换)变换,变换后的系数量化、编码并传输; JPEG文件解码量化了的DCT系数,对每一块计算二维逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃那些不严重影响图像重构的接近0的系数。 DCT变换的特点是变换后图像大部分能量集中在左上角,因为左上放映原图像低频部分数据,右下反映原图像高频部分数据。而图像的能量通常集中在低频 部分。 %例7:DCT变换用于图象的压缩实例 I=imread('d:lilizongtest.jpg&#

12、39; %该图片在安装matlab的目录中找,原图为灰度图象 I=im2double(I;%图像存储类型转换 T=dctmtx(8;%离散余弦变换矩阵 B=blkproc(I,8 8,'P1*x*P2',T,T' %对原图像进行DCT变换 mask=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; B2=blkproc(B,8 8,'P1.*x',m

13、ask; %数据压缩,丢弃右下角高频数据 I2=blkproc(B2,8 8,'P1*x*P2',T',T; %进行DCT反变换,得到压缩后的图像 imshow(I title('原始图像' figure; imshow(I2 title('压缩后的图像' 应用到的函数: I=imread('图像文件名' :读取图像数据,保存在矩阵I中; imshow(I :显示灰度图像I,其他用法见matlab帮助; I2=im2double(I1 :把图像数组I1转换成double精度类型; D=dctmtx(n :二维离散余弦变换函

14、数,返回n*n离散余弦变换矩阵。 一个n*n的变换矩阵T被定义成: Tpq=1/sqrt(n ,当p=0,0<=q<=M-1; Tpq=sqrt(2/n*cospi*(2q+1*p/2n ,当1<=p<=M-1,0<=q<=M-1。 B=blkproc(A,m n,fun,P1,P2. :块操作函数。对图像A的每个不同的m*n块应用fun函数,P1,P2等为fun函数参数。在图像边缘用0来扩展;只有当fun的返回矩阵是m*n矩阵时,B和A的大小才相同。 figure:强制生成一个新的个绘图窗口; 可以看出,尽管由于85%的DCT系数被抛弃而使恢复后的图像质量

15、有所降低,图像内容仍能清晰可辨,达到了图像压缩的目的。 发表于 2007年04月06日 14:25:00|评论(3|编辑 新一篇: 部分matlab代码 | 旧一篇: MATLAB图像处理命令 logerer 发表于2008年1月6日 20:43:43 IP:举报 不错不错,感谢博主。图片也发上来就更好了。为什么 (378209553QQ.com) 发表于2008年5月28日 0:48:09 IP:举报 imshow('C:Documents and Settings系统维护桌面a.jpg'title('原图像' I=imread('C:Document

16、s and Settings系统维护桌面a.jpg' figure;imhist(I,title('对应直方图' %从得到的直方图可以看出,图像的对比度很低,灰度级集中在70-160范围内,如果只取 %这个范围内的灰度,并扩展到0,255,则会明显增强图像对比度 J=imadjust(I,70/255 160/255,; figure;imshow(J,title('经灰度级调整后的图' figure;imhist(J,title('灰度级调整后的直方图' %MATLAB还提供了histeq函数(自动直方图均衡化) K=histeq(I; figure;imshow(K,title('经直方图均衡化后的图' figure;imhist(K,title('直方图均衡化后的直方图' ? Error using => iptcheckinput Function IMHIST expected its first input, I or X, to be

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论