DCM4CHE解压缩的DICOM文件

概要

上一篇博客
DCM4CHE图像显示
是针对未压缩的dicom文件的显示处理,那对于压缩的dicom文件该怎样处理呢?
本文就介绍带压缩协议的dicom文件处理。

一.查看dicom的压缩协议 (也可以通过第三方dicom查看软件查看,tag:0020,0010)

		DicomInputStream dis = new DicomInputStream(new File("D:/dicomFile/test/11.dcm"));	
    	System.out.println(dis.getTransferSyntax());

结果:
DCM4CHE解压缩的DICOM文件_第1张图片
这里的1.2.840.10008.1.2.4.70(JPEG Lossless),是就是当前dicom的压缩协议,当然这只是其中一种压缩协议,详细压缩协议见DICOM之Transfer Syntax,这里就不再赘述了。

二.解压缩dicom文件

  1. 添加对应的dcm4che的jar包
    在pom.xml里:
		<dependency>
			<groupId>org.dcm4che</groupId>
			<artifactId>dcm4che-imageio</artifactId>
			<version>5.21.0</version>
		</dependency>
		<dependency>
			<groupId>org.dcm4che</groupId>
			<artifactId>dcm4che-imageio-opencv</artifactId>
			<version>5.21.0</version>
			<scope>runtime</scope>
		</dependency>

在eclipse里加入opencv的动态链接库(如果你是通过源码编译的dcm4che,在你编译的dcm4che-assembly\target\dcm4che-5.21.0-bin\dcm4che-5.21.0\lib路径下,要是直接从网上下的编译好的直接就在lib目录下),直接在下面的界面
DCM4CHE解压缩的DICOM文件_第2张图片

  1. 开始解压
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import org.dcm4che3.data.Attributes;
import org.dcm4che3.data.UID;
import org.dcm4che3.imageio.codec.Transcoder;

public class Dcm4cheTranscode {
	public static void main(String[] args) {
		File src = new File("D:/dicomFile/test/11.dcm"); //带有压缩协议的dicom原始文件
		File dest = new File("D:/dicomFile/test/33.dcm"); //解压成未压缩的dicom目标文件
		
		try {
			transcodeWithTranscoder(src, dest);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static void transcodeWithTranscoder(File src, final File dest) throws IOException {
		try (Transcoder transcoder = new Transcoder(src)) {
            transcoder.setDestinationTransferSyntax(UID.ExplicitVRLittleEndian);
            transcoder.transcode(new Transcoder.Handler(){
                @Override
                public OutputStream newOutputStream(Transcoder transcoder, Attributes dataset) throws IOException {
                    return new FileOutputStream(dest);
                }
            });
        } catch (Exception e) {
            Files.deleteIfExists(dest.toPath());
            throw e;
        }
	}
}

结果:
在这里插入图片描述
你会发现解压后的文件比解压前的大很多,我们用第三方dicom文件查看器RadiAnt打开dicom文件发现,两者的图像数据存储格式发生变化了。
11.dcm:
在这里插入图片描述
33.dcm:
在这里插入图片描述

  1. 显示

就可以把33.dcm参考我的博客 DCM4CHE图像显示,显示到图片里了。

你可能感兴趣的:(DCM4CHEE,Dicom医学影像处理)