图像处理中,我们会接触到各种图像类型,如索引图像、灰度图像、二值图像等,对各种图像类型加以区分以及掌握它们相互转换是图像处理的基础。下面我就大概概括下MATLAB基本的图像类型已经它们的相互转换。
先简单对这些图像类型再介绍下:
二值图像:是一个数据矩阵,每个像素只取两个离散值中的一个;一个二值图像时以0(黑)和1的逻辑矩阵存储的。
灰度图像:为单一的数据矩阵,矩阵中的每个元素分别代表图像中的像素,且是在一定范围内的颜色灰度值。矩阵中的元素可以是双精度的浮点类型、8位或16位无符号的整数类型。
索引图像:包括一个数据矩阵X和一个色图阵MAP。X可以是无符号8位整型、无符号16位整型或双精度浮点型数据;MAP是一个包含三列、若干行的数据阵列,每一个元素的值均为[0,1]之间的双精度浮点型数据。MAP矩阵的每一行分别代表红,绿和蓝色。在MATLAB中,索引图像时从像素值到颜色映射值,1指向矩阵MAP中的第一行,依次类推。
RGB图像(真彩图像):为数据矩阵,其中元素定义了图像中每一个像素的红、绿、蓝颜色值。RGB图像存储为24位的图像,红、绿、蓝分别占8位,可以有1000多万种颜色。
大致介绍了这四种图像类型后,下面给出它们之间相互转换的描绘图:
关于MATLAB图像类型的转换,工具箱中提供了许多图像类型转换函数,下面逐一说明:
注:下面用RGB代替真彩图像,I代替灰度图像,BW代替二值图像,(X,MAP)代替索引图像,A为数据矩阵
1)真彩色图像——>索引图像或者灰度图像——>二值图像
原理:通过颜色抖动增强图像的颜色分辨率
X=dither(RGB,map) map为指定色图,不能超过65536种颜色
BW=dither(I)
2)灰度图像或二值图像——>索引图像
[X,MAP]=gray2ind(I,n) n为指定的灰度级数,缺省值为64
[X,MAP]=gray2ind(BW,n)
3)灰度图像——>索引图像
原理:设定阈值
X=grayslice(I,n)
X=grayslice(I,v) v为指定的阈值向量(每一个元素都在0和1之间)
4)灰度、真彩、索引图像——>二值图像
原理:设定亮度阈值
BW=im2bw(I,level) level是归一化的阈值,取值在[0, 1],可由graythresh(I)计算得到
BW=im2bw(X,MAP,level)
BW=im2bw(RGB,level)
5)索引图像——>灰度图像
原理:从图像中删除色彩和位置信息 ,只保留亮度
I=ind2gray(X,MAP)
6)索引图像——>真彩图像
RGB=ind2rgb(X,MAP)
输入图像X可是uint8,、uint16或double类型,输出图像时double类型的m*n*3的矩阵
7)数据矩阵——>灰度图像
I=mat2gray(A,[amin,amax]) [amin,amax]是指定的取值区间,amin是灰度最暗的值······
输入和输出图像都为double类型
8)真彩图像——>灰度图像or彩色色图——>灰度色图
I=rgb2gray(RGB)
newmap=rgb2gray(map)
当输入的是色图,则输入和输出的都是double类型;不然,则三种类型都可。
9)真彩图像——>索引图像
[X,MAP]=rgb2ind(RGB,n) n必须不大于65536,MAP至多n种颜色
X=rgb2ind(RGB) 表示把真彩图像的色图映射成索引图像最近似匹配的色图;(map,1)的大小不大于65536
另外提及:把真彩图像转换为索引图像包括三种方法:均衡量化、最小值量化、色图映射