当前位置: 首页 > news >正文

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

转换

%RGB_to_YUVY = 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_RGBR = 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分量

http://www.lryc.cn/news/267448.html

相关文章:

  • 【线性代数】决定张成空间的最少向量线性无关吗?
  • 暴力破解(Pikachu)
  • 如何使用CMake查看opencv封装好的函数
  • 微盛·企微管家:用户运营API集成,电商无代码解决方案
  • Hive 部署
  • CopyOnWriteArrayList源码阅读
  • Windows操作系统:共享文件夹,防火墙的设置
  • STM32独立看门狗
  • 财务数据智能化:用AI工具高效制作财务分析PPT报告
  • vue3中使用three.js记录
  • MySQL——表的内外连接
  • 基于IPP-FFT的线性调频Z(Chirp-Z,CZT)的C++类库封装并导出为dll(固定接口支持更新)
  • 【C语言】指针
  • PostgreSql 索引使用技巧
  • 【华为数据之道学习笔记】6-7打造业务自助分析的关键能力
  • K8S从harbor中拉取镜像的规则imagePullPolicy
  • LeetCode刷题--- 优美的排列
  • 关于edge浏览器以及插件推荐【亲测好用】
  • 关于“Python”的核心知识点整理大全43
  • Android Framework一些问题思考
  • 2024年安全员-C证证考试题库及安全员-C证试题解析
  • 推广主要指标及定义
  • 【Proteus仿真】【Arduino单片机】水质监测报警系统设计
  • 随机问卷调查数据的处理(uniapp)
  • 开源分布式搜索引擎ElasticSearch结合内网穿透远程连接
  • Leetcode2928. 给小朋友们分糖果 I
  • go-zero开发入门之网关往rpc服务传递数据2
  • Cron介绍,以及常见的cron表达式
  • 智能优化算法应用:基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 分布式训练通信NCCL之Ring-Allreduce详解