matlab中的图像类型

来源:互联网 发布:无锡有mac口红专柜吗 编辑:程序博客网 时间:2024/05/21 09:20

matlab中的图像类型主要有下列四种:索引图像、灰度图像、RGB图像、二值图像。
下面介绍下这些图像的特点与应用

  1. 索引图像
    索引图像包括一个数据矩阵X,一个颜色映像矩阵Map。其中Map是一个包含三列、若干行的数据阵列,其中每个元素的值均为[0, 1]之间的双精度浮点型数据。Map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。在MATLAB中,索引图像是从像素值到颜色映射表值的“直接映射”。像素颜色由数据矩阵X作为索引指向矩阵Map进行索引,例如,值1指向矩阵Map中的第一行,值2指向第二行,以此类推。

颜色映射表通常和索引图像存在一起,当用户在调用函数imread时,MATLAB自动将颜色映射表与图像同时加载,在MATLAB中可以选择所需要的颜色映射表,而不必局限于使用默认的颜色映射表。我们可以使用属性CDataMapping来选取其他的颜色映射表,包括用户自定义的颜色映射表。

如果图像数据矩阵是双精度的数据类型,则值1指向矩阵Map中的第一行,值2指向第二行,但如果图像矩阵是8位无符号的整数类型或16位无符号的整数类型,则由于存在一个偏移量,因而使值0指向矩阵Map中的第一行,以此类推。

显示一幅索引图像:

[X, map] = imread(‘canoe.tif’);

image(X);

colormap(map);
2. 灰度图像
在MATLAB中,一幅灰度图像是一个数据矩阵I,I中的数据均代表了在一定范围内的图像灰度值。MATLAB把灰度图像存储为一个数据矩阵,该矩阵中的元素分别代表了图像中的像素。矩阵中的元素可以是双精度的浮点类型、8位或16位无符号的整数类型。大多数情况下,灰度图像很少和颜色映射表一起保存,但是在显示灰度图像时,MATLAB仍然在后台使用系统预定义的默认灰度颜色映射表。

用imagesc函数及colormap函数显示一幅灰度图像

I = imread(‘moon.tif’);

imagesc(I, [0 256]);

colormap(gray); %原图像经灰度缩放以后显示的灰度图像。
3. RGB图像
RGB图像即真菜图像,在MATLAB中存储为n*m*3的数据矩阵。数组中的元素定义了图像中的每一个像素的红、绿、蓝颜色值。需指出的是,RGB图像不是用windows的颜色映射表,像素的颜色由保存在像素位置上的红、绿、蓝的灰度值的组合来确定。图形文件格式把RGB图像存储为24位的图像,红、绿、蓝分别占8位,这样可以有1000多万种颜色。
4. 二值图像
与灰度图像相同,二值图像只需要一个数据矩阵,每个像素只取两个灰度值
下面是一个原始图像转换为二值图的例子

clear all,clc,close all;I = imread('1.jpg');J = rgb2gray(I);%这一步将图像转换为灰度图% F = im2bw(J);% f1 = im2bw(J(1:end/2,:,:), 0.6);% f2 = im2bw(J(end/2+1:end,:,:), 0.4);% F = [f1;f2];% imshow(F)row = size(I,1);%获取I的行数N = 12; % 图片纵向分层转换row_num = [1, ceil( (1:N)/N*row )];%分成13行数f = cell(12,1);%产生一个12行一列的单元数组factor = linspace(0.7, 0.4, 12);%产生一个行向量,有12个数,就是将0.7到0.4均分for i = 1:12%循环12次f{i} = im2bw(J(row_num(i):row_num(i+1),:), factor(i));%给f的单元赋值矩阵,这是一个矩阵块,将从第row_num(i)到row_num(i+1)行处理subplot(6,2,i);imshow(f{i});%显示每一次处理的结果,一共12次% title('ima');if (i == 1)F = f{i};elseF = [F;f{i}];endendfigure;imshow(F)
0 0
原创粉丝点击