图像处理常用命令matlab

2019-04-10 08:47

1. 读入并显示一幅图像

clear %清除所有的工作平台变量 close all %关闭已打开的图形窗口

I=imread ('pout.tif'); %读取图像pout.tif(该图像是图像处理工具箱自带的图像),

%存储在一个名为I的数组中

imshow(I) %显示图像I

2. 检查内存中的图像

whos %查看图像数据I是如何存储在内存中的。

3. 实现直方图均衡化

figure %生成一个新的图形窗口,避免后面的图像覆盖前面图像的显示 imhist(I) %创建描述图像I灰度分布的直方图 I2=histeq(I); %将图像的灰度值扩展到整个灰度范围,从而提高图像数组I的对比度。 figure,imshow(I2) %显示修改过的图像I2

figure,imhist(I2) %显示拓展后的灰度值的分布情况

4. 保存图像

imwrite(I2,'pout.png'); %将图像I2以PNG图像文件格式保存到磁盘

5. 检查新生成文件的内容

imfinfo('pout2.png') %观察保存的图像文件信息

图像处理的高级应用

主要对一幅灰度图像rice.tif进行一些较为高级的操作为例说明整个过程。 1. 读取和显示图像

clear %清除所有的工作平台变量 close all %关闭已打开的图形窗口

I=imread('rice.png'); %读取图像rice.png (该图像是图像处理工具箱自带的图像) imshow(I) %显示图像

2. 估计图像背景

background=imopen(I,strel('disk',15)); %对图像I进行形态学开操作,删除那些不完全包括

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

figure,imshow(background)

figure,surf(double(background(1:8:end,1:8:end))),zlim([0 255]); %以表面形式显示背景

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

I2=imsubtract(I,background); %将背景图像background从原始图像I中减去 figure,imshow(I2)

4. 调节图像对比度

I3=imadjust(I2,stretchlim(I2),[0 1]); %调节图像的对比度 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、65 535(针对不同存储类型)代表白色。

(4) 多帧图像

多帧图像是一种包含多幅图像或帧的图像文件,又称为多页图像或图像序列。 在MATLAB中,它是一个四维数组,其中第四维用来指定帧的序号。

在一个多帧图像数组中,每一幅图像必须有相同的大小和颜色分量,每一幅图像还要使用相同的调色板。另外,图像处理工具箱中的许多函数(如:imshow)只能对多幅图像矩阵的前两维或三维进行操作,也可以对四维数组使用这些函数,但是必须单独处理每一帧。如果将一个数组传递给一个函数,并且数组的维数超过该函数设计的超作维数,那么得到的结果是不可预知的。

(5) RGB图像

RGB图像又称为真彩色图像,它是利用R、G、B三个分量表示一个像素的颜色,R、G、B分别代表红、绿、篮3种不同的颜色,通过三基色可以合成出任意颜色。所以对一个尺寸为n×m的彩色图像来说,在MATLAB中则存储为一个n×m×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

注意:

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

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

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

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

RGB=imread('autumn.tif'); subplot(1,2,1);imshow(RGB); 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)。 I=imread('pout.tif');

[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转换成灰度图像。 load trees

I=ind2gray(X,map);

subplot(1,2,1);imshow(X,map); subplot(1,2,2);imshow(I);

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

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

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

与输入图像类型相同。

如果输入的是颜色图,则输入和输出的图像均为双精度类型。 *例:将RGB图像flowers.tif转换为灰度图像。 RGB=imread('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转换为索引图像。 RGB=imread('flowers.tif'); figure(1);imshow(RGB)

figure(2);Y=rgb2ind(RGB,128);imshow(Y)


图像处理常用命令matlab.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:长城物业的战略发展思路

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: