如何在Java中读取DICOM文件的内容?

Yay*_*tcm 3 java dicom dcm4che

DICOM文件包含一系列CAT扫描图像.Java中是否有DICOM库的实现可以读取文件并提取存储在其中的图像?我想将这些图像存储到BufferedImage数据类型中.

mal*_*una 7

您可以使用dcm4che-3.3.X.这个神奇框架的新改写带有完全集成的jai-imageio库,您不再需要下载和配置它了.

读取Dicom文件的元信息是创建一个org.dcm4che3.io.DicomInputStreamfrom dicom文件并使用实现org.dcm4che3.io.DicomInputHandler接口的类解析流的一个主要部分.您必须实现此方法:

void readValue(DicomInputStream dis, Attributes attrs) throws IOException;
void readValue(DicomInputStream dis, Sequence seq) throws IOException;
void readValue(DicomInputStream dis, Fragments frags) throws IOException;
void startDataset(DicomInputStream dis) throws IOException;
void endDataset(DicomInputStream dis) throws IOException;
Run Code Online (Sandbox Code Playgroud)

startDatasetendDataset流打开/关闭时启动和方法.在找到属性,序列或片段时调用read方法.您可以在dcm4che/dcm4che-tool/dcm4che-tool-dcmdump中看到完整的示例实现.

要阅读DICOM图像到java.awt.image.BufferedImage你需要得到一个javax.imageio.stream.ImageInputStream从DICOM文件这样javax.imageio.ImageIO.createImageInputStream(dicomFile)哪里dicomFile是一个java.io.File.

如果您想知道这个简单代码是如何工作的,那是因为dcm4che-imageio插件.

您再次可以在dcm4che/dcm4che-tool/dcm4che-tool-dcm2jpg中看到完整的示例实现.

显然,您需要一个正确配置的maven,pom.xml其中包含您需要的所有依赖项,至少:

<dependencies>
  <dependency>
    <groupId>org.dcm4che</groupId>
    <artifactId>dcm4che-imageio</artifactId>
    <version>3.3.7</version>
  </dependency>
  <dependency>
    <groupId>org.dcm4che</groupId>
    <artifactId>dcm4che-imageio-rle</artifactId>
    <version>3.3.7</version>
    <scope>runtime</scope>
  </dependency>
  <dependency>
    <groupId>com.sun.media</groupId>
    <artifactId>jai_imageio</artifactId>
    <version>1.2-pre-dr-b04</version>
    <scope>runtime</scope>
  </dependency>
  <dependency>
    <groupId>org.dcm4che.tool</groupId>
    <artifactId>dcm4che-tool-common</artifactId>
    <version>3.3.7</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
  </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

还有dcm4che maven repo

<repositories>
  <repository>
    <id>www.dcm4che.org</id>
    <name>dcm4che Repository</name>
    <url>http://www.dcm4che.org/maven2</url>
</repository>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.