您的位置:首页 > 编程语言 > MATLAB

Matlab图像处理(1)

2017-11-23 14:20 162 查看
[align=center]入门基础知识
[/align]

[b]Matlab图像类型[/b]

1、亮度图像(灰度图像):数据矩阵I表示灰度值,如果是uint8类型,数值范围可以是[0,255];如果是uint16类型,数值范围为[0,65536]
2、二值图像:在MATLAB数组中只有0和1两个取值。
3、索引图像:包括一个数据矩阵X(整数,对应MAP中的行号)和色图阵MAP
4、RGB图像:包括一个m*n*3的数据矩阵

图像文件的读取

A=imread(‘filename’,‘fmt’)或I=imread(‘filename.fmt’)

filname:图像存放地址+名称     fmt:文件格式(‘bmp’ Windows位图格式;‘jpg’or‘jpeg’ 联合图像专家组格式;‘tif’or‘tiff’ 标志图像文件格式;‘gif’ 图形交换格式;‘pcx’ Windows画刷格式;‘png’ 可移动网络图形格式;‘xwd’ X Window Dump格式)

图像文件的写入(保存):将A写入finame.fmt

1、imwrite(A,‘filename’,‘fmt’)或imwrite(A,‘filename.fmt’)     参数含义同上

另一种常用但只适用于JPEG图像的imwrite函数语法为
2、imwrite(f,'filename.jpg','quality',q)

其中q是一个在0-100之间的整数,为图像质量因数。

图像的显示
1、 imshow函数:

imshow(I,G) :G是显示该图像的灰度级数,若将G省略,则默认的灰度级数为256

imshow(I,[low high]) :用于显示灰度图像,其中I为灰度图像的数据矩阵,a、b为灰度级数目,显示灰度级从a到b之间的部分,如果不写的话默认值为0-255。会将所有小于或等于low的值都显示为黑色,所有大于或等于high的值都显示为白色。界于low和high之间的值将以默认的级数显示为中等亮度值。

imshow(I,[]) :显示区间为最小值和最大值之间。该函数用来显示动态范围较小的图像时非常有用。

如果不希望在显示图像之前装载图像,那么可以使用后面这个格式直接进行图像文件的显示:imshow filename.fmt

2、image(X)

image函数是附带坐标的图像显示函数,因为image函数是将图像矩阵当做索引图像或者RGB图像来显示,显示灰色图像很不方便。其中,X为输入图像,可以是索引图像的M*N的二维图像矩阵,也可以表示真彩RGB图像的M*N*3的矩阵,也可以是文件。

3、显示多幅图像:

显示多幅图像最简单的方法就是在不同的图形窗口中显示它们。imshow总是在当前窗口中显示一幅图像,如果用户想连续显示两幅图像,那么第二幅图像就会替代第一幅图像。为了避免图像在当前窗口中的覆盖现象,在调用imshow函数显示下一幅图像之前可以使用figure命令来创建一个新的窗口。例如:

imshow(1);

figure, imshow(2);

figure, imshow(3);

或者

figure(1);

imshow('1.jpg');

figure(2);

imshow('2.jpg');

subplot(m,n,p);

有时为了便于在多幅图像之间进行比较,需要将这些图像显示在一个图形窗口中。达到这一目的有两种方法:一种方法是联合使用imshow和subplot函数,但此方法在一个图形窗口只能有一个调色板;另一种方法是联合使用subimage和subplot函数,此方法可在一个图形窗口内使用多个调色板。
subplot函数将一个图形窗口划分为多个显示区域,subplot函数将图形窗口划分为m(行)×n(列)个显示区域,并选择第p个区域作为当前绘图区。

例如:

 subplot(2,1,1);

 imshow 1.jpg;

 subplot(2,1,2);

 imshow 2.jpg;

或者

 x1=imread('1.jpg');

 x2=imread('2.jpg');

 subplot(1,2,1),subimage(x1)

 subplot(1,2,2),subimage(x2)

subimage函数通常可以与subplot函数配合使用来实现一个图形窗口中显示多幅图像的效果。其中,X为二维图像矩阵,map为X使用的颜色查找表,如果是灰色图像则无此参数。

图像文件信息的查询
         imfinfo函数:
用于查询图像文件的有关信息,详细地显示出图像文件的各种属性。其语法格式为:info=imfinfo(‘filename’,‘fmt’)或info=imfinfo(‘filename.fmt’)或imfinfo filename.fmt

imfinfo函数获取的图像文件信息依赖于文件类型的不同而不同,但至少应包含以下内容:

文件名。如果该文件不在当前目录下,还包含该文件的完整路径。

文件格式。

文件格式的版本号。

文件最后一次修改的时间。

文件的大小。以字节为单位。

图像的宽度。

图像的高度。

每个像素所用的比特数。也叫像素深度。

图像类型。即该图像是真彩色图像、索引图像还是灰度图像

图像类型之间的转化
1、将图片转化成灰度图:   A=rgb2gray(filename)

2、通过设定亮度将阈值灰度、真彩、索引图像转换为二值图像(所谓二值图像, 一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。 当然, 也可以是其他任意两种颜色的组合。)。使用im2bw函数。

BW = im2bw(I,level)  :将灰度图像 I 转换为二进制图像。输出图像 BW 将输入图像中亮度值大于 level 的像素替换为值1 (白色),其他替换为值0(黑色)。你指定 level 在 [0,1]之间,不用管输入图像的等级。函数graythresh 能用来自动计算变量 level 。如果你不指定 level ,im2bw 使用 0.5。

BW = im2bw(X,map,level)
将颜色表为 map 的索引图像 X 转换为二进制图像。

BW = im2bw(RGB,level) :将 RGB 真彩图像转换为二进制图像。Level是归一化的阈值,值域为[0,1]。Level可以由函数graythresh(I)来计算。
(如果输入图像不是灰度图像, im2bw 首先将图像转换为灰度图像,然后通过阈值将灰度图像转换成二进制图像。)

3、将灰度图片变成负片
负片是指将原灰度图白色的地方变成黑色,黑色的地方变成白色。也就是将0变成255,255变成0

J = imadjust(I,[low_in; high_in],[low_out; high_out])

其中,I为原灰度图像,low_in,high_in为输入图像的低和高灰度级,设置为[0,1]表示从0~255的归一化,low_out,high_out为输出图像的低高灰度级。

若是想将图片转换为负片,那么将[low_in; high_in]设置为[0,1],将[low_out; high_out]设置为[1,0]。即原来输入为0的地方变成1输出,输入为1的地方变成0输出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: