matlab12Word下载.docx
- 文档编号:16743985
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:59
- 大小:59.61KB
matlab12Word下载.docx
《matlab12Word下载.docx》由会员分享,可在线阅读,更多相关《matlab12Word下载.docx(59页珍藏版)》请在冰豆网上搜索。
一般是应用于有格式图像,因无格式(二进制)图像的大小在读入时已知。
\img\radar’,’bmp’);
%读入图像[x,y]=size(I);
%获取图像大小得到x,y的值,该图像大小就是X×
Y。
Zeros()函数零矩阵函数。
I=zeros(100,100);
%I为100×
100的零矩阵,矩阵%中元素全为零。
Imshow(I);
%显示一个100×
100的黑方块。
例如作业题1,生成一个外边黑中间一块是白的图像,可以先生成一个全黑的图像,然后在中间作一个双重循环,赋象素值为255或1。
I1=zeros(128,128);
%生成一个128×
128的全黑图像forI=38:
1:
90forj=58:
70I1(i,j)=255;
%或I1(i,j)=1;
endendimshow(I1);
%I1即为所求图形。
•fft2(),ifft2()函数
fft2()函数为二维快速傅立叶变换函数;
ifft2()函数为二维逆快速傅立叶变换函数。
对一幅图像进行傅立叶变换后,得到它的频谱。
I2=fft2(I1);
%对图像I1进行二维快速傅立叶变换
Imshow(I2);
%显示频谱图。
I3=ifft2(I2);
%对图像I2进行二维逆快速傅立
%叶变换,得到原图像
•Imhist()函数
图像直方图函数。
imhist(I);
%显示图像I的直方图;
•Histeq()函数
直方图均衡化函数。
I1=histeq(I);
%对图像I进行直方图均衡化。
Imshow(I1);
%显示均衡化后的图像I
Imrotate()函数:
旋转图像函数;
格式:
J=imrotate(I,angle,method)I:
被旋转图像J:
旋转后的图像angle:
旋转角度method:
可为'
nearest‘、'
bilinear‘、'
bicubic'
I=imread(‘ic.tif’);
%读入图像ic.tifJ=imrotate(I,45,’bilinear’);
%对图像I旋转45度imshow(I);
%显示原图Ifigure,imshow(J);
%显示旋转后的图像J•Imnoise()函数:
给图像增加噪声。
J=imnoise(I,’噪声类型’,参数);
I:
待加噪声图像;
噪声类型:
高斯噪声、盐噪声等;
参数:
噪声密度(0--1);
J:
加入噪声的图像。
J=imnoise(I,‘salt&
pepper’,0.02);
%给图象I增加盐噪声
Edge()函数边缘检测函数。
J=edge(I,‘检测算子‘);
%J是对图像I用某算子%进行边缘检测后的边缘图;
%J是二值图像,即黑、白二色。
J=edge(I,’Roberts’);
%用Roberts算子对图像I进行边缘检测imshow(J);
%显示边缘图
•Title()函数给图像加标题;
title(‘图像变换结果图‘);
%图像标题为“图像变换结果图”•Xlable(),Ylable()函数对图像的x轴、y轴加标注。
Xlable(‘时间t’);
%x轴代表’时间t’Y1able(‘函数f(t)’);
%y轴代表函数f(t)
1月5日
matlab图像处理函数代码(转)
1、图像的读取
MATLAB中从图像文件中读取数据用函数imread(),这个函数的作用就是将图像文件的数据读入矩阵中,此外还可以用imfinfo()函数查看图像文件的信息(见例1)
%例1:
图像数据及图像信息的读取imfinfoc:
\lilizong\boat.bmp
%读取图像信息[A,M]=imread('
c:
\lilizong\boat.bmp'
);
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中imshow(A,M);
title('
原图像'
M(:
1)=0;
%将颜色数据矩阵的一列置零
Figureimshow(A,M);
改变颜色后的图像'
)
MATLAB还提供了将数据写入一个文件的函数imwrite以及不同类型文件相互转换的函数,可以参考MATLAB的帮助文件。
2、灰度直方图及直方图均衡化
灰度直方图用于显示图像的灰度值分布情况,是数字图像处理中最简单和最实用的工具。
MATLAB中提供了专门绘制直方图的函数imhist()。
用它可以很简单的绘制出一幅图像的灰度直方图(见例2)。
%例2:
直方图的显示
imshow('
%显示原图像
A=imread('
e:
\matlabwork\tuxiang\Girl.bmp'
'
bmp'
figure;
imhist(A),title('
对应直方图'
在图像处理中,点运算是简单而又重要的一种技术,其中最常用的一种应用就是直方图的均衡化(见例3)。
%例3:
直方图均衡化
\lilizong\boat1.bmp'
I=imread('
imhist(I),title('
%从得到的直方图可以看出,图像的对比度很低,灰度级集中在70-160范围内,如果只取
%这个范围内的灰度,并扩展到[0,255],则会明显增强图像对比度
J=imadjust(I,[70/255160/255],[]);
imshow(J),title('
经灰度级调整后的图'
imhist(J),title('
灰度级调整后的直方图'
%MATLAB还提供了histeq函数(自动直方图均衡化)
K=histeq(I);
imshow(K),title('
经直方图均衡化后的图'
imhist(K),title('
直方图均衡化后的直方图'
3、图像的代数运算
代数运算是指对两幅输入图像进行点对点的加、减、乘和除计算而得到输出图像的运算。
对于相加和相乘的情形,可能不止有两幅图像参加运算。
图像相加的一个重要应用是对同一场景的多幅图像求平均值。
这点被经常用来有效地降低加性(additive)随机噪声的影响(见例4)
%例4:
图象加噪声再通过多次相加求平均的方法祛除噪声
[I,M]=imread('
\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('
加噪声后图象'
K=zeros(256);
fori=1:
100
J=imnoise(I,'
J1=im2double(J);
%
K=K+J1;
K=K+J1;
end
K=K/100;
figure,imshow(K),title('
相加求平均后的图象'
4、图像滤波处理
在数字图像处理中,常常会遇到图像中混杂有许多的噪声。
因此,在进行图像处理中,有时要先进行祛除噪声的工作。
最常用的祛除噪声的方法是用滤波器进行滤波处理。
MATLAB的图像处理工具箱里也设计了许多的滤波器。
如均值滤波器、中值滤波器、维纳滤波器等。
用户可以很方便的运用一些函数完成数字滤波工作。
(见例5)。
%例5:
用滤波器祛除图象噪声(分别用均值滤波,中值滤波,及维纳滤波器祛除加入高斯噪声的图象)
C:
gaussian'
0,0.002);
%加入高斯噪声
%进行均值滤波
h=fspecial('
average'
3);
%fspecial函数用于产生预定义滤波器
I2=uint8(round(filter2(h,I)));
%filter2函数用于图像滤波,此处h是滤波参数(均值),I是要处理的图像
%进行中值滤波
I3=medfilt2(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),title('
维纳滤波后图象'
)subplot(2,3,6),imshow(I5),title('
两次维纳滤波后图象'
5、傅立叶变换
傅立叶变换是线性系统分析的一个有力的工具。
它在图像处理,特别是在图像增强、复原和压缩中,扮演着非常重要的作用。
实际中一般采用一种叫做快速傅立叶变换(FFT)的方法,MATLAB中的fft2指令用于得到二维FFT的结果,ifft2指令用于得到二维FFT逆变换的结果。
(见例6)
%例6:
近似冲击函数的二维快速傅立叶变换(FFT)
x=1:
99;
y=1:
[X,Y]=meshgrid(x,y);
A=zeros(99,99);
A(49:
51,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('
空域'
),gridon;
subplot(1,2,2),mesh(X,Y,abs(B)),xlabel('
时域'
6、图像压缩
在图像的变换和压缩中,常常用到离散余弦变换(DCT)。
DCT具有能使图像的最重要的信息集中在DCT的几个系数上的性能。
正是基于此,DCT通常应用于图像的压缩。
(见例7)
JPEG图像压缩算法:
输入图像被分成8*8或16*16的小块,然后对每一小块进行二维DCT(离散余弦变换)变换,变换后的系数量化、编码并传输;
JPEG文件解码量化了的DCT系数,对每一块计算二维逆DCT变换,最后把结果块拼接成一个完整的图像。
在DCT变换后舍弃那些不严重影响图像重构的接近0的系数。
DCT变换的特点是变换后图像大部分能量集中在左上角,因为左上放映原图像低频部分数据,右下反映原图像高频部分数据。
而图像的能量通常集中在低频部分。
%例7:
DCT变换用于图象的压缩实例
d:
\lilizong\test.jpg'
%该图片在安装matlab的目录中找,原图为灰度图象
I=im2double(I);
%图像存储类型转换
T=dctmtx(8);
%离散余弦变换矩阵
B=blkproc(I,[88],'
P1*x*P2'
T,T'
%对原图像进行DCT变换
mask=[11110000
11100000
11000000
10000000
00000000
00000000];
B2=blkproc(B,[88],'
P1.*x'
mask);
%数据压缩,丢弃右下角高频数据
I2=blkproc(B2,[88],'
T'
T);
%进行DCT反变换,得到压缩后的图像
imshow(I)
原始图像'
imshow(I2)
压缩后的图像'
应用到的函数:
图像文件名'
):
读取图像数据,保存在矩阵I中;
imshow(I):
显示灰度图像I,其他用法见matlab帮助;
I2=im2double(I1):
把图像数组I1转换成double精度类型;
D=dctmtx(n):
二维离散余弦变换函数,返回n*n离散余弦变换矩阵。
一个n*n的变换矩阵T被定义成:
Tpq=1/sqrt(n)
当p=0,0<
=q<
=M-1;
Tpq=sqrt(2/n)*cos[pi*(2q+1)*p/2n]
当1<
=p<
=M-1,0<
=M-1。
B=blkproc(A,[mn],fun,P1,P2...):
块操作函数。
对图像A的每个不同的m*n块应用fun函数,P1,P2等为fun函数参数。
在图像边缘用0来扩展;
只有当fun的返回矩阵是m*n矩阵时,B和A的大小才相同。
figure:
强制生成一个新的个绘图窗口;
可以看出,尽管由于85%的DCT系数被抛弃而使恢复后的图像质量有所降低,图像内容仍能清晰可辨,达到了图像压缩的目的。
Matlab图像处理工具箱
缺省情况下,MATLAB将图像中的数据存储为双精度类型(double),64位浮点
数,所需存储量很大;
MATLAB还支持另一种类型无符号整型(uint8),即图像矩
阵中每个数据占用1个字节。
在使用MATLAB工具箱时,一定要注意函数所要求的参数类型。
另外,uint8
与double两种类型数据的值域不同,编程需注意值域转换。
从uint8到double的转换
---------------------------------------------
图像类型
MATLAB语句
索引色
B=double(A)+1
索引色或真彩色B=double(A)/255
二值图像
B=double(A)
从double到uint8的转换
索引色
B=uint8(round(A-1))
索引色或真彩色B=uint8(round(A*255))
二值图像
B=logical(uint8(round(A)))
2.图像处理工具箱所支持的图像类型
2.1真彩色图像
R、G、B三个分量表示一个像素的颜色。
如果要读取图像中(100,50)处的像素值,
可查看三元数据(100,50,1:
3)。
真彩色图像可用双精度存储,亮度值范围是[0,1];
比较符合习惯的存储方法是用无
符号整型存储,亮度值范围[0,255]
2.2索引色图像
包含两个结构,一个是调色板,另一个是图像数据矩阵。
调色板是一个有3列和若干行
的色彩映象矩阵,矩阵每行代表一种颜色,3列分别代表红、绿、蓝色强度的双精度数。
注意:
MATLAB中调色板色彩强度[0,1],0代表最暗,1代表最亮。
常用颜色的RGB值
--------------------------------------------
颜色RGB
颜色RGB
黑
001
洋红101
白
111
青蓝011
红
100
天蓝0.6701
绿
010
橘黄10.50
蓝
深红0.500
黄
110
灰0.50.50.5
产生标准调色板的函数
-------------------------------------------------
函数名
调色板
Hsv
色彩饱和度,以红色开始,并以红色结束
Hot
黑色-红色-黄色-白色
Cool
青蓝和洋红的色度
Pink
粉红的色度
Gray
线型灰度
Bone
带蓝色的灰度
Jet
Hsv的一种变形,以蓝色开始,以蓝色结束
Copper线型铜色度
Prim
三棱镜,交替为红、橘黄、黄、绿和天蓝
Flag
交替为红、白、蓝和黑
--------------------------------------------------
缺省情况下,调用上述函数灰产生一个64×
3的调色板,用户也可指定调色板大小。
索引色图像数据也有double和uint8两种类型。
当图像数据为double类型时,值1代表调色板中的第1行,值2代表第2行……
如果图像数据为uint8类型,0代表调色板的第一行,,值1代表第2行……
2.3灰度图像
存储灰度图像只需要一个数据矩阵。
数据类型可以是double,[0,1];
也可以是uint8,[0,255]
2.4二值图像
二值图像只需一个数据矩阵,每个像素只有两个灰度值,可以采用uint8或double类型存储。
MATLAB工具箱中以二值图像作为返回结果的函数都使用uint8类型。
2.5图像序列
MATLAB工具箱支持将多帧图像连接成图像序列。
图像序列是一个4维数组,图像帧的序号在图像的长、宽、颜色深度之后构成第4维。
分散的图像也可以合并成图像序列,前提是各图像尺寸必须相同,若是索引色图像,
调色板也必须相同。
可参考cat()函数A=cat(4,A1,A2,A3,A4,A5)
3.MATLAB图像类型转换
图像类型转换函数
---------------------------------------------------------------------------
函数名
函数功能
dither
图像抖动,将灰度图变成二值图,或将真彩色图像抖动成索引色图像
gray2ind将灰度图像转换成索引图像
grayslice通过设定阈值将灰度图像转换成索引色图像
im2bw
通过设定亮度阈值将真彩色、索引色、灰度图转换成二值图
ind2gray将索引色图像转换成灰度图像
ind2rgb
将索引色图像转换成真彩色图像
mat2gray将一个数据矩阵转换成一副灰度图
rgb2gray将一副真彩色图像转换成灰度图像
rgb2ind
将真彩色图像转换成索引色图像
----------------------------------------------------------------------------
4.图像文件的读写和查询
4.1图形图像文件的读取
利用函数imread()可完成图形图像文件的读取,语法:
A=imread(filename,fmt)
[X,map]=imread(filename,fmt)
[...]=imread(filename)
[...]=imread(filename,idx)(只对TIF格式的文件)
[...]=imread(filename,ref)(只对HDF格式的文件)
通常,读取的大多数图像均为8bit,当这些图像加载到内存中时,Matlab就将其存放在类uint8中。
此为Matlab还支持16bit的PNG和TIF图像,当读取这类文件时,Matlab就将其存贮在uint16中。
对于索引图像,即使图像阵列的本身为类uint8或类uint16,imread函数仍将颜色映象表读取并存贮到一个双精度的浮点类型的阵列中。
4.2图形图像文件的写入
使用imwrite函数,语法如下:
imwrite(A,filename,fmt)
imwrite(X,map,filename,fmt)
imwrite(...,filename)
imwrite(...,para
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab12
![提示](https://static.bdocx.com/images/bang_tan.gif)