matlab图像处理
1 |
|
- 彩色图像(color image):每个像素通常是由红(R)、绿(G)、蓝(B)三个分量来表示的,分量介于(0,255)。RGB图像与索引图像一样都可以用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个M x N的二维矩阵分别表示各个像素的R、G、B三个颜色分量。RGB图像的数据类型一般为8位无符号整形,通常用于表示和存放真彩色图像,当然也可以存放灰度图像。
- 灰度图像(gray image)是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;但是,灰度图像在黑色与白色之间还有许多级的颜色深度。灰度图像经常是在单个电磁波频谱如可见光内测量每个像素的亮度得到的,用于显示的灰度图像通常用每个采样像素8位的非线性尺度来保存,这样可以有256级灰度(如果用16位,则有65536级)。
- 二值图像(binary image),即一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。
- 索引图像,即它的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为[0,255],则MAP矩阵的大小为256Ⅹ3,用MAP=[RGB]表示。MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为64,则该像素就与MAP中的第64行建立了映射关系,该像素在屏幕上的实际颜色由第64行的[RGB]组合决定。也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵MAP得到。索引图像的数据类型一般为8位无符号整形(int8),相应索引矩阵MAP的大小为256Ⅹ3,因此一般索引图像只能同时显示256种颜色,但通过改变索引矩阵,颜色的类型可以调整。索引图像的数据类型也可采用双精度浮点型(double)。索引图像一般用于存放色彩要求比较简单的图像,如Windows中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用到RGB真彩色图像。
判断是什么图片:
右击图片属性,摘要,点击详细属性,里面有位深度一项。如果是RGB图,位深度是24;如果是灰度和索引图,位深度是8;灰度是白灰黑表示的图,索引图有可能是彩色的,但也是8位深。
rgb图像转为灰度图像
matlab中图像处理的一些简单函数
imread()
1 |
|
imwrite()
1 |
|
-
imfinfo()
1
2
3
4imfinfo用于读取图像文件的有关信息
语法格式:
imfinfo(filename,fmt)
imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。 -
imshow()
1
2
3
4imshow函数是最常用的显示各种图像的函数
语法如下:
imshow(X,map)
X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用[]代替map-
二进制(二值)图像显示方法,在MATLAB中一幅二值图像是uint8或双精度的,该矩阵仅包含0和1。如果希望工具箱中的函数能将图像理解为二进制的,那么所有数据都要是逻辑数据,必须对其进行设置(将所有数据标志均设置on).可以对数据利用“~”取反操作实现图像逆转即黑白反色。
-
灰度图像的显示方法,正常情况下无需指定灰度图像的调色板格式。可以是使用imshow函数指定要显示灰度级数目,格式
imshow(I,n)
,n为指定的灰度级数目。用户也可以指定数据的范围,格式imshow(I,[low high])其中low 和high参数分别为数据数组的最小值和最大值。如果为空矩阵([]),那么imshow函数将自动进行数据标度 -
索引图像,
imshow(x,map)
对于x的每个个像素,imshow显示存储map中相应行的颜色 -
RGB图像的显示,它直接对颜色进行描述而不使用调色板,格式
imshow(RGB)
。RGB(:,:,1) RGB(:,:,2) RGB(:,:,3) -
特殊显示,如多幅图像的显示,需要显示多幅图像时。可以使用
figure
语句,它的功能就是重新打开一个图像显示窗口例:
1
2
3
4I=imread(‘小丑.tif’);
Imshow(I);
J=imread(‘sunny.tif’);
figure,imshow(J); -
也可以将多幅图像显示在同一个单独的图像窗口中
subplot(m,n,p)
这种格式将图形窗口划分为m*n个矩形显示区域并激活第p个(先从左往右,再从上往下)显示区域。有两种方法:
法一:联合
imshow
和subplot
函数1
2>> subplot(1,2,1),imshow(S)
>> subplot(1,2,2),imshow(I)法二:联合使用
subimage
函数和subplot
函数1
2subplot(1,2,1),subimage(S)
subplot(1,2,2),subimage(I)
-
-
imhist()
1
2
3
4
5
6
7imhist函数来计算和显示图像的直方图
语法格式:
imhist(I,n)
imhist(X,map)
imhist(I,n)计算和显示灰度图像I的直方图,n为指定的灰度级数目,默认值为256
imhist(X,map)计算和显示索引色图像X的直方图,map为调色板 -
imadjust()
对比度增强
如果原图像f(x,y)的灰度范围是[m,M],我们希望调整后的图像g(x,y)的灰度范围是[n,N],那么下述变换, ,就可以实现这一要求
1
2
3
4
5
6imadjust函数,可以实现上述的线性变换对比度增强
语法格式:
J = imadjust(I,[low_in high_in],[low_out high_out])
返回图像I经过直方图调整后的图像Jeg:
1
2J = imadjust(S,[0.3 0.7],[]);
imshow(S),figure, imshow(J) -
im2bw()
将灰度图像转换为二值图像
1 |
|
函数名 | 功能描述 |
---|---|
Imabsdiff | 两幅图像的绝对差值 |
Imadd | 两幅图像的加法 |
Imcomplement | 补足一幅图像 |
Imdivide | 两幅图像的除法 |
Imlincomb | 计算两幅图像的线性组合 |
Immultiply | 两幅图像的乘法 |
imsubtract | 两幅图像的减法 |
-
imadd()
进行两幅图像的加法,或者给一幅图像加上一个常数
imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输出图像
1
2
3%语法格式如下:
Z = imadd(X,Y)
%X和Y表示需要相加的两幅图像,返回值Z表示得到的加法操作结果eg:
1
2
3
4
5
6
7
8Cman=imread('cameraman.tif');
HCman=imadd(Cman,50);
LCman=imadd(Cman,-50);
figure;
subplot(1,3,1),imshow(LCman);
subplot(1,3,2),imshow(Cman);
subplot(1,3,3),imshow(HCman);结果展示:
-
imsubtract()
imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数
imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将这个结果作为输出图像相应的像素值
1 |
|
-
strel()
structuring element
运用各种形状和大小构造元素,创建由指定形状shape对应的结构元素。用于膨胀腐蚀及开闭运算等操作的结构元素对象。
1 |
|
两幅图像进行乘法运算可以实现掩模操作,即屏蔽掉图像的某些部分。一幅图像乘以一个常数通常被称为缩放
immulitply(X,Y)
将两幅图像相应的像素值进行元素对元素的乘法操作(MATLAB点乘),并将乘法的运算结果作为输出图形相应的像素值
1 |
|
-
ind2gray()
索引图像转换为灰度图像
1
2
3
4%语法格式
I = ind2gray(X,cmap)
%将X带有颜色图 的索引图像转换cmap为灰度图像I,
%该 ind2gray功能在保持亮度的同时从输入图像中删除色相和饱和度信息。eg:
除法运算可用于校正成像设备的非线性影响,这在特殊形态的图像(如断层扫描等医学图像)处理中常常用到。图像除法也可以用来检测两幅图像间的区别,但是除法操作给出的是相应像素值的变化比率,而不是每个像素的绝对差异,因而图像除法也称为比率变换。
-
imdivide()
imdivide函数对两幅输入图像的所有相应像素执行元素对元素的除法操作(点除),并将得到的结果作为输出图像的相应像素值
1
2
3
4%语法格式
Z = imdivide(X,Y)
%Z=X/Y