使用GLSL将RGB转换为YUV

时间:2013-08-16 01:42:02

标签: opengl glsl rgb yuv color-space

我正在寻找可以将RGB帧(比如像素格式为ARGB)转换为YUV(比如YUV420)的样本GLSL片段着色器代码。

想象一下尺寸为1920x1080的RGB帧。我喜欢使用片段着色器将其转换为YUV帧。

您能指出我可以在UBuntu盒上编译和运行的代码吗?

3 个答案:

答案 0 :(得分:5)

为了将来参考,可以在Gstreamer gst-plugins-gl codebase中找到GLSL着色器中的一系列色彩空间转换:)

答案 1 :(得分:2)

首先,您应该知道您的问题措辞不当。没有人会给你写样本代码。您可以使用搜索引擎(甚至搜索此站点)获取从RGB转换为YUV的代码。

我写了一个类似于你正在寻找的答案here。它从RGB转换为YIQ,进行一些色调偏移并转换回来。您可以使用Y'CbCr矩阵进行颜色转换,而不是YIQ,如果这是您需要的。

但它不会下转换为4:2:0。但这应该很容易做到。一旦它采用Y'CbCr格式,您可以根据需要对适当的通道进行下采样。我建议首先在这些通道上进行低通滤波,以避免出现锯齿现象。

我不使用Linux,所以没有在Ubuntu上测试过。祝你好运。

答案 2 :(得分:0)

此链接使用计算着色器GLSL具有YUV 4:2:2 v210到RGB实现。 YUV 4:2:2 v210 --> RGB GLSL source code