实践之旅:从HDR转换为SDR (第三部分) - i420转换为YUV的公式
最编程
2024-08-15 15:42:03
...
i420先放完所有U再放所有V(记法就是Y+U+V),U不一定占满整一行,如下图所示最后一个U9在整一行的中间,这也是为什么不直接用网上常见示意图解释的原因。
那么如何从i420图像转换出YUV图像呢?
定义: i420(x,y) 表示i420图像,YUV(x,y)表示YUV图像,x是横坐标,y是纵坐标,坐标从0开始计算
已知 i420(x,y),求YUV(x,y)
如下图所示YUV(5,2)就是粉红色方块的位置Y18U6V6
Y(5,2):i420(5,2)=Y18
U(5,2):i420(5,6)=U6
V(5,2):i420(2,8)=V6
实际操作过程中没有颜色可以直观来看,最终需要使用转换公式,其实就是算出YUV的坐标在i420图像中的对应位置。
i420转YUV公式推理过程:
Y1-Y17红色线框横竖坐标采样一半得到是6个蓝色线框,与之对应U1-U6蓝色线框也刚好是6个,这说明U位于所有U的个数等于Y横竖坐标采样一半的个数。个数和坐标的关系很简单,横坐标就是个数除以宽的余数,纵坐标就是个数除以宽的商。U在所有YUV的个数还要在所有U的个数加上偏移量,U要加上偏移量(前面所有Y的个数),V同理也要加上偏移量(前面所有Y的个数加上所有U的个数)。
注意:
- i表示UV在各自通道第几个,U和V求的时候加上偏移量就是求UV在整个i420图像第几个
- 除2不保留小数的,不要以为除2再乘2没有变化
上一篇: 全面了解YUV格式