YCbCr色彩空间
一. RGB三原色光模式(RGB color model)表示方式R(red): 红色G(green): 绿色B(blue): 蓝色使用场景摄影, 彩色电视, 彩色显示屏二. HSV(HSL)HSV(HSL) 是一种将 RGB 色彩模型中的点在圆柱坐标系中的表示法。表示方式H(Hue): 色相(表示什么颜色)每个角度上都有不同的颜色S(Saturation): 饱和度(表示颜色的深浅)色轮上的饱和
一. RGB
三原色光模式(RGB color model)
表示方式
- R(red): 红色
- G(green): 绿色
- B(blue): 蓝色
使用场景
摄影, 彩色电视, 彩色显示屏
二. HSV(HSL)
HSV(HSL) 是一种将 RGB 色彩模型中的点在圆柱坐标系中的表示法。
表示方式
- H(Hue): 色相(表示什么颜色)
- 每个角度上都有不同的颜色
- S(Saturation): 饱和度(表示颜色的深浅)
- 色轮上的饱和度, 从圆心出发, 半径越大, 饱和度越高
- V(Value)/B(Light): 亮度值(表示颜色的明暗)
- 从圆锥的顶点出发, 越往上, 亮度越大
使用场景
HSV 模型通常用于计算机图形应用中
特点
HSV 因为它类似于人类感觉颜色的方式,具有较强的感知度。而HSV以人类更熟悉的方式封装了关于颜色的信息:“这是什么颜色?深浅如何?明暗如何?”
- 通过 S 分量, 调节饱和度更方便
- 通过 V 分量, 调节亮度更方便
三. YUV(YCbCr)
YUV 是北美 NTSC 系统和欧洲 PAL 系统中模拟电视信号编码的基础
- YCbCr 则是在世界数字组织视频标准研制过程中作为 ITU - R BT1601 建议的一部分, 其实是 YUV 经过缩放和偏移的翻版
一) 表示方式
- Y: 亮度信号
- U(Cb): 蓝色色度分量
- V(Cr): 红色色度分量
二) 使用场景
YCbCr 常用于视频领域, 也是 JPEG 图像编码中采用的色彩空间
YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间,常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比较常见的YUV420分为两种:YUV420P和YUV420SP。
- 常用的 YUV 格式有 YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420
- android平台下使用相机默认图像格式是
NV21
属于YUV420SP
格式
其中 YUV420 的格式比较常用
YUV采样
YUV 4:4:4采样,每一个Y对应一组UV分量,一个YUV占8+8+8 = 24bits 3个字节。
YUV 4:2:2采样,每两个Y共用一组UV分量,一个YUV占8+4+4 = 16bits 2个字节。
YUV 4:2:0采样,每四个Y共用一组UV分量,一个YUV占8+2+2 = 12bits 1.5个字节。
三) YUV420
YUV420 每四个 Y 共用一组 UV 分量
- 分为 YUV420P 和 YUV420SP 两种子模式
- YUV420P和YUV420SP都是基于4:2:0采样的,所以如果图片的宽为width,高为 heigth,在内存中占的空间为 width * height * 3 / 2 ,其中前 width * height 的空间存放Y分量,接着 width * height / 4 存放U分量,最后 width * height / 4 存放V分量。
- 其中颜色相同的表示一组 YUV 的像素
1. YUV420P
YUV420P 又叫plane平面模式,
是 YUV 标准格式 YUV420, 主要分为: YU12和YV12
- YU12(在
android平台下
也叫作I420格式
): 先存储 Y 值, 再存储 U 值, 最后存储所有 V 值
YU12:亮度(行×列) + U(行×列/4) + V(行×列/4)
- YV12: 先存储 Y 值, 再存储 V 值, 最后存储所有 U 值
YV12:亮度Y(行×列) + V(行×列/4) + U(行×列/4)
2. YUV420SP
YUV420SP 先存储所有 Y 值, 然后是 UV/VU 交替存储, 一共两个平面, 其主要的子格式有 NV12 和 NV21, 是一种two-plane模式
- NV12: 先存储 Y 值, 再存储 UV
NV12
存储顺序是先存Y值
,再UV
交替存储:YYYYUVUVUV
,以4 X 4
图片为例子,占用内存为4 X 4 X 3 / 2 = 24
个字节
- NV21: 先存储 Y 值, 再存储 VU
android手机从摄像头采集的预览数据一般都是NV21,存储顺序是先存Y,再VU交替存储,
NV21
存储顺序是先存Y值
,再VU
交替存储:YYYYVUVUVU
,以4 X 4
图片为例子,占用内存为4 X 4 X 3 / 2 = 24
个字节
YUV和RGB转换
Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16
Cr = V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128
Cb = U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128
B = 1.164(Y - 16) + 2.018(U - 128)
G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
R = 1.164(Y - 16) + 1.596(V - 128)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)