图像处理常用命令matlabWord格式文档下载.docx

上传人:b****8 文档编号:22440509 上传时间:2023-02-04 格式:DOCX 页数:52 大小:52.54KB
下载 相关 举报
图像处理常用命令matlabWord格式文档下载.docx_第1页
第1页 / 共52页
图像处理常用命令matlabWord格式文档下载.docx_第2页
第2页 / 共52页
图像处理常用命令matlabWord格式文档下载.docx_第3页
第3页 / 共52页
图像处理常用命令matlabWord格式文档下载.docx_第4页
第4页 / 共52页
图像处理常用命令matlabWord格式文档下载.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

图像处理常用命令matlabWord格式文档下载.docx

《图像处理常用命令matlabWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《图像处理常用命令matlabWord格式文档下载.docx(52页珍藏版)》请在冰豆网上搜索。

图像处理常用命令matlabWord格式文档下载.docx

disk'

15));

%对图像I进行形态学开操作,删除那些不完全包括

%在半径为15的圆盘中的对象,实现对背景亮度的估计

figure,imshow(background)

figure,surf(double(background(1:

8:

end,1:

end))),zlim([0255]);

%以表面形式显示背景

3.从原始图像中减去背景图像

I2=imsubtract(I,background);

%将背景图像background从原始图像I中减去

figure,imshow(I2)

4.调节图像对比度

I3=imadjust(I2,stretchlim(I2),[01]);

%调节图像的对比度

figure,imshow(I3);

5.使用阈值操作将图像转换为二进制图像

level=graythresh(I3);

bw=im2bw(I3,level);

figure,imshow(bw)

6.检查图像中的对象个数

[labeled,numObjects]=bwlabel(bw,4);

%确定图像中的米粒个数

numObjects

101

7.检查标记矩阵

grain=imcrop(labeled)%选择并显示已标记的对象和部分背景内的像素

