2022年常用图像函数 .pdf

上传人:Che****ry 文档编号:34286826 上传时间:2022-08-15 格式:PDF 页数:6 大小:62.48KB
返回 下载 相关 举报
2022年常用图像函数 .pdf_第1页
第1页 / 共6页
2022年常用图像函数 .pdf_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年常用图像函数 .pdf》由会员分享,可在线阅读,更多相关《2022年常用图像函数 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、RGB 色彩模式使用RGB 模型为图像中每一个像素的RGB 分量分配一个0255 范围内的强度值。例如:纯红色R 值为 255,G 值为 0,B 值为 0;灰色的R、G、B 三个值相等(除了0 和 255) ;白色的 R、G、B 都为 255;黑色的 R、G、B 都为 0。RGB 图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216 种颜色。在 RGB 模式下,每种RGB 成分都可使用从0(黑色)到255(白色)的值。例如,亮红色使用R 值 246、G 值 20 和 B 值 50。 当所有三种成分值相等时,产生灰色阴影。当所有成分的值均为255 时,结果是纯白色;当

2、该值为0 时,结果是纯黑色。1.imread: imread 函数用于读入各种图象文件,其一般的用法为X ,MAP=imread( filename,fmt ) 其中, X,MAP 分别为读出的图象数据和颜色表数据,fmt 为图象的格式,filename 为读取的图象文件(可以加上文件的路径)。例: X ,MAP=imread ( flowers.tif ,tif ); 也可以直接A= imread ( flowers.tif ,tif ) ; 2.imwrite imwrite 函数用于输出图象,其语法格式为:imwrite(X,map,filename,fmt)按照 fmt 指定的格式将图

3、象数据矩阵X 和调色板map 写入文件filename。3.imfinfo imfinfo 函数用于读取图象文件的有关信息,其语法格式为imfinfo(filename,fmt) imfinfo函数返回一个结构info,它反映了该图象的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图象的类型等。例:imfinfo(rice.tif) ans = Filename: C:MATLAB6p5toolboximagesimdemosrice.tif FileModDate: 26-Oct-1996 06:11

4、:58 4.imshow imshow 函数是最常用的显示各种图象的函数,其语法如下:imshow(X,map) 其中 X 是图象数据矩阵,map 是其对应的颜色矩阵,若进行图象处理后不知道图象数据的值域可以用 代替 map。需要显示多幅图象时,可以使用figure 语句,它的功能就是重新打开一个图象显示窗口。例:I=imread( rice.tif );Imshow(I); J=imread( flowers.tif );figure,imshow(J); 5.imhist 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师

5、精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - imhist 函数来计算和显示图象的直方图,imhist 函数的语法格式为:imhist(I,n) imhist(X,map) 其中 imhist(I,n) 计算和显示灰度图象I 的直方图, n 为指定的灰度级数目,默认值为256。imhist(X,map) 计算和显示索引色图象X 的直方图, map 为调色板。例:I = imread(rice.tif); imshow(I) figure, imhist(I) 6.imadjust 如果原图象f(x,y) 的灰度范围是m,M ,我们希望调整后的

6、图象g(x,y) 的灰度范围是n,N ,那么下述变换, ,就可以实现这一要求。MATLAB图象处理工具箱中提供的imadjust 函数,可以实现上述的线性变换对比度增强。Imadjust 函数的语法格式为:J = imadjust(I,low_in high_in,low_out high_out) J = imadjust(I,low_in high_in,low_out high_out) 返回图象I 经过直方图调整后的图象J,low_in high_in 为原图象中要变换的灰度范围,low_out high_out 指定了变换后的灰度范围。例:I = imread(pout.tif);

7、J = imadjust(I,0.3 0.7,); imshow(I), figure, imshow(J) 7.imresize MATLAB图像处理工具箱中的函数imresize 可以用上述的3 种方法对图像进行插值缩放,如果不指定插值方法,则默认为最邻近插值法。Imresize 函数的语法格式为:B = imresize(A,m,method) 参数method 用于指定插值的方法,可选用的值为nearest(最邻近法) ,bilinear(双线性插值),bicubic(双三次插值) ,默认为 nearest。B = imresize(A,m,method) 返回原图A 的 m 倍放大的

