200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > MATLAB中颜色模型介绍级各模型之间转换(RGB HSV NTSC YCbCr HSI)

MATLAB中颜色模型介绍级各模型之间转换(RGB HSV NTSC YCbCr HSI)

时间:2023-12-20 21:37:23

相关推荐

MATLAB中颜色模型介绍级各模型之间转换(RGB HSV NTSC YCbCr HSI)

1.颜色模型定义

2.各颜色模型简介

3.颜色模型的转换

一、颜色模型定义

颜色模型:某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色。例如,RGB颜色模型就是三维直角坐标颜色系统的一个单位正方体。颜色模型的用途是在某个颜色域内方便地指定颜色。由于每一个颜色域都是可见光的子集,所以任何一个颜色模型都无法包含所有的可见光。大多数的彩色图形显示设备一般都是使用红、绿、蓝三原色,我们的真实感图形学中的主要的颜色模型也是RGB模型,但是红、绿、蓝颜色模型用起来不太方便,它与颜色概念如色调、饱和度和亮度等没有直接的联系。颜色模型主要有RGB、HSV、YCbCr、NTSC等。

二、各颜色模型简介

(1)RGB模型

RGB是从颜色发光的原理出发来设计的,RGB模型分成了3个颜色通道,即红(R)、绿(G)、蓝(B),RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。

RGB图像只使用3种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216种颜色,每个颜色通道每种色各分为255阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。

(2)HSV模型

HSV模型是一种复合主观感觉的颜色模型。H、S、V分别指的是色调(彩)(hue)、色饱(saturation)和度与明度(value)。在这个模型中,一种颜色的参数便是由H、S、V3个分量构成的三元组。

HSV模型不同于RGB模型的单位立方体,而是对应于一个圆柱坐标系中的一个立体锥形子集。在这个锥形中,边界表示不同的色彩。份量表示颜色的种类,取值范围为01,相应的颜色从红、黄、绿、蓝绿、蓝、紫到黑变化,且它的值由绕V轴的旋转角决定,每一种颜色和它的补色之间相差180。S分量的取值范围也是01,表示所选色彩的纯度与该色彩的最大纯度的比例。相应的颜色从未饱和(灰度)向完全饱和(无白色元素)变化,当S=0.5时表示所选色彩的纯度为1/2。份量取值范围同样是0~1,从锥形顶点0变化到顶部1,相应的颜色逐渐变亮,顶点表示黑色,顶部表示色彩强度最大。

(3)YCbCr模型

YCbCr模型又称为YUV模型,是视频图像和数字图像中常用的颜色模型。在YCbCr模型中,Y为亮度,Cb和Cr共同描述图像的色调(色差),其中Cb、Cr分别为蓝色分量和红色分量相对于参考值的坐标。

