【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是两种常见的颜色空间模型,它们之间有很强的关联。

扫描二维码关注公众号,回复: 17300879 查看本文章

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模型之间的关系可以看作是一种变体关系,它们都用于描述图像的亮度和色度信息。

转换

%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;
%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图层

mov=VideoReader('**.avi');       %读视频
I=read(mov,100);                 %读入某一帧,RGB图
IR=I1(:,:,1);                    %R分量
IG=I1(:,:,2);                    %G分量
IB=I1(:,:,3);                    %B分量

猜你喜欢

转载自blog.csdn.net/sqqwm/article/details/135206252