8、图像(m 小于 1 时效果是缩小) 。8.imnoise 在 MATLAB 中提供了给图像加入噪声的函数imnoise imnoise 的语法格式为J = imnoise(I,type) J = imnoise(I,type,parameters) 其中 J = imnoise(I,type) 返回对原始图像I 添加典型噪声的有噪图像J。参数 type 和 parameters用于确定噪声的类型和相应的参数。下面的命令是对图像eight.tif 分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如图所示:例:I=imread(eight.tif); J1=imnoise(I,gaussian,0,0

9、.02); J2=imnoise(I,salt & pepper,0.02); J3=imnoise(I,speckle,0.02); subplot(2,2,1),imshow(I),title( 原图像 ); subplot(2,2,2),imshow(J1),title( 加高斯噪声 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - subplot(2,2,3),imshow(J2),title( 加椒盐噪声 ); s

10、ubplot(2,2,4),imshow(J3),title( 加乘性噪声 ); 在上面的例子中使用了一个函数subplot。其作用就是将多幅图像显示再同一幅图像显示对话框中。其语法格式为:subplot(m,n,p) 其作用就是将一个图像显示对话框分成m 行 n 列,并显示第p 幅图像。在实际的对图像处理过程中,由于我们读出的图像是unit8 型,而在MA TLAB 的矩阵运算中要求所有的运算变量为double 型(双精度型) 。因此读出的图像数据不能直接进行相加求平均,因此必须使用一个函数将图像数据转换成双精度型数据。MATLAB中提供了这样的函数:im2double 函数,其语法格式为:

11、I2 = im2double(I1) 其中 I1 是输入的图像数据,它可能是unit8 或 unit16 型数据,通过函数的变化输出I2 为一个 double 型数据,这样两图像数据就可以方便的进行相加等代数运算. 作为一个示例, 现将刚刚显示的加有噪声的图像进行相加求平均以消除图像的噪声。在图像中我们给图像加的是均值为0,方差为 0.02 的高斯噪声, 将图像相加了一百遍,再求其平均值。程序如下:%例图像加噪声再通过多次相加求平均的方法祛除噪声I,M=imread(eight.tif); J=imnoise(I,gaussian,0,0.02); subplot(1,2,1),imshow(

12、I,M),title(原图像 ); subplot(1,2,2),imshow(J,M),title(加噪声后图像); K=zeros(242,308); for i=1:100 J=imnoise(I,gaussian,0,0.02); J1=im2double(J); K=K+J1; end K=K/100;%求图像的平均figure;imshow(K),title(相加求平均后的图像); 9.imresize Imresize 函数的语法格式为:B = imresize(A,m,method) 这里参数method 用于指定插值的方法,可选用的值为nearest(最邻近法) ,bilin

13、ear(双线性插值),bicubic(双三次插值) ,默认为 nearest。B = imresize(A,m,method) 返回原图A 的 m 倍放大的图像(m 小于 1 时效果是缩小) 。例:I=imread(ic.tif); J = imresize(I,1.25); imshow(I),title( 原图像 ) figure,imshow(J),title( 放大后的图像) 在工具箱中的函数imrotate 可用上述三种方法对图像进行插值旋转,默认的插值方法也是最邻近插值法。Imrotate 的语法格式为:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -

14、- - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - B = imrotate(A,angle,method 函数 imrotate 对图像进行旋转, 参数 method 用于指定插值的方法, , 可选用的值为nearest(最邻近法) ,bilinear (双线性插值) ,bicubic (双三次插值) ,默认为 nearest。一般说来旋转后的图像会比原图大,超出原图部分值为0。例:I=imread(rice.tif); J=imrotate(I,30,bilinear); imshow(I);title(

15、 原图像 ) figure,imshow(J),title( 旋转后的图像) MATLAB提供的快速傅立叶变换函数(1)fft2 fft2 函数用于计算二维快速傅立叶变换,其语法格式为:B = fft2(I) B = fft2(I) 返回图象I 的二维 fft 变换矩阵,输入图象I 和输出图象B 大小相同。例如,计算图象的二维傅立叶变换,并显示其幅值的结果,其命令格式如下load imdemos saturn2 imshow(saturn2) B = fftshift(fft2(saturn2); imshow(log(abs(B),notruesize) (2)fftshift MATLAB

16、提供的 fftshift 函数用于将变换后的图象频谱中心从矩阵的原点移到矩阵的中心,其语法格式为:B = fftshift(I) 对于矩阵I,B = fftshift(I) 将 I 的一、三象限和二、四象限进行互换。(2)ifft2 ifft2 函数用于计算图象的二维傅立叶反变换,其语法格式为:B = ifft2(I) B = ifft2(A) 返回图象I 的二维傅立叶反变换矩阵,输入图象I 和输出图象B 大小相同。其语法格式含义与fft2 函数的语法格式相同,可以参考fft2 函数的说明。低通滤波器的设计例:若图象的大小为128*128 ,则可以这样设计一个低通滤波器:H=zeros(128

17、); H(32:96,32:96)=1; % 此处的范围是人为取定的,可以根据需要更改。若图象矩阵I 的傅立叶变换是B(已经用fftshift 将频谱中心移至矩阵的中心),则对这幅图象做低通滤波,再做傅立叶逆变换命令为LOWPASS=B.*H;%此处设变换后的矩阵为LOWPASS ,另注意这儿是矩阵的点乘。C=ifft2(LOWPASS); Imshow(abs(C) MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:C = conv2(A,B) C = conv2(A,B) 返回矩阵 A 和 B 的二维卷积C。若 A 为 mana的矩阵, B 为 mbnb 的矩名师资料总结 -

18、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - 阵,则 C 的大小为 (ma+mb+1) (na+nb+1)。例:A=magic(5) A = 17241815 23571416 46132022 101219213 11182529 B=1 2 1 ;0 2 0;3 1 3 B = 121 020 313 C=conv2(A,B) C = 17586634323815 23858835677616 5514911716315913567 79

19、7816016118712951 238215319920510875 306813516891849 3365126851041527 MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2 ,filter2 的语法格式为:Y = filter2(h,X) 其中 Y = filter2(h,X) 返回图像 X 经算子 h 滤波后的结果,默认返回图像Y 与输入图像X 大小相同。例如:其实 filter2 和 conv2 是等价的。 MA TLAB 在计算 filter2 时先将卷积核旋转180 度,再调用conv2 函数进行计算。Fspecial 函数用于创建预定义的滤波算子,其

20、语法格式为:h = fspecial(type) h = fspecial(type,parameters) 参数 type 制定算子类型,parameters指定相应的参数,具体格式为:type=average,为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为3,3。type= gaussian,为高斯低通滤波器,参数有两个,n 表示模版尺寸,默认值为3,3 ,sigma表示滤波器的标准差,单位为像素,默认值为0.5。type= laplacian ,为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为0,1 ,默认值为0.2。type= log ,为拉普拉斯高斯

21、算子,参数有两个,n 表示模版尺寸,默认值为3,3, sigma 为滤波器的标准差,单位为像素,默认值为0.5 type= prewitt ,为 prewitt 算子,用于边缘增强,无参数。type= sobel,为著名的sobel 算子,用于边缘提取,无参数。type= unsharp,为对比度增强滤波器,参数alpha 用于控制滤波器的形状,范围为0,1,默认值为 0.2。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - 下面

22、举一个均值滤波的例子:在 MATLAB 图像处理工具箱中,提供了medfilt2 函数用于实现中值滤波。Medfilt2 函数的语法格式为:B = medfilt2(A)用 33 的滤波窗口对图像A 进行中值滤波。B = medfilt2(A,m n)用指定大小为mn的窗口对图像A 进行中值滤波MATLAB 的图像处理工具箱中提供的edge函数可以实现检测边缘的功能,其语法格式如下:BW = edge(I,sobel) BW = edge(I,sobel,direction) BW = edge(I,roberts) BW = edge(I,log) 这里 BW = edge(I,sobel)

23、 采用 Sobel 算子进行边缘检测。BW = edge(I,sobel,direction) 可以指定算子方向,即:direction= horizontal ,为水平方向;direction= vertical ,为垂直方向;direction= both ,为水平和垂直两个方向。BW = edge(I,roberts) 和 BW = edge(I,log) 分别为用Roberts 算子和拉普拉斯高斯算子进行边缘检测。例:用三种算子进行边缘检测。I=imread(eight.tif); imshow(I) BW1=edge(I,roberts); figure ,imshow(BW1),title(用 Roberts 算子 ) BW2=edge(I,sobel); figure,imshow(BW2),title(用 Sobel 算子) BW3=edge(I,log); figure,imshow(BW3),title(用拉普拉斯高斯算子) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