从.ppm图像中,我提取了R,G,B数据并保存了以下结构:
RGB RGB RGB RGB RGB RGB RGB..........
对应每个像素位置。
然后我使用公式将R,G,V转换为Y,U,V。对于每个像素,我相应地获得了YUV。
R0G0B0->Y0U0V0 , R1G1B1 ->Y1U1B1, ........
我在YUV422数据格式之后保存了数据:YUV422数据格式在两个像素之间共享U和V值。因此,这些值每两个像素仅传输到PC图像缓冲区一次。
R0G0B0R1G1B1->Y0UY1V
a,如何从U0,U1和V0计算U和V,V1 ????????
b,就我而言,我使用了这个公式:
U=(U0+U1)/2; V=(V0+V1)/2;
根据结构保存获取的数据以创建.yuv文件:
YUYV YUYV YUYV YUYV YUYV YUYV......
但是当我使用YUV工具读取新的.yuv文件时,该图像与原始图像不相似。我在这里做错了什么????
答案 0 :(得分:0)
你所使用的公式是正确的。但YUV422平面(水平采样)输出数据排列的小幅修正。 宽度*高度大小的亮度数据,后跟宽度*高度/ 2的Cb数据和宽度*高度/ 2的Cr数据。
应该如下所述:
[Y1 Y2 Y3 ...(宽*高)] [Cb1 Cb2 ....(宽*高/ 2)] [Cr1 Cr2 ......(宽*高/ 2)]