RGB_label=label2rgb(labeled,@spring,'

C'

'

shuffle'

%将标记矩阵显示为一副伪彩色的索引图像,在伪彩色的彩色图像中,

%标记矩阵中的每一个对象都将被映射为相关调色板中的不同颜色

imshow(RGB_label);

8.计算图像中对象的统计属性

graindata=regionprops(labeled,'

basic'

%测量图像或者区域的属性,并返回一个结构数组。

当用于一个标记图像时,%它还为每一个标记分量创建一个结构元素。

graindata(51).Area%显示第51个元素的属性

graindata(51).BoundingBox,graindata(51).Centroid%寻找最近的边缘和中心

allgrains=[graindata.Area];

%创建一个新的向量allgrains,其包含每个米粒的范围

allgrains(51)%查看第51个元素的范围

max(allgrains)%获取最大的米粒大小

biggrain=find(allgrains==404)%返回最大米粒的标记号

mean(allgrains)%获取米粒的平均大小

hist(allgrains,20)%绘制包含20个柱的直方图

图像格式:

是存储图像采用的文件格式。

不同的操作系统、不同的图像处理软件,所支持的图像格式都有可能不同。

在实际应用中经常会遇到的图像格式有:

BMP、GIF、TIFF、PCX、JPEG、PSD、PCD、

WMF等。

*

(1)BMP(Bitmap)文件

*

(2)GIF文件

*(3)TIF文件

*(4)JPEG文件

图像类型:

是指数组数值与像素颜色之间定义的关系,它与图像格式概念有所不同。

在MATLAB图像处理工具箱中,有五种类型的图像:

(1)二进制图像

在一幅二进制图像中,每一个像素将取两个离散数值(0或1)中的一个,从本质上说,这两个数值分别代表状态“开”(on)或“关”(off)。

二进制图像仅使用unit8或双精度类型的数组来存储。

在图像处理工具箱中,任何返回一幅二进制图像的数组均使用unit8逻辑数组存储该图像,并且使用一个逻辑标志来指示unit8逻辑数组的数据范围。

若逻辑状态为“开”(on),数组范围为[0,1];

若为“关”(off),则数组范围为[0,255]。

(2)索引图像

索引图像:

是一种把像素值直接作为RGB调色板下标的图像。

在MATLAB中,索引图像包含有一个数据矩阵X和一个颜色映射(调色板)矩阵map。

数据矩阵:

可以是unit8、unit16、双精度类型的;

颜色映射矩阵map:

是一个m×

3的数据矩阵,其中每个元素的值均为[0,1]之间的双精度浮点型数据,map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。

索引图像可把像素值直接映射为调色板数值,每一个像素的颜色通过使用X的数值作为map的下标来获得,如值1指向矩阵map中的第一行,值2指向第二行,依此类推。

颜色映射通常与索引图像存储在一起,当装载图像时,MATLAB自动将颜色映射表与图像同时装载。

图像矩阵与颜色映射表之间的关系依赖于图像数据矩阵的类型。

如果图像数据矩阵是双精度类型,则数据1指向矩阵map中的第一行,数据值2将指向map中的第二行,依此类推;

如果图像矩阵是unit8或unit16类型时,将产生一个偏移,即数值0表示矩阵map中的第一行,数据值1将指向map中的第二行,依此类推。

(3)灰度图像

灰度图像通常由一个unit8、unit16、双精度类型的数组来描述,其实质是一个数据矩阵I,该矩阵中的数据均代表了在一定范围内的灰度级,每一个元素对应于图像的一个像素点,通常0代表黑色,1、255、65535(针对不同存储类型)代表白色。

(4)多帧图像

多帧图像是一种包含多幅图像或帧的图像文件,又称为多页图像或图像序列。

在MATLAB中,它是一个四维数组,其中第四维用来指定帧的序号。

在一个多帧图像数组中,每一幅图像必须有相同的大小和颜色分量,每一幅图像还要使用相同的调色板。

另外,图像处理工具箱中的许多函数(如:

imshow)只能对多幅图像矩阵的前两维或三维进行操作,也可以对四维数组使用这些函数,但是必须单独处理每一帧。

如果将一个数组传递给一个函数,并且数组的维数超过该函数设计的超作维数,那么得到的结果是不可预知的。

(5)RGB图像

RGB图像又称为真彩色图像,它是利用R、G、B三个分量表示一个像素的颜色,R、G、B分别代表红、绿、篮3种不同的颜色,通过三基色可以合成出任意颜色。

所以对一个尺寸为n×

m的彩色图像来说,在MATLAB中则存储为一个n×

3的多维数据数组,其中数组中的元素定义了图像中的每一个像素的红、绿、篮颜色值。

图形文件格式把RGB图像存储为24位的图像,红、绿、篮分量分别占用8位。

MATLAB的RGB数组可以是双精度的浮点型、8位或16位无符号的整数类型。

在一个双精度类型的RGB数组中,每一个颜色分量都是一个[0,1]范围内的数值。

如:

颜色分量为(0,0,0)的像素将显示为黑色;

颜色分量为(1,1,1)的像素将显示为白色。

每一个像素的三个颜色分量都存储在数组的第三维中。

像素(10,5)的红、绿、篮颜色值分别保存在元素RGB(10,5,1)、RGB(10,5,2)、RGB(10,5,3)中。

例:

创建一个简单的RGB图像,该图像包含某一范围内不中断的红、绿、篮颜色分量,另外,

针对每一个颜色分量各创建一幅图像来加以对比:

RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);

R=RGB(:

:

1);

G=RGB(:

2);

B=RGB(:

3);

subplot(2,2,1);

imshow(R);

subplot(2,2,2);

imshow(G);

subplot(2,2,3);

imshow(B);

subplot(2,2,4);

imshow(RGB);

(1)图像颜色浓淡处理(图像抖动)

X=dither(RGB,map)%通过抖动算法将真彩色图像RGB按指定的颜色(调色板)map转换

成索引色图像X

X=dither(RGB,map,Qm,Qe)

%利用给定的参数Qm,Qe从真彩色图像RGB中产生索引色图像X。

%Qm表示沿每个颜色轴反转颜色图的量化(即对于补色各颜色轴)的位数,

%Qe表示颜色空间计算误差的量化误差。

%如果Qe<

Qm,则不进行抖动操作。

Qm的默认值是5,Qe的默认值是8。

BW=dither(I)%通过抖动算法将矩阵I中的灰度图像转换为二进制图像。

注意:

输入图像可以是双精度类型或8位无符号类型,其他参数必须是双精度类型。

如果输出的图像是二值图像或颜色种类少于256的索引图像时,为uint8类型,否则为doule型。

由RGB图像产生一个索引图像

使用索引图像chess.met的颜色图map,通过抖动map中的颜色,产生RGB图像autumn.tif的近似索引图像。

loadchess;

RGB=imread('

autumn.tif'

subplot(1,2,1);

Y=dither(RGB,map)

subplot(1,2,2);

imshow(Y,map);

(2)灰度图像转换为索引图像

[X,map]=gray2ind(I,n)%按指定的灰度级数n和颜色图map,将灰度图像I转换成索引色

%图像X,n的默认值为64。

将灰度图像pout.tif转化成索引图像X,颜色图分别为gray(128)和gray(16)。

[I1,map1]=gray2ind(I,128);

[I2,map2]=gray2ind(I,16);

subplot(1,3,1);

imshow(I1,map1);

subplot(1,3,2);

imshow(I2,map2);

subplot(1,3,3);

imshow(I);

(3)索引图像转换为灰度图像

I=ind2gray(X,map)%将具有颜色图map的索引色图像X转换成灰度图像I,去掉了图像的

%色度和饱和度,仅保留了图像的亮度信息。

%输入图像可以是double或unit8类型。

将一幅索引图像trees.mat转换成灰度图像。

loadtrees

I=ind2gray(X,map);

imshow(X,map);

(4)RGB图像转换为灰度图像

I=rgb2gray(RGB)%将真彩色图像RGB转换成灰度图像I。

Newmap=rgb2gray(map)%将颜色图map转换成灰度级颜色图。

如果输入的是真彩色图像,则图像可以是8位无符号类型或双精度类型,输出图像I

与输入图像类型相同。

如果输入的是颜色图,则输入和输出的图像均为双精度类型。

*例:

将RGB图像flowers.tif转换为灰度图像。

flowers.tif'

figure

(1);

imshow(RGB)

figure

(2);

Y=rgb2gray(RGB);

imshow(Y)

(5)RGB图像转换为索引图像

[X,map]=rgb2ind(RGB)%直接将RGB图像转换为具有颜色图map的矩阵X.

[X,map]=rgb2ind(RGB,tol)%用均匀量化的方法将RGB图像转换为索引图像X.

[X,map]=rgb2ind(RGB,n)%使用最小方差量化的方法将RGB图像转换为索引图像,

%map中包括至少n个颜色。

X=rgb2ind(RGB,map)%通过将RGB中的颜色与颜色图map中最相近的颜色匹配,

%将RGB图像转换为具有map颜色图的索引图像。

[…]=rgb2ind(…,dither_option)

%通过dither_option参数来设置是否抖动。

dither_option为dither表示使用抖动,以达到

%较好的颜色效果;

缺省时为nodither,使用了新颜色图中最接近的颜色来画原图的颜色。

将RGB图像flowers.tif转换为索引图像。

Y=rgb2ind(RGB,128);

(6)索引图像转换为RGB图像

RGB=ind2rgb(X,map)%将矩阵X及相应颜色图map转化成真彩图像RGB。

输入图像X可以是双精度类型或8位无符号类型,输出图像RGB为双精度类型。

将索引图像wmandril.mat转换为RGB图像。

loadwmandril;

I=ind2rgb(X,map);

imshow(I)

(7)通过阈值化方法将图像转换为二值图像

im2bw函数:

通过设置亮度阈值将真彩图像、索引图像及灰度图像转化成二值图像。

在转换过程中,如果输入图像不是灰度图像,首先将其转换为灰度级图像,然后通过阈值化将灰度级图像转换成二值图像。

输出二值图像在输入图像所有亮度小于给定值(level取值范围为[0,1])像素点处均为0,其他均为1。

其语法格式为:

BW=im2bw(I,level)%将灰度图像I转化为黑白二值图像。

BW=im2bw(X,map,level)%将带有颜色图map的索引图像X转化为黑白二值图像。

BW=im2bw(RGB,level)%将RGB图像转化为黑白二值图像。

输入图像可以是双精度类型或8位无符号类型,输出图像为8位无符号类型。

通过阈值化方法将索引图像trees.mat转换为二值图像,阈值为0.4。

loadtrees;

BW=im2bw(X,map,0.4);

imshow(BW)

(8)通过阈值化方法从灰度图像产生索引图像

X=grayslice(I,n)%将灰度图像I均匀量化为n个等级,然后转换为伪彩色图像X。

X=grayslice(I,v)%按指定的阈值向量v(每一个元素都在0和1之间)对图像I的值域进行

划分,而后转换成索引图像X。

输入图像I可以是双精度类型或8位无符号类型。

如果阈值数量小于256,则返回图像X的数据类型是8位无符号类型,X的值域为[0,n]

或[0,length(v)];

否则,返回图像X为双精度类型,值域为[1,n+1]或[1,length(v)+1]。

将一幅灰度图像转换成索引图像。

alumgrns.tif'

X=grayslice(I,16);

imshow(X,hot(16));

(9)将矩阵转换为灰度图像

I=mat2gray(X,[xmin,xmax])

%按指定的取值区间[xmin,xmax]将数据矩阵X转换为图像I,xmin对应灰度0(最暗即黑),%xmax对应灰度1(最亮即白)。

如果不指定区间[min,max]时,MATLAB则自动将X阵中%最小设为xmin,最大设为xmax。

输入X和输出图像I都是双精度类型。

实际上,mat2gray函数与imshow函数功能类

似。

Imshow函数也可用来使数据矩阵可视化。

将图像滤波后产生的矩阵转换为灰度图像。

saturn.tif'

J=filter2(fspecial('

sobel'

),I);

K=mat2gray(J);

imshow(K);

3.3图像的显示

图像的显示过程:

将图像从一组离散数据还原为一幅可见的图像的过程。

图像的显示是提高图像处理分析性能非常有用的一个手段,通过图像的显示,可以监视图像处理过程,并与处理分析交互地控制处理分析过程。

图像显示最重要的特性是图像的大小、光度分辨率、灰度线性、平坦能力和噪声特性等,这些显示特性将共同决定一个数字图像显示系统的质量及其在特定应用中的适用性等性能指标。

3.3.1标准图像显示技术

Matlab显示图像的主要方法是调用image函数,该函数可创建一个句柄图形图像对象,并且包含设置该对象的各种属性的调用语法;

此外,还提供了与image函数类似的imagesc函数,利用该函数,可以实现对输入图像数据的自动缩放。

同时,还包含了一个附加的显示函数,即imshow函数,与image和imagesc函数类似,imshow函数可用于创建句柄图形图像对象。

此外,该函数也可以自动设置各种句柄属性和图像特征,以优化显示效果。

(1)imshow函数

当调用imshow函数显示图像时,将自动设置图形窗口、坐标轴和图像属性,以控制图像数据在MATLAB的解释方式。

在Matlab中,imshow函数的语法如下:

imshow(I,n)

imshow(I,[low,high])

imshow(…,display_option)

imshow(x,y,A,…)

imshowfilename

h=imshow(…)

根据用户使用参数的不同和MATLAB工具箱的设置,imshow函数在调用时除了完成前面提到的属性设置外,还可以:

①设置其他的图形窗口对象和坐标轴对象的属性以定制显示效果。

例如,可以通过设置隐藏坐标轴及其标示;

②包含或隐藏图像边框;

③调用函数以显示没有彩色渐变效果的图像。

(2)显示索引图像

利用imshow函数显示MATLAB的索引图像时,可以同时指定图像的数据矩阵和颜色映射表,形如:

imshow(X,map)

其中,对于X中的每个像素,imshow都将其显示为存储在map映射表矩阵的相应的行所对应的颜色。

(3)显示灰度图像

调用imshow函数显示灰度图像的语法如下:

imshow(I,N)

其中:

I为灰度图像数据矩阵,N为整数,用于指定对应于灰度颜色映射表中的索引数。

I=imshow('

windows.bmp'

imshow(I,64);

%绘制出具有64个灰度等级的灰度图

imshow(I,2);

%绘制出具有2个灰度等级的灰度图,即黑白图。

(4)显示二进制位图

imshow函数显示二进制位图的语法如下:

如果该位图的图像矩阵属于类double,则imshow函数将其显示为灰度图来对待,图像数据矩阵中值0所对应的像素显示为黑色,值1所对应的像素显示为白色。

(5)显示RGB图像

显示RGB图像的语法如下:

RGB为一个m×

3的图像数据矩阵。

在Matlab中,该数据矩阵属于类double、类uint8或uint16。

(6)显示图形文件中的图像

通常情况下,在显示图像时,该图像的对象数据保存在MATLAB运行内存中的一个或多个变量中。

但是,如果用户将图像保存在可以通过imread函数读取的图形文件中,则可通过下面的语法直接将其显示出来:

如果图像是多帧的,那么imshow将仅仅显示第一帧,这种调用格式对于图像扫描非常有用。

在使用这种格式时,该图形文件必须在当前目录下,或在MATLAAB目录下。

如果图像数据没有保存在MATLAB工作平台中,可以通过使用getimage函数将从当

前的句柄图形图像对象中获取图像数据。

rgb=getimage;

下面的代码可以显示一幅小孩儿的图像:

imshowkids.tif

(7)显示非图像数据

非图像数据:

是指其数据矩阵的元素值落在“合法”范围之外。

对于double数组来说,该范围是[0,1];

对于uint8数组来说,该范围是[0,255];

对于uint16数组来说,该范围是[0,65535]。

假设将一个灰度图进行过滤操作,则得到的结果数据可能在“合法”范围之外。

此时显

示该结果数据必须使用下面的语法:

先读取testpat.tif图形文件,然后对其进行过滤操作,再将结果数据显示出来:

testpat.tif'

J=filter([12;

-1-2],I);

figure,imshow(J,[]);

3.3.2特殊图像显示技术

在MATLAB的影像工具箱中,除了imshow函数外,还提供了一些实现特殊显示功能的函数。

它们与MATLAB自身提供的图形函数相结合,为图像显示提供了各种特殊显示技术,包括有:

①图像显示中添加颜色条;

②显示多帧图像阵列;

③图像上的区域缩放;

④将图像纹理映射到表面对象上;

⑤显示多幅图像。

(1)添加颜色条;

在MATLAB的图像显示中,可以利用colorber函数将颜色条添加到坐标轴对象中。

如果该坐标轴对象包含一个图像对象,则添加的颜色条将指示出该图像中不同颜色的数据值。

先过滤一个类为uint8的图像,然后将其显示为灰度图,并添加颜色条:

h=[121;

00;

-1-2-1];

J=filter2(h,I);

imshow(J,[]);

colorbar;

(2)显示多帧图像阵列;

MTTLAB支持的多帧图像的文件格式包括HDF和TIFF两种。

文件一旦被读入MATLAB,多帧图像的显示帧数由矩阵的第四维数值来决定。

在多阵列中查看图像,有下面几种方式:

①独立显示每一帧,调用imshow函数;

②同时显示所有的帧,调用montage函数;

③将多帧阵列转换为动画电影,调用immovie函数。

1)单帧显示

利用MATLAB标准的索引方法指定帧号,调用imshow函数,就可独立显示特定的帧。

loadmri

imshow(D(:

7));

D为MRI(磁共振图像)中的多帧图像阵列,调用imshow函数显示其中的第7帧。

2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1