图像处理——图像类型的转换

图像类型的转换

1.RGB图像转换为灰度图像

X=rgb2gray(I):该函数是将RGB图像I转换为灰度图像X,其中I表示RGB图像,X表示转换后的灰度图像。

2.RGB图像转换为索引图像

在MATLAB中,将真彩色图像转换成为索引图像直接调用函数rgb2ind ( )。在早期的MATLAB版本中有大致四种转换方法:直接法、均匀量化法、最小方差量化法和颜色表近似法,最新的MATLAB版本(如MATLAB R2010a)中只有后三种转换方法。除此之外,在函数rgb2ind ( )还可以输入参数项dither_option,其表示是否使用抖动。

x = imread('sss.bmp');
[x1,map1]=rgb2ind(x,64); %最小方差法,颜色64[x2,map2]=rgb2ind(x,0.2);  %均匀量化法
map3 = colorcube(128); %创建指定的颜色映射表
x3 = rgb2ind(x,map3);
figure
subplot(1,3,1);imshow(x1);
subplot(1,3,2);imshow(x2);
subplot(1,3,3);imshow(x3);

如图

3.灰度图像转换为索引图像

在MATLAB中,灰度图像是一个二维数组矩阵,而索引图像不仅包括一个二维的数组矩阵,还包括一个M×3的颜色映射表。所以要想将灰度图像转换成为索引图像,则必须生成对应的颜色映射表。在MATLAB中可以直接调用函数gray2ind( )来实现图像转换。其调用格式如下:
[X,map]=gray2ind(I,n):该函数是将灰度图像I转换为索引图像,其中I指的是原灰度图像,n是灰度级数,默认值为64,[X,map]对应转换后的索引图像,map中对应的颜色值为颜色图gray(n)中的颜色值。
[X,map]=gray2ind(BW,n):该函数是将二值图像BW转换为索引图像,其中I指的是二值图像,n是灰度级数,默认值为2,[X,map]对应转换后的索引图像,map中对应的颜色值为颜色图gray(n)中的颜色值。二值图像实际上也是灰度图像,只是其灰度级为2 而已。
在这里插入图片描述

x = imread('aaa.bmp');
[x1,map]=gray2ind(x,64);
[x2,map]=gray2ind(x,2);
figure;
subplot(1,3,3);imshow(x);
subplot(1,3,1);imshow(x1);
subplot(1,3,2);imshow(x2);

4.索引图像转换为RGB图像

在MATLAB中,利用函数rgb2ind( )可以将RGB图像转换为索引色图像,同样索引图像也可以转换为RGB图像,利用函数ind2rgb( )即可实现,其调用格式如下:
RGB=ind2rgb(X,map):该函数是将索引图像[X,map]转换为RGB图像,其中[X,map]指向索引图像,RGB指向转换后的真彩色图像。转换过程中形成一个三维数组,然后将索引图像的颜色映射表中的颜色值赋值给三维数组。输入图像的数据类型可以是double型、uint8型或uint16型,输出为double型。

5.二值图像的转换

在MATLAB中,二值图像中的数据类型实际上是logical型,’0’代表黑色、’1’代表白色,所以二值图像实际上是一幅“黑白”图像。那么,将其他图像转换为二值图像,首先必须规定一个规则:将其他数组中什么数据变为’1’,什么数据变为’0’。常用的方法是“阈值法”,它是确定一个阈值,小于阈值就取为’0’,其他的全部取为’1’。在MATLAB中实现这一功能的函数为im2bw( ),其调用格式根据转换的原图像不同而各有差异。如果输入不是灰度图像,先将其转换为灰度图像,然后通过阈值法转换为二值图像。
如图

x = imread('aaa.bmp');
x1 = im2bw(x,0.4);
x2 = im2bw(x,0.6);
subplot(1,3,3);imshow(x);
subplot(1,3,1);imshow(x1);
subplot(1,3,2);imshow(x2);

6.数值矩阵转换为灰度图像

在MATLAB中,一个数据矩阵就相当于一幅数字图像,只是在数字图像中对应的数组元素必须在一定的取值范围,因此,只要将对应数据矩阵中的元素按一定规律进行转换,就可以将矩阵转换为图像了。在MATLAB中可以利用函数mat2gray( ),将一个数据矩阵转换为一幅灰度图像,其调用格式为:
I=mat2gray(X,[ xmin, xmax]):该函数是按照指定的取值区间[xmin,xmax]将数据矩阵X转换为灰度图像I,xmin对应灰度值0,即黑色,xmax对应灰度值1,即白色。数据矩阵中小于xmin的值取为0,大于xmax的值取为1。如果不指定取值区间[xmin, xmax],即缺省情况下,将数据矩阵X中最小值设为xmin,最大值设为xmax。
如图

x = magic(256);
y = mat2gray(x);
figure;imshow(y);
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值