图像类型的转换


一、图像的分类

0.图像的分类
在计算机中,按照颜色和灰度的多少可以将图像分为二值图像、灰度图像、索引图像和真彩色RGB图像四种基本类型。

1.二值图像
一幅二值图像的二维矩阵仅由0、1两个值构成,0代表黑色,1代表白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1的二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

2.灰度图像
灰度图像矩阵元素的取值范围通常为[0,255]。因此其数据类型一般为8位无符号整型(int8),这就是人们经常提到的256灰度图像。0表示纯黑色,255表示纯白色,中间的数字从小到大表示由黑到白的过渡色。在某些软件中,灰度图像也可以用双精度数据类型(double)表示,像素的值域为[0,1],0代表黑色,1代表白色,0到1之间的小数表示不同的灰度等级。二值图像可以看成是灰度图像的一个特例。

3.索引图像
索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵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真彩色图像。

4.RGB彩色图像
RGB图像与索引图像一样都可以用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G),蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个M×N的二维矩阵分别表示各个像素的R、G、B三个颜色分量。RGB图像的数据类型一般为8位无符号整型,通常用于表示和存放真彩色图像。

二、图像类型转换

1.通过抖动算法转换图像类型的函数dither

该函数通过颜色抖动(颜色抖动即改变边沿像素的颜色,使像素周围的颜色近似于原始图像的颜色,从而以空间分辨率来换取颜色分辨率)来增强输出图像的颜色分辨率。该函数可以把RGB图像转换成索引图像或把灰度图像转换成二值图像。

x=dither(RGB,map);
%通过抖动算法将真彩色图像RGB按指定的调色板map转换成索引图像x
x=dither(RGB,map,Qm,Qe);
%利用给定的参数Qm,Qe从真彩色图像RGB中产生索引图像x。Qm对于补色决定各颜色轴的量化位数,Qe决定量化误差的位数。如果Qe<Qm,则不进行抖动操作。Qm的默认值是5,Qe的默认值是8。
BW=dither(I);
%将灰度图像抖动成二值图像,输入图像数据类型可以是double或uint8,如果输出的图像是二值图像或颜色种类不超过256的索引图像,则数据类型是uint8或double

2.将灰度图像转换为索引图像的函数gray2ind

用于灰度图像或二值图像向索引图像转换

[X,map]=gray2ind(I,n);
%按照指定的灰度级n把灰度图像I转换成索引图像X,map为gray(n),n的默认值为64

3.将灰度图像转换为索引图像的函数grayslice

X=grayslice(I,n);
%表示将灰度图像I均匀量化为n个等级,然后转换为伪彩色图像X
X=grayslice(I,v);
%表示按指定的阈值矢量v(其中每个元素在01之间)对图像I进行阈值划分,然后转换成索引图像,I可以是double类型、uint8类型或uint16类型

4.将其他图像转换为二值图像的函数im2bw

BW=im2bw(I,map,level);
%将颜色图为map的索引图像转换为二值图像
BW=im2bw(I,level);
%将灰度图像I转换为二值图像
BW=im2bw(RGB,level);
%将RGB图像转换为二值图像

5.将索引图像转换为灰度图像的函数ind2gray

I=ind2gray(X,map);
%将具有颜色图map的索引图像X转换为灰度图像I,X可以是双精度型或uint8型,I是双精度型

6.将索引图像转换为RGB图像的函数ind2rgb

RGB=ind2rgb(X,map);

7.将数据矩阵转换为灰度图像的函数mat2gray

I=mat2gray(A,[amin amax]);
%将图像矩阵A中介于amin和amax的数据归一化处理,其余小于amin的元素都变为0,大于amax的元素都变为1
I=mat2gray(A);
%将图像矩阵A归一化为图像矩阵I,归一化后矩阵中的每个元素的值都在01范围内(包括01.其中0表示黑色,1表示白色

8.将RGB图像转换为灰度图像的函数rgb2gray

I=rgb2gray(RGB);
%将输入的RGB图像转换为灰度图像I
newmap=rgb2gray(map);
%将输入的颜色图map返回一个等价

9.将RGB图像转换为索引图像的函数rgb2ind

[X,map]=rgb2ind(RGB)
[X,map]=rgb2ind(RGB,tol) tol的范围从0.01.0
[X,map]=rgb2ind(RGB,n) map中至少包括n个颜色
[X,map]=rgb2ind(RGB,map) 
[……]=rgb2ind(……,dither_option) dither_option用于开启/关闭dither,可以是'dither'(默认值)'nodither'

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vittore-Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值