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

Android RGB转YUV的算法

将 ARGB(Alpha-Red-Green-Blue)颜色空间转换为 YUV(亮度-色度)颜色空间的常用算法有以下几种:

矩阵转换法

使用预定义的转换矩阵将 RGB 值转换为 YUV 值。其中,Y 表示亮度,U 和 V 表示色度。这种算法是最基本且常见的 RGB 到 YUV 的转换方法,但结果可能不是最精确的。

Y = 0.299 * R + 0.587 * G + 0.114 * B
U = -0.14713 * R - 0.28886 * G + 0.436 * B
V = 0.615 * R - 0.51499 * G - 0.10001 * B

JPEG 标准法

根据 JPEG 图像压缩标准,使用以下公式将 RGB 值转换为 YUV 值。这种方法相对于矩阵转换法,对 U 和 V 分量进行了偏移和缩放,以适应 YUV 的取值范围。

Y = 0.299 * R + 0.587 * G + 0.114 * B
U = -0.168736 * R - 0.331264 * G + 0.5 * B + 128
V = 0.5 * R - 0.418688 * G - 0.081312 * B + 128

ITU-R BT.601(Rec.601)

根据亮度和色度的感知权重,将RGB图像转换为YUV图像。Y分量表示亮度信息,U和V分量表示色度信息。

Y = 0.299 * R + 0.587 * G + 0.114 * B
U = -0.14713 * R - 0.28886 * G + 0.436 * B
V = 0.615 * R - 0.51499 * G - 0.10001 * B

ITU-R BT.709(Rec.709)

用于高清电视和广播的标准,相较于BT.601,它使用了不同的权重来计算YUV分量。

Y = 0.2126 * R + 0.7152 * G + 0.0722 * B
U = -0.09991 * R - 0.33609 * G + 0.436 * B
V = 0.615 * R - 0.55861 * G - 0.05639 * B

ITU-R BT.2020(Rec.2020)

用于超高清(UHD)和高动态范围(HDR)视频的标准,它提供了更广泛的颜色范围和更准确的色度表示。

Y = 0.2627 * R + 0.6780 * G + 0.0593 * B
U = -0.1396 * R - 0.3604 * G + 0.5000 * B
V = 0.5000 * R - 0.4598 * G - 0.0402 * B

限制范围

黑色对应Y=16,白色对应Y=235,而色度分量的取值相对于完全范围有所缩小

Y[16,235]
U: [16:240]
V: [16:240]

YUV存储方式


http://www.kler.cn/a/147679.html

相关文章:

  • mysql索引的理解
  • Junit如何禁用指定测试类,及使用场景
  • 【Linux】:线程安全 + 死锁问题
  • 在Python如何用Type创建类
  • 【生产问题记录-Mysql分区】
  • harmony数据保存-数据持久化
  • 网站定制开发主要分类有哪些|企业 app 软件小程序定制
  • ELK+kafka+filebeat企业内部日志分析系统
  • ChatGPT等模型:到2026年,将消耗尽高质量训练数据
  • K8S----taint、tolerations、label
  • 正则化与正则剪枝
  • ②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?
  • 22款奔驰GLE450升级原厂360全景影像 超广角的视野
  • IP地址与隐私:曝光的数字签名
  • Qt 样式表
  • 如何正确选择爬虫采集接口和API?区别在哪里?
  • 通过互联网代理部署Docker+Kubernetes 1.28.1
  • YOLOv8 onnx 文件推理多线程加速视频流
  • 蓝桥杯-动态规划-子数组问题
  • 算法----确定两个字符串是否接近
  • HTML新手入门笔记整理:块元素和行内元素
  • 互联网金融智能风险防控技术要求
  • 【二维平面坐标曲线计算,从0到1的范围常用曲线计算公式】
  • 关于网站的favicon.ico图标的设置需要注意的几点
  • Android Handler同步屏障:深入解析
  • C语言—指针初始化