【MATLAB】 RGB和YCbCr互转

前言

在视频、图像处理领域经常会遇到不同色域图像的转换,比如RGB、YUV、YCbCr色域间的转换,这里提供一组转换公式,供大家参考。

色彩模型

RGB

RGB色彩模型是一种用于表示数字图像的颜色空间,其中"RGB"代表红色(Red)、绿色(Green)和蓝色(Blue)。在RGB模型中,每种颜色的强度可以从0到255进行表示,其中0表示没有颜色的强度,255表示最大颜色的强度。通过调整这三种颜色的强度可以产生所需的颜色。例如,如果将红色和绿色的强度都设置为255,而蓝色的强度设置为0,则会产生黄色的颜色。

YUV

YUV色彩模型是一种描述图像颜色的模型。它将颜色分为亮度(Y)和色度(U、V)两个分量。

Y分量表示图像的亮度信息,取值范围是0到255,其中0表示黑色,255表示白色。

U和V分量分别表示色度信息。U分量表示蓝色和黄色之间的差异,取值范围是-128到127,其中-128表示最纯的蓝色,127表示最纯的黄色。V分量表示绿色和红色之间的差异,取值范围也是-128到127,其中-128表示最纯的绿色,127表示最纯的红色。

YUV色彩模型主要在视频编码和传输中使用,可以有效地压缩和传输图像数据。在电视和视频技术中,通常使用YUV色彩模型来处理和表示彩色图像。

YCbCr

YCBCr色彩模型是一种基于亮度和颜色信息的色彩模型,常用于图像和视频处理中。Y代表亮度(Luma),CBCr代表色度(Chroma)。在这个模型中,亮度信息用Y表示,而色度信息用CBCr表示。

亮度信息(Y)表示图像的明亮度,通常是从原始RGB图像中提取出来的灰度值。较高的亮度值表示图像较亮,而较低的亮度值表示图像较暗。

色度信息(CBCr)表示图像的颜色信息,由原始RGB图像中的颜色通道推导得出。这些颜色通道可以是红色(R)、绿色(G)和蓝色(B)之间的差值。由于人眼对亮度更敏感,而对颜色的感知相对较弱,所以将颜色信息与亮度信息分离,可以在图像或视频压缩等应用中减少数据量。

通过将RGB图像转换为YCBCr色彩模型,可以将亮度和色度信息进行独立处理,以实现一些图像和视频处理的目标,例如图像增强、颜色校正、压缩等。

YUV和YCbCr的关系

YUV和YCbCr是两种常见的颜色空间模型,它们之间有很强的关联。

YUV模型是一种将图像的亮度(Y)和色度(U、V)分离的颜色空间模型。亮度表示图像的明暗程度,而色度表示图像的颜色信息。在YUV模型中,亮度分量(Y)承载了图像的大部分信息,而色度分量(U、V)则记录了图像的颜色差异。

YCbCr模型是一种基于YUV模型发展而来的颜色空间模型。它与YUV模型非常相似,但有细微的差异。具体而言,YCbCr模型中的亮度分量(Y)与YUV模型中的亮度分量(Y)是一样的,而色度分量(Cb、Cr)则替代了YUV模型中的色度分量(U、V)。Cb和Cr分别代表蓝色和红色的色度差异。

实际上,YCbCr模型和YUV模型是可以互相转化的。在实际的图像处理中,常常可以将RGB图像转换为YCbCr图像,进行一些处理后再转换回RGB图像。这种转换可以通过简单的矩阵运算实现。转换后的图像在人眼看来可能有一些微小的色差,但通常对于大多数应用来说是可以接受的。

总的来说,YUV和YCbCr模型之间的关系可以看作是一种变体关系,它们都用于描述图像的亮度和色度信息。

转换

Matlab 复制代码
%RGB_to_YUV

Y = 0.299*R+ 0.587*G + 0.114*B;

U = -0.147*R - 0.289*G + 0.436*B+128;

V = 0.615*R - 0.515*G - 0.100*B+128;
Matlab 复制代码
%YUV_to_RGB

R = y + 1.140.(vv-128);

G = y - 0.394.(uu-128) - 0.581.(vv-128);

B = y + 2.032.(uu-128);

视频数据提取

avi视频读入matalb,提取第100帧,然后分别提取RGB图层

Matlab 复制代码
mov=VideoReader('**.avi');       %读视频
I=read(mov,100);                 %读入某一帧,RGB图
IR=I1(:,:,1);                    %R分量
IG=I1(:,:,2);                    %G分量
IB=I1(:,:,3);                    %B分量
相关推荐
Dev7z15 小时前
基于 MATLAB 的铣削切削力建模与仿真
开发语言·matlab
fengfuyao98517 小时前
基于MATLAB的表面织构油润滑轴承故障频率提取(改进VMD算法)
人工智能·算法·matlab
机器学习之心17 小时前
基于随机森林模型的轴承剩余寿命预测MATLAB实现!
算法·随机森林·matlab
rit843249920 小时前
基于MATLAB的环境障碍模型构建与蚁群算法路径规划实现
开发语言·算法·matlab
hoiii18720 小时前
MATLAB SGM(半全局匹配)算法实现
前端·算法·matlab
yong999020 小时前
MATLAB面波频散曲线反演程序
开发语言·算法·matlab
yugi9878381 天前
基于MATLAB的一键式EMD、EEMD、CEEMD和SSA信号去噪实现
开发语言·matlab·信号去噪
youcans_1 天前
【STM32-MBD】(15)Simulink 模型开发之三相互补 PWM
stm32·单片机·嵌入式硬件·matlab·foc
机器学习之心1 天前
基于CNN-GRU(卷积神经网络-门控循环单元)的多变量负荷预测模型MATLAB代码
matlab·cnn·gru
3GPP仿真实验室1 天前
【Matlab源码】6G候选波形:OFDM-IM 索引调制仿真平台
开发语言·matlab