[分享]基本图象类型
基本图像类型 matlab7的图象类型主要包括素引图象、RGB图象、二进制图象和灰度图象。
1、素引图象
索引图象包括图象矩阵和颜色数组。其中颜色图是按图象中颜色值进行排序后的数组。对于每个象素,图象矩阵包含一个值,这个值就是颜色图数组中的索引。颜色图为m×3的双精度值矩阵,各行分别指定红、绿、蓝(R、G、B)单色值,且R、G、B均为值域[0,1]上的实数值。
2、RGB图象
与索引图象一样,RGB图象也是分别用红、绿、蓝三个亮度值为一组,代表每个象素的颜色。与索引图象不同的是,这些亮度值直接存在图象数组中,而不是存放在颜色图中,图象数组为m×n×3,m、n表示图象象素的行列数。
3、二进制图象
在二进制图象中,每个点为两个离散值中的一个,这两个值代表开或者关。二进制图象被保存在一个二维的由0(关)和1(开)组成的矩阵中。从另一个角度讲,二进制图象可以看做一个仅包括黑与白的特殊灰度图象,也可以看作仅有两种颜色的索引图象。
4、灰度图象
在MATLAB中,灰度图象是保存在一个矩阵中的,矩阵中的每一个元素代表一个象素点。矩阵可以是双精度类型,其值域为[0,1];矩阵也可以是unit8类型,其数据范围为[0,255]。矩阵的每一个元素代表不同的亮度或灰度级,其中,亮度为0,表示黑色,亮度为1(或者unit8类型的255),则代表白色。
图象类型的相互转换
(1)灰度图象与索引图象的相互转换
灰度图转索引图:
[X,map]=gray2ind(I,n)或[X,map]=gray2ind(BW,n)
输入参数:I是分析的图象;n是从1~65536之间的整数,缺省值为64;BW是分析的二进制图象
输出参数:X返回转化后的二进制图象;map返回图像的颜色图gray(n)
索引图转灰度图:
I=ind2gray(X,map)
输入参数:X是分析的索引图像,可以是unit8或双精度类型;map是索引图象的颜色图。
输出参数:I返回索引图象。
(2)RGB图象转换为灰度图象
I=rgb2gray(RGB)或newmap=rgb2gray(map)
输入参数:RGB是分析的真彩色图象;map是分析的颜色图。
输出参数:I和newmap返回灰度图。
(3)RGB与索引图象的相互转换
RGB图像转换为索引图象:
[X,map]=rgb2ind(RGB,tol)或[X,map]=rgb2ind(RGB,n)或X=rgb2ind(RGB,map)或[...]=rgb2ind(...,dither_option)
输入参数:RGB是分析的图象;tol是位于0~1之间的数;n是1~65536之间的整数;map是索引图象的颜色图;dither_option是dithering开关。
输出参数:X返回索引图象
索引转换转换成RGB图象:
RGB=ind2rgb(X,map)
输入参数:X是输入的矩阵;map是矩阵对应的颜色图。
输出参数:RGB返回RGB图象。
(4)其他图象转换为二进制图像
BW=im2bw(I,level)或BW=im2bw(X,map,level)或BW=im2bw(RGB,level)
输入参数:I是图象;X是索引图象;RGB是RGB图象;level是阀值范围([0 1]).
输出参数:BW返回二进制图象。
在转换过程中,如果输入图象不是灰度级图象,函数首先将其转换为灰度级图象,然后,通过阀值化将灰度级图象转换成二进制图象。输出图象在输入图象所有亮度小于给定值(level)象素点处均为0,在其他地方均为1。
(5)从灰度图象产生索引图象
X=grayslice(I,n)或X=grayslice(I,v)
输入参数:n构成阀值1/n,2/n,… v为一个元素值在[0,1]上的向量,构成阀值。
输出函数:X返回索引图象
例程
%原始索引图象
load trees
%转换为灰度图象
I=ind2gray(X,map);
figure(1)
subplot(2,2,1);imshow(X,map);title('索引图象');
subplot(2,2,2);imshow(I);title('转换后的灰度图象')
%原始真彩图象
RGB=imread('peppers.png');
%转换为索引图象
[XX,map]=rgb2ind(RGB,128);
figure(2)
subplot(2,2,1);imshow(RGB);title('RGB图象');
subplot(2,2,2);imshow(XX,map);title(' 转换后的索引图象');
%原始索引图象
load trees
%转换为二进制图象
BW=im2bw(X,map,0.4);
figure(3)
subplot(2,2,1);imshow(X,map);title('索引图象');
subplot(2,2,2);imshow(BW);title('转换后的二进制图象');