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

本文探讨了在I420YUV数据中,当宽度和高度为奇数时,U/V通道像素如何处理的问题。结论是:对于不能整除2的宽度和高度,应向上取整以保持边缘像素精度。作者通过实际操作和ffmpeg测试验证了这一规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

I420 中 yuv 数据存放在3个 planes 中。
网上一般说 I420 数据大小为 widthheight1.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,需要向上取整,以提高边缘像素精度。但是没有专业的定义,如果大家找到专业定义辛苦贴到评论中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值