gpt4 book ai didi

ios - 为什么 Y 平面和 CbCr 平面报告的大小不同?

转载 作者:行者123 更新时间:2023-11-29 02:45:50 25 4
gpt4 key购买 nike

CVPixelBufferLockBaseAddress(pixelBuffer, 0);

const size_t lumaPlaneIndex = 0;
size_t lumaPlaneWidth = CVPixelBufferGetWidthOfPlane(pixelBuffer, lumaPlaneIndex);
size_t lumaPlaneHeight = CVPixelBufferGetHeightOfPlane(pixelBuffer, lumaPlaneIndex);

const size_t cbcrPlaneIndex = 1;
size_t cbcrPlaneWidth = CVPixelBufferGetWidthOfPlane(pixelBuffer, cbcrPlaneIndex);
size_t cbcrPlaneHeight = CVPixelBufferGetHeightOfPlane(pixelBuffer, cbcrPlaneIndex);

NSLog(@"lumaPlaneWidth: %zu", lumaPlaneWidth);
NSLog(@"lumaPlaneHeight: %zu", lumaPlaneHeight);
NSLog(@"cbcrPlaneWidth: %zu", cbcrPlaneWidth);
NSLog(@"cbcrPlaneHeight: %zu", cbcrPlaneHeight);

CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);

在我的 iPhone 5 上运行 iOS 7 的前置摄像头的输出是:

lumaPlaneWidth: 1280
lumaPlaneHeight: 720
cbcrPlaneWidth: 640
cbcrPlaneHeight: 360

亮度 (Y) 平面是 CbCr 平面的两倍,这是为什么?

最佳答案

人眼对亮度的变化比对颜色的变化敏感得多。它可以以更高的频率识别它们,因此信息通常以更高的采样频率存储。动机只是人类感知的现实(加上,我猜,带宽的一些考虑:如果数据传输是免费的,你会在物理上尽可能多地捕获)。

您获得的缓冲区的 Y(/亮度) channel 采样率是 Cb 和 Cr(/颜色) channel 采样率的四倍。那是 4:1:1 chroma subsampling .

此外,99.9999% 的数码相机使用彩色滤光片(几乎总是 Bayer filter)进行拍摄,这意味着它们实际上并不是在每个位置都捕捉到完整的颜色,而是在相邻位置捕捉单独的主要成分,然后进行组合他们在数学上。如果您想对真实信号进行非常好的估计,那么这个问题就变得很重要。如果您希望某人只需要 4:1:1,那么 demosaic 会更便宜直接到 4:1:1。这就是 API 不给你 4:4:4 的原因,尽管它不知道你打算对数据做什么。

关于ios - 为什么 Y 平面和 CbCr 平面报告的大小不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25148601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com