如何将YUYV图像压缩成JPEG

4
(Cross posted to libjpeg-turbo-users list.)
我遇到了libjpeg-turbo的一个问题。
tjCompress2函数需要RGB或灰度图像进行压缩。
http://libjpeg-turbo.sourceforge.net/ljtdoc.branches_1.3.x/turbojpeg-c/group___turbo_j_p_e_g.html#gaba62b7a98f960839b588579898495cf2

对不起,由于它破坏了Markdown,您需要粘贴该链接。

我的网络摄像头(PS3 EyeToy)具有以下特点:

chris@raspberrypi ~ $ v4l2-ctl --get-fmt-video
Format Video Capture:
    Width/Height  : 320/240
    Pixel Format  : 'YUYV'
    Field         : None
    Bytes per Line: 640
    Size Image    : 153600
    Colorspace    : SRGB

http://en.wikipedia.org/wiki/JPEG#Color_space_transformation中可以看出,YUYV相当于JPEG所需的YCbCr(虽然与亮度相比,其Cb和Cr数据减半)。我的理解是否正确?
我知道如何使用矩阵将YUYV转换为RGB,但似乎在不需要任何转换的情况下进行两次颜色空间变换是浪费稀缺CPU周期和色彩准确性的。是否有一个函数可以直接将YUYV图像压缩成JPEG?
1个回答

2
自从提出这个问题以来,TurboJPEG API 中已经实现了一个名为tjCompressFromYUV的函数。它可以将一个以YCbCrYUV格式表示的图像转换为 JPEG 图像。
但是,要使用 TurboJPEG API 压缩 YUYV 格式的图像,仍然需要将其转换为 Y-Cb-Cr 像素格式。

可能还有一点机会使用 4:2:2子采样YUYV 图像转换为 YUV 图像,因为这样会产生每个 UV 组件的两个 Y 组件,但如果 this source 是准确的,则有四种不同的方式来放置 YUVY 组件。但要肯定,这种方法有 1/4 的机会可行。

否则,您可以在将图像转换为 JPEG 之前使用 PNGU 或类似工具进行图像转换,因为该库能够“以 png RGB8 格式保存 YCbYCr 图像”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接