MATLAB

您所在的位置:网站首页 数字类型的转换实验目的是 MATLAB

MATLAB

2024-06-26 04:09| 来源: 网络整理| 查看: 265

图像类型的转换

在许多图像处理过程中,常常需要进行图像类型转换,否则对应的操作没有意义甚至出错。

1、RGB图像转换为灰度图像 原理:

RGB彩色图像中,一种彩色由R(红色),G(绿色),B(蓝色)三原色按比例混合而成。 图像的基本单元是一个像素,一个像素需要3块表示,分别代表R,G,B,如果8位二进制数表示一个颜色,就由0-255区分不同亮度的某种原色。

灰度图像是用不同饱和度的黑色来表示每个图像点,比如用8位 0-255数字表示“灰色”程度,每个像素点只需要一个灰度值,8位即可,这样一个3X3的灰度图,只需要9个字节就能保存。

RGB值和灰度的转换,实际上是人眼对于彩色的感觉到亮度感觉的转换,这是一个心理学问题,有一个公式:

Gray = 0.299*R + 0.587*G + 0.114*B

根据这个公式,依次读取每个像素点的R,G,B值,进行计算灰度值(转换为整型数),将灰度值赋值给新图像的相应位置,所有像素点遍历一遍后完成转换。

函数:

(1)X=rgb2gray(I):该函数是将RGB图像I转换为灰度图像X

(2)newmap=rgb2gray(map):该函数是将彩色颜色映射表map转换为灰度颜色映射表 说明:如果输入的是真彩色图像,则可以是unit8或者double类型,输出图像与输入图像类型相同。如果输入的是颜色映射表,则输入和输出都是double类型。

可在命令窗口用whos指令查看图像属性。

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

(1)[X,cmap] = rgb2ind(RGB,Q) 使用具有 Q 种量化颜色的最小方差量化法并加入抖动,将 RGB 图像转换为索引图像 X,关联颜色图为 cmap,Q为最小方差量化法所用的量化颜色的数量,指定为小于或等于 65536 的正整数。返回的颜色图 cmap 包含 Q 种或更少的颜色。

最小方差量化将 RGB 颜色立方体削减为不同大小的较小块(未必是立方体),具体取决于这些颜色在图像中的分布情况。如果输入图像实际使用的颜色数少于指定的数量,则输出颜色图也会变小。

(2)[X,cmap] = rgb2ind(RGB,tol) 使用均匀量化法并加入抖动,将 RGB 图像转换为索引图像,容差为 tol,tol的范围是从0.0至1.0,返回的颜色图 cmap 包含 (floor(1/tol)+1)^3 种或更少的颜色。

均匀量化将 RGB 颜色立方体削减为较小的 tol 长度的立方体。例如,如果指定 tol 为 0.1,则立方体的边缘为 RGB 立方体长度的十分之一。小立方体总数为:t = (floor(1/tol)+1)^3,每个立方体表示输出图像中的一种颜色。因此,t 为颜色图的最大长度。rgb2ind 会删除不显示在输入图像中的任何颜色,因此实际颜色图可能小于 t。

(3)X = rgb2ind(RGB,inmap) 使用逆颜色图算法并加入抖动,将 RGB 图像转换为索引图像, inmap为输入颜色图,指定为由范围 [0, 1] 内的值组成的 c×3 矩阵。inmap 的每行都是一个三元素 RGB,指定颜色图的单种颜色的红、绿和蓝分量。该颜色图最多有 65536 种颜色。

逆颜色图算法可将指定颜色图量化为每个颜色分量 32 个不同色阶。然后,对于输入图像中的每个像素,查找量化的颜色图中最接近的颜色。

(4)___ = rgb2ind(___,dithering) 执行抖动,指定为 ‘dither’ 或 ‘nodither’,抖动以损失空间分辨率为代价来提高颜色分辨率。如果选择 ‘nodither’,则 rgb2ind 不执行抖动。在这种情况下,函数将原始图像中的每种颜色映射到新颜色图中最接近的颜色。

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

(1)[X,map] = gray2ind(I,n) 将灰度图像I转换为索引图像X,n是灰度等级,默认值为64,[X,map]对应转换后的索引图像,map中对应的颜色值为颜色图gray(n)中的颜色值。 (2)[X,map] = gray2ind(BW,n) 将二值图像BW转换为索引图像,n是灰度等级,默认值为2,,[X,map]对应转换后的索引图像,map中对应的颜色值为颜色图gray(n)中的颜色值。二值图像实际上也是灰度图像,只是其灰度级为2而已。 (3)I=grayslice(G,n) 将灰度图像中像素灰度均匀量化为n个等级并转换为索引图像, (4)I=grayslice(G,v) 将灰度图像按照阈值矢量v进行值域划分并转换为索引图像,v中每一个元素都在0和1之间。

4、索引图像转换为灰度图像

I=ind2gray(X,map) 将具有颜色映射表map的索引图像转换为灰度图像,去除了索引图像中的颜色、饱和度信息,保留了图像的亮度信息。输入图像的数据类型可以是double型或unit8型,但输出为double型。

5、索引图像转换为RGB图像

RGB=ind2rgb(X,map) 将索引图像[X,map]转换为RGB图像,转换过程中形成一个三维数组,然后将索引图像的颜色映射表中的颜色值赋值给三维数组。输入图像的数据类型可以是double型、unit8型或unit16型,输出为double型。

6、二值图像的转换

在MATLAB中,二值图像的数据类型实际上是logic型,0代表黑色,1代表白色,所以二值图像实际上是一幅“黑白”图像。那么,将其他图像转换为二值图像,首先必须规定一个规则,即将哪些数据变为1,哪些数据变为0.常用的方法是阈值法,确定一个阈值,小于阈值的取为0,其他的取为1.

(1)将灰度图像转换为二值图像

BW=im2bw(I,level),level为设置的阈值参数,取值范围为[0,1] level值较小,则会出现背景区域与目标区域混淆; level值较大,则会丢失部分目标信息。

(2)将索引图像转换为二值图像

BW=im2bw(X,map,level),[X,map]为索引图像。

(3)将RGB图像转换为二值图像

BW=im2bw(I,level),level为设置的阈值参数,取值范围为[0,1]

7、数值矩阵转换为灰度图像

在MATLAB中,一个数据矩阵相当于一幅数字图像,只是在数字图像中的对应的数组元素必须在一定的取值范围,因此矩阵完全可以转换为图像。 I=mat2gray(X,[xmin,xmax]) 按照指定的取值区间[xmin,xmax]将数据矩阵X转换为灰度图像I。xmin对应灰度值0,即黑色,xmax对应灰度值1,即白色。数据矩阵中小于xmin的值取为0,大于xmax的值取为1.如果不指定取值区间,即默认情况下,将数据矩阵X中的最小值设为xmin,最大值设为xmax。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3