YUV420

YUV420P,Y,U,V三个分量都是平面格式,分为I420YV12I420格式和YV12格式的不同处在U平面和V平面的位置不同。在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)。

YUV420SP, Y分量平面格式,UV打包格式, 即NV12。 NV12与NV21类似,U 和 V 交错排列,不同在于UV顺序。

I420: YYYYYYYY UU VV    =>YUV420P

YV12: YYYYYYYY VV UU    =>YUV420P

NV12: YYYYYYYY UVUV     =>YUV420SP

NV21: YYYYYYYY VUVU     =>YUV420SP

 

dxva 输出 NV12

x264 输入、输出 I420

05-14
### YUV420格式简介 YUV420是一种常见的颜色编码格式,主要用于视频和图像处理领域。该格式将亮度信息(Y)与色度信息(U/V)分离,并通过降低色度分辨率来减少数据量[^3]。具体来说,在YUV420格式中,每四个像素共享一组U和V值,而每个像素都有自己的Y值。 #### 特点 - **采样比例**:对于宽度为W、高度为H的图像,Y分量大小为W×H,U和V分量各占(W/2)×(H/2)[^5]。 - **存储结构**:常见变体包括I420、YV12、NV12和NV21等。其中,I420按顺序存储Y、U、V平面;YV12则先存Y再依次存放V和平面U;NV12/NV21则是交错存储UV或VU对[^2]。 --- ### 使用场景 由于其高效的带宽利用率以及良好的视觉效果表现,YUV420被广泛应用在多个方面: - **多媒体传输**: 在网络流媒体服务中,为了节省带宽资源通常会采用基于YUV的颜色模型进行压缩后再发送给客户端解码播放. - **图像处理软件内部操作**: 很多时候出于性能考虑也会先把输入图片转成这种形式来做一些特定算法运算比如边缘检测等等之后再还原回去呈现给用户看.[^4] 以下是几个具体的例子说明它的实际用途: 1. **实时通信系统**(如Skype/ZOOM): 这些平台依赖于快速准确地捕捉并传递高质量但体积较小的画面帧从而保障双方交互流畅无卡顿现象发生; 2. **监控摄像头录制文件保存模式选择之一**,因为能有效控制最终产出物所占据的空间大小而不明显影响画质清晰程度; 3. 当涉及大规模批量生产消费级电子产品时(例如数码相机),制造商倾向于内置支持此类标准以便更好地兼容第三方应用程序接口(APIs). --- ### 转换方法 从YUV420到其他格式(特别是RGB)的过程可以通过多种方式进行实现。下面提供了一种基本的方法用于演示目的: ```c++ void Convert_YUV420_to_RGB(const uint8_t* pY, const uint8_t* pU, const uint8_t* pV, int width, int height,uint8_t *pRgba){ for(int i=0;i<height;i++) { for(int j=0;j<width;j++){ int y = pY[i*width+j]; int u = pU[(i>>1)*(width>>1)+(j>>1)] - 128; int v = pV[(i>>1)*(width>>1)+(j>>1)] - 128; int r = (int)(y + 1.402f*v); int g = (int)(y - 0.344136f*u - 0.714136f*v); int b = (int)(y + 1.772f*u); *(pRgba++)=(uint8_t)((r>255)?255:(r<0)?0:r); *(pRgba++)=(uint8_t)((g>255)?255:(g<0)?0:g); *(pRgba++)=(uint8_t)((b>255)?255:(b<0)?0:b); *(pRgba++)=255;//alpha channel set fully opaque here } } } ``` 上述C++代码片段展示了一个简单的逐像素遍历过程完成由YUV至RGBA阵列映射的功能。值得注意的是这里采用了固定数值近似代替精确浮点数计算提高运行速度的同时也略微牺牲了一些精度。 另外还有更高级的技术手段可用于加速整个流程,例如借助SIMD(Single Instruction Multiple Data)指令集像Intel SSE/SSE2等进一步挖掘硬件潜力达到事半功倍的效果[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值