YCbCr模型中的数据可以是双精度类型,但存储空间为8位无符号整型数据空间,且Y的取值范围为16~235, Cb和Cr的取值范围为16~240。在目前通用的图像压缩算法中((如JPEG算法),首要的步骤就是将图像颜色空间转换为YCbCr空间。

(4)NTSC模型

NTSC模型是一种用于电视图像的颜色模型。NTSC模型使用的是Y.I.Q颜色坐标系,其中,Y为光亮度,表示灰度信息;l为色调,Q为饱和度,均表示颜色信息。因此,该模型的主要优点就是能将灰度信息和信息区分开来。

(5)HSI颜色空间

HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度(Intensity或Brightness)来描述色彩的。

HSI色彩空间可以用一个圆锥空间模型来描述。这种描述HIS色彩空间的圆锥模型相当复杂,但确实能把色调、亮度和色饱和度的变化情形表现得很清楚。

通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用HSI色彩空间,它比RGB色彩空间更符合人的视觉特性。

在图像处理和计算机视觉中大量算法都可在HSI色彩空间中方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI色彩空间可以大大简化图像分析和处理的工作量。HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着转换关系。

三、颜色模型的转换

MATLAB中提供了一些色彩模型转换函数,下面将分别对其进行介绍。

(1)rgb2hsv函数

在MATLAB中,rgb2hsv函数用于将RGB模型转换为HSV模型。该函数的调用方法如下。

(1)HSVMAP=rgb2hsv(RGBMAP)%%表示将RGB色表转换成HSV色表。(2) HSV=rgb2hsv(RGB)%%表示将RGB图像转换为HSV图像。

%%rgb2hsv函数将RGB模型转换到HSV模型。clc;%clc的作用就是清屏幕clear;%clear是删除所有的变量close all;%close all是将所有打开的图片关掉。I=imread('E:\我的桌面\MATLAB\练习\1.jpg');%绝对路径的RGB=I;HSV=rgb2hsv(RGB); %将RGB模型转换为HSV模型subplot(1,2,1),imshow(RGB),title('RGB图像');subplot(1,2,2),imshow(HSV),title('HSV图像');

(2) hsv2rgb函数

在MATLAB中,hsv2rgb函数用于将HSV模型转换为RGB模型。该函数的调用方法如下。

(1) RGBMAP=hsv2rgb(HSVMAP)%%表示将HSV色表转换成RGB色表。(2)RGB=hsv2rgb(HSV)%%表示将HSV图像转换为RGB图像。

%%利用hsv2rgb函数将HSV模型转换为RGB模型。clc;%clc的作用就是清屏幕clear;%clear是删除所有的变量close all;%close all是将所有打开的图片关掉。I=imread('E:\我的桌面\MATLAB\练习\1.jpg');%绝对路径的RGB=I;HSV=rgb2hsv(RGB); %将HSV模型转换为RGB模型RGB1=hsv2rgb(HSV);subplot(1,3,1),imshow(RGB),title('RGB图像');subplot(1,3,2),imshow(HSV),title('HSV图像');subplot(1,3,3),imshow(RGB1),title('还原的图像');

(3)rgb2ntsc函数

在MATLAB中,rgb2ntsc函数用于将RGB颜色模型转换为NTSC颜色模型。该函数的调用方法如下。

( 1)YIQMAP=rgb2ntsc(RGBMAP)%%将RGB色表转换为YIQ色表。其中,RGBMAP为double类,YIQMAP为double类型。(2) YIlQ=rgb2ntsc(RGB)%%表示将RGB图像转换为NTSC图像。其中,RGB为double、uint8或uint16类型,YIQ为double类型。

%%利用rgb2ntsc函数将RGB模型转换为NTSC模型。clc;%clc的作用就是清屏幕clear;%clear是删除所有的变量close all;%close all是将所有打开的图片关掉。I=imread('E:\我的桌面\MATLAB\练习\1.jpg');%绝对路径的RGB=I;YIQ=rgb2ntsc(RGB);%将RGB模型转换为NTSC模型figure;subplot(2,3,1);subimage(RGB);title('RGB图像')subplot(2,3,2);subimage(mat2gray(YIQ));title('NTSC图像')subplot(2,3,3);subimage(mat2gray(YIQ(:, :,1)));title('Y分量');subplot(2,3,4);subimage(mat2gray(YIQ(:, :,2)));title('I分量');subplot(2,3,5);subimage(mat2gray(YIQ(:, :,3)));title('Q分量')

(4)ntsc2rgb函数

在MATLAB中,ntsc2rgb函数用于将NTSC模型转换为RGB模型。该函数的调用方法如下。

( 1) RGBMAP=ntsc2rgb(YIQMAP)%%将YIQ色表转换为RGB色表。其中,YIQMAP为double类型,RGBMAP为double类型。(2) RGB=ntsc2rgb(YIQ)%%表示将YIQ图像转换为RGB图像。其中,YIQ为double类型,RGB为double类型。

(5)rgb2ycbcr函数

在MATLAB中,rgb2ycb函数用于将RGB模型转换为YCbCr模型。该函数的调用方法如下。

(1) YCbCrMAP=rgb2ycbcr(RGBMAP)%%将RGB色表转换为YCbCr色表。(2) YCbCr =rgb2ycbcr (RGB)%%表示将RGB图像转换为YCbCr图像。

%%利用rgb2ycbcr函数将RGB模型转换到YCbCr模型。clc;%clc的作用就是清屏幕clear;%clear是删除所有的变量close all;%close all是将所有打开的图片关掉。I=imread('E:\我的桌面\MATLAB\练习\1.jpg');%绝对路径的RGB=I; %读入图像YCbCr=rgb2ycbcr(RGB);%将RGB模型转换为YCbCr模型subplot(1,2,1);subimage(RGB);title('原图像');subplot(1,2,2);subimage(YCbCr);title('变换后的图像');

(6)ycbcr2rgb函数

在MATLAB中,ycbcr2rgb函数用于将YCbCr模型转换为RGB模型。该函数的调用方法如下。

(1)RGBMAP=ycbcr2rgb(YCbCrMAP)%%将YCbCr色表转换为RGB色表。(2)RGB=ycbcr2rgb(YCbCr)%%将YCbCr图像转换为RGB图像。

%%利用ycbcr2rgb函数将YCbCr模型转换为RGB模型。clc;%clc的作用就是清屏幕clear;%clear是删除所有的变量close all;%close all是将所有打开的图片关掉。I=imread('E:\我的桌面\MATLAB\练习\1.jpg');%绝对路径的RGB=I; %读入图像YCbCr=rgb2ycbcr(RGB);%将YCbCr模型转换为RGB模型subplot(1,3,1);subimage(RGB);title('原图像');subplot(1,3,2);subimage(YCbCr);title('变换后的图像');RGB2=ycbcr2rgb(YCbCr);subplot(1,3,3);subimage(RGB2);title('还原的图像');

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。