dcm2pnm,dcmj2pnm和dcml2pnm之间的差异

时间:2017-04-11 00:05:04

标签: image-processing dicom dcmtk

标题说明了一切。 dcmtk工具包(http://support.dcmtk.org/docs/dcm2pnm.html)的dcm2pnm(http://support.dcmtk.org/docs/dcmj2pnm.html),dcmj2pnm(http://support.dcmtk.org/docs/dcml2pnm.html)和dcml2pnm(http://support.dcmtk.org/docs/pages.html)命令有什么区别?他们似乎都将dicom图像转换为其他格式。是否有任何特殊情况应该优先于其他情况?

编辑:似乎dcml2pnm支持更多格式。为什么不将它用于所有目的?其他命令的优点是什么?

2 个答案:

答案 0 :(得分:4)

我可能是@kritzel_sw所指的DCMTK开发人员。

三个DCMTK命令行工具之间的区别是:支持压缩的DICOM图像和输出格式。

  • dcm2pnm 是20多年前开发的原始工具,最初只支持PNM / PGM图像格式输出(这也是该工具被称为& #34; dcm2pnm"而不是" dcm2img"等等)。而且,因为那时DCMTK不支持任何封装的传输语法(即压缩),只能读取未压缩的DICOM图像。
  • dcmj2pnm 位于DCMTK的子模块" dcmjpeg"并添加了对JPEG压缩DICOM图像(基于IJG库)以及输出的JPEG图像格式的支持。
  • dcml2pnm 位于DCMTK的子模块" dcmjpls"并添加了对JPEG-LS压缩DICOM图像的支持(基于CharLS库)。它不支持传统的JPEG。

所有这些从源代码包中可能比从二进制包更明显,但在上面引用的文档中也提到了它(参见"描述"部分)。

如果你问为什么有三种不同的工具(事实上,还有第四种用于JPEG-2000支持,但不是公共DCMTK的一部分),我的答案是:这主要是为了历史原因以及为了使各种DCMTK模块之间的依赖关系尽可能简单。 此外,我们将命令行工具视为底层C ++类库的一种示例应用程序。因此,如果您需要一个支持DCMTK中所有图像压缩方案的工具,那么编写这样的工具应该很容易。

答案 1 :(得分:1)

好问题。其中一个dcmtk开发人员有时会在这里发帖,也许你很幸运能得到比我更好的答案。

dcmj2pnm将JPEG编解码器添加到dcm2pnm功能中。因此,它能够处理JPEG压缩的DICOM数据并产生JPEG输出图像。所以它是dcm2pnm功能的超集。 我认为这是因为dcmtk提供了不同的编译选项,允许包含/排除libjpeg。只是将工具包的选项反映到随附的命令行工具中。当您从选项-h

开始时,由文件格式列表确认

对于dcml2pnm,我不确定,但这是一个很好的猜测:与JPEG相同,但包括JPEG-LS编码器,这是dcmtk的另一个可选第三方工具包。