当图像宽高为奇数时,如何计算 I420 格式的uv分量大小

背景

I420 中 yuv 数据存放在3个 planes 中。

网上一般说 I420 数据大小为 widthheight 1.5

但是当 width 和 height 是奇数时,这个计算公式会有问题。

I420 中 u 和 v 的宽高分别为 y 的一半。

但是当不能整除时,是如何取整呢?向上还是向下,网上一般都没有细说。

求证过程

今天遇到个问题,和这个相关。网上查询和用 ffmpeg 实验了一下。

网上查询

问了 chatgpt

google 结果

https://groups.google.com/a/webmproject.org/g/webm-discuss/c/LaCKpqiDTXM

https://sourceforge.net/p/raw-yuvplayer/bugs/1/

使用 ffmpeg 测试

使用 windows 自动绘图系统,绘制3张 rgb 图片,保存成 bmp 图片。

使用 ffmpeg 命令将图片转化为视频。

使用 ffmpeg 命令将 Mp4 转换为 yuv420p 的 yuv 数据

使用 notepad 打开数据,计算 yuv 的数据长度。

最后计算结果和网络说的一样。

yuv player 播放该 yuv 数据正常

结论

uv 的宽高除以2,需要向上取整,以提高边缘像素精度。但是没有专业的定义,如果大家找到专业定义辛苦贴到评论中。

相关推荐
一直会游泳的小猫2 天前
uv - 极速 Python 包管理器
python·工具·uv·包管理
爱吃巧克力的程序媛2 天前
计算机图形学---在OpenGL中,什么是归一化 UV 坐标?
人工智能·计算机视觉·uv
大江东去浪淘尽千古风流人物2 天前
【UV-SLAM】eLSD/LBD 数据维度 UV-SLAM吸收借鉴
数据库·线性代数·oracle·矩阵·uv·augmented reality
程序员-小李3 天前
uv 学习总结:从零到一掌握现代化 Python 工具链
python·学习·uv
咯哦哦哦哦3 天前
Foundationpose环境配置【非conda--纯UV】(linux22.04+python3.10)
python·pip·uv
CG_MAGIC5 天前
幕后花絮:用Blender打造自己的建筑
3d·blender·贴图·uv·建模教程·渲云渲染
青木9605 天前
前后端开发调试运行技巧
linux·服务器·前端·后端·npm·uv
Ice星空8 天前
使用 uv 进行 python 项目管理
开发语言·python·uv
sinat_367104569 天前
windows安装uv
uv
大江东去浪淘尽千古风流人物9 天前
【UV-SLAM 】彻底吃透UV-SLAM:创新原理、工程实现与直线几何核心代码详解
数据库·人工智能·python·机器学习·oracle·uv