我对DICOM标准和libjpeg库有疑问。 在DICOM标准中,还有转移语法:
JPEG无损,非等级,一阶预测 (过程14 [选择值1]): 无损JPEG图像压缩的默认传输语法
据我所知,此传输语法对应于JPEG-1 Lossles格式。 我开始研究libjpeg库,我发现它不支持(?)Lossless JPEG,如下所述:JPEG Lossless in DICOM
此外,在libjpeg文档中有一部分说:
不支持的 ISO选项包括: *分层存储 * 无损JPEG * DNL标记 *非整数子采样率
但是,在库代码中,在压缩参数结构jpeg_compress_struct
中有一个字段:
boolean lossless; /* TRUE=lossless encoding, FALSE=lossy */
什么意思?我真的很困惑。有谁能描述图书馆支持哪些JPEG标准?此外,如何设置压缩参数以与DICOM JPEG Lossless标准兼容?
答案 0 :(得分:2)
首先让我们做一些澄清。你应该开始的是着名的JPEG 6b(又名62)版本。首先阅读here中的代码。你会发现你的boolean lossless
没有提及。 libjpeg 6b是提供两个forks的参考代码库:
SmartScale
扩展名dcommander
libjpeg-turbo,特别是从here读取评论。因此,如果这是您正在讨论的libjpeg
,那么是的,它不支持标准中指定的无损模式。无损补丁是由Ken Murchison创建的,你仍然可以找到它(例如here)。它应该直接应用于libjpeg 6b。如果您不想自己修补lib,请快速查看GDCM和/ DCMTK,因为他们都使用了方便的libjpeg副本+着名的无损补丁(还有一些补丁,感谢DCMTK团队。)
此时这应该回答你的问题。
有关libjpeg(IJG)和libjpeg-turbo信息的更多详细信息,我建议您阅读以下信息:
如果你还在阅读,我也很高兴你也可以快速浏览另一个名为libjpeg
的图书馆(故意),在github看到它。特别是查看README
文件(here)。你会发现这个libjpeg
是ITU 81的完整实现(有损,无损,8/12/16位甚至是分层的所有单一代码,无需进行多次编译!)。
为了完整起见,我发现以下链接非常有用: