2016-07-15 108 views
2

我有一个关于DICOM标准和libjpeg库的问题。 在DICOM标准中,有,除其他外,传输语法:libjpeg和无损JPEG

JPEG无损,非分层,一阶预测 (流程14 [选择值1]): 默认传输语法无损JPEG图像压缩

据我所知,这个传输语法符合JPEG-1 Lossles格式。 我开始研究的libjpeg库,我发现它不支持无损JPEG,如前所述这里(?):JPEG Lossless in DICOM

此外,libjpeg的文档中有一个说法部分:

不支持 ISO选项包括: *分层存储 * 无损JPEG * DNL标记 *非整数比率的子采样

然而,在库中的代码,在压缩参数结构jpeg_compress_struct有一个字段:

boolean lossless;  /* TRUE=lossless encoding, FALSE=lossy */ 

什么是意味着什么?我很困惑。任何人都可以描述图书馆支持哪些JPEG标准?此外,如何设置压缩参数以与DICOM JPEG无损标准兼容?

+0

看来,libjpeg的支持无损模式(JPEG-LS),这是不同的来自您正在使用的无损JPEG。除DICOM库外,我还没有看到此编解码器的任何实现。我写了自己的文章,其实很简单。 – BitBank

+0

你确定libjpeg支持JPEG-LS吗?我认为这是后来对JPEG和libjpeg的修改 - 据我所知 - 支持“基本”的一个 – Artyshan

+0

我不是100%确定,但我没有看到任何看起来会帮助你的东西。事实是,解码DICOM无损JPEG需要大约100行C代码(用于特定的无损算法)。这与使用滤波方法的PNG和使用最大长度为16的霍夫曼代码编码的增量值类似。 – BitBank

回答

1

让我们先在这里做一些说明。您应该从最着名的JPEG 6b(aka 62)版本开始。首先阅读here的代码。你会发现没有提及你的boolean lossless。的libjpeg 6b是基准代码库投放两个叉:

  • 圭Vollbeding(IJG维护者):的libjpeg 7和向上与著名SmartScale扩展
  • dcommander的libjpeg涡轮,特别是读取here的评论。

因此,如果这是您所说的libjpeg,那么是的它不支持标准中指定的无损模式。 Ken Murchison创建了无损补丁,您仍应该能够找到它(例如,here)。它应该直接应用于libjpeg 6b。如果你不想自己修补lib,可以快速查看GDCM和or DCMTK,因为它们都使用libjpeg +着名的无损补丁(带有一些补丁,感谢DCMTK团队)的便利副本。

在这一点上,这应该回答你的问题。

有关的libjpeg(IJG)和libjpeg的涡轮增压的信息的进一步细节,我建议你读出的信息:


如果你还在读书,我申请你也有快速浏览另一个图书馆(故意)也叫libjpeg,在这里看到github。特别要查看README文件(here)。而且您会发现这个libjpeg是ITU 81的全面实施(有损,无损,8/12/16位,甚至是全部在单个代码中的分层结构,无需进行多次编译!)。

以及物品是否完整,我发现下面的链接非常有用:

+0

谢谢,你澄清它:) – Artyshan