我有一个关于 DICOM 标准和 libjpeg 库的问题。 在 DICOM 标准中,除其他外,还有传输语法:
JPEG Lossless, Nonhierarchical, First- Order Prediction (Processes 14 [Selection Value 1]): Default Transfer Syntax for Lossless JPEG Image Compression
据我所知,此传输语法对应于 JPEG-1 Lossles 格式。 我开始研究 libjpeg 库,发现它不支持(?)无损 JPEG,如下所述:JPEG Lossless in DICOM
此外,在 libjpeg 文档中有一部分说:
Unsupported ISO options include: * Hierarchical storage * Lossless JPEG * DNL marker * Nonintegral subsampling ratios
但是,在库代码中,在压缩参数结构jpeg_compress_struct
中有一个字段:
boolean lossless; /* TRUE=lossless encoding, FALSE=lossy */
是什么意思?我真的很困惑。谁能描述图书馆支持哪些 JPEG 标准?另外,如何设置压缩参数才能兼容DICOM JPEG Lossless标准?
最佳答案
让我们先在这里做一些澄清。您应该从著名的 JPEG 6b(又名 62)版本开始。从阅读 here 中的代码开始.您会发现没有提及您的boolean lossless
。 libjpeg 6b 是服务于两个分支的引用代码库:
- Guido Vollbeding(IJG 维护者):libjpeg 7 及更高版本,带有著名的
SmartScale
扩展 dcommander
libjpeg-turbo,特别是从 here 中读取注释.
因此,如果这是您正在谈论的 libjpeg
,那么是的,它不支持标准中指定的无损模式。无损补丁由 Ken Murchison 创建,您应该仍然可以找到它(例如 here )。它应该直接应用于 libjpeg 6b。如果您不想自己修补 lib,请快速查看 GDCM和或DCMTK ,因为他们都使用 libjpeg 的方便副本 + 著名的无损补丁(还有一些补丁,感谢 DCMTK 团队)。
此时这应该可以回答您的问题。
有关 libjpeg (IJG) 和 libjpeg-turbo 信息的更多详细信息,我建议您阅读以下信息:
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=612341#131
- https://lists.debian.org/debian-devel-announce/2014/08/msg00000.html
如果您仍在阅读,我建议您也快速浏览一下另一个库(有意)也称为 libjpeg
,请在此处查看 github .特别是查看 README
文件 ( here )。你会发现这个 libjpeg
是 ITU 81 的完整实现(有损、无损、8/12/16 位甚至分层都在一个代码中,无需进行多次编译!) .
为了完整起见,我发现以下链接非常有用:
关于jpeg - libjpeg 和无损 JPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391049/