使用现有工具,如何将JPEG图像的Luma,Cb,Cr通道提取到单独的图像中?

时间:2009-11-06 06:10:53

标签: image-processing jpeg

我正在寻找一种方法来提取单独的图像中的Luma(Y),Cb(蓝色成分),Cr(红色成分),JPEG图像的通道:

我希望结果等同于此example from Wikipedia.

输出必须直接从JPEG扫描开始(SOS)数据和JPEG中的其他数据计算而不是而不是“从后计算”由解压缩器输出的RGB图像。此任务的目的是生成尽可能接近“原始数据”的图像。

是否有现成的工具可以实现这一目标?我正在考虑使用Python,PyImage等拼凑一些东西,但我很惊讶我对开源或免费工具的搜索空洞。我知道有很多库可以提供帮助,尽管我很想知道更多的库。

对于这个问题,正确的答案是可以完成这项工作的免费和/或开源工具的工具链。带源的工具是首选。这些工具可以在任何平台上运行,但Linux或Win32将立即有用。

受codelogic启发的答案

给定libjpeg实现,更改djpeg.c和wrppm.c。

wrppm.c:

189:    case JCS_RGB:
190: +  case JCS_YCbCr:
191:    /* emit header for raw PPM format */

djpeg.c

560:   case FMT_PPM:
561: +   cinfo.quantize_colors = 0;
562: +   cinfo.out_color_space = JCS_YCbCr;

显然,这是快速破解,因为我有一个私有副本,其中PPM输出总是被强制为YCbCr,但它有效,我感谢你,codelogic,为你的Stone Code Logic。

2 个答案:

答案 0 :(得分:2)

根据建议你最好的选择是直接使用libjpeg。具体而言,您可以将jpeg_decompress_struct的{​​{1}}成员设置为out_color_space而不是JCS_YCbCr,并像往常一样阅读扫描行。 Here's一些示例代码(GPL)。

答案 1 :(得分:1)

显而易见的是libjpg