NV21 格式和奇数图像尺寸
NV21 format and odd image dimensions
我已经在 Android 中使用 NV21 图像工作了一段时间,并且我一直在跟踪一个错误,该错误可能是由 NV21 图像中不正确的索引字节引起的。
this question 答案中的图像很好地概述了 Y、U 和 V 字节在图像缓冲区中的定位方式。不确定是否允许,但我将其嵌入下面:
- 当图像具有奇数尺寸(如奇偶校验)时会发生什么?这种格式甚至可能吗?
- 我们在某处有这种格式的官方规范吗?
对于奇数尺寸的图像(即 W 或 H 之一,在 WxH 图像中是奇数),您会期望 Y 平面像往常一样被完全采样,WxH 采样,然后是2(⌈W/2⌉ x ⌈H/2⌉) 个色度样本,其中我们将每个图像维度除以 2,但向上取整而不是向下取整。
所以图像最边缘的一些像素的色度样本仅对应于 1 或 2 个原始像素,而不是 4 个。我希望这是有道理的。您可以在此 link 中看到其他几个库以前在处理 YUV 图像中的奇数尺寸时遇到问题。
关于你的第二个问题,我还没有看到官方规范,但是我在android框架中看到了一些处理这种格式的代码,我会看看能不能挖出一个link,并将其附加到此答案。
我已经在 Android 中使用 NV21 图像工作了一段时间,并且我一直在跟踪一个错误,该错误可能是由 NV21 图像中不正确的索引字节引起的。
this question 答案中的图像很好地概述了 Y、U 和 V 字节在图像缓冲区中的定位方式。不确定是否允许,但我将其嵌入下面:
- 当图像具有奇数尺寸(如奇偶校验)时会发生什么?这种格式甚至可能吗?
- 我们在某处有这种格式的官方规范吗?
对于奇数尺寸的图像(即 W 或 H 之一,在 WxH 图像中是奇数),您会期望 Y 平面像往常一样被完全采样,WxH 采样,然后是2(⌈W/2⌉ x ⌈H/2⌉) 个色度样本,其中我们将每个图像维度除以 2,但向上取整而不是向下取整。
所以图像最边缘的一些像素的色度样本仅对应于 1 或 2 个原始像素,而不是 4 个。我希望这是有道理的。您可以在此 link 中看到其他几个库以前在处理 YUV 图像中的奇数尺寸时遇到问题。
关于你的第二个问题,我还没有看到官方规范,但是我在android框架中看到了一些处理这种格式的代码,我会看看能不能挖出一个link,并将其附加到此答案。