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存储方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值