Java提取.dcm文件中的多张图片,并进行放大、取反处理
该篇文章适用于.dcm类型的dicom文件,ima目前我还没找到解决的办法。解析的方法是遍历病人文件中的所有.dcm文件,并提取出其中图片,并对其进行放大、取反。所用到的方法也是我在网上浏览很多资源,加上自己对文件的分析,不断尝试和创新所得出的。
文件结构
所得到的部分图片
代码部分
需要导入的一些依赖
<dependency>
<groupId>net.imagej</groupId>
<artifactId>ij</artifactId>
<version>1.51j</version>
</dependency>
<dependency>
<groupId>com.mortennobel</groupId>
<artifactId>java-image-scaling</artifactId>
<version>0.8.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.24</version>
</dependency>
用来遍历文件中的dicom文件,同时进行相关操作
import ij.ImageStack;
import ij.plugin.DICOM;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class FileUtil {
public static void main(String[] args) throws Exception {
//已经导入两个工具类、并且导入需要的jar包后,在这里进行测试
allDicom("G:\\hospital数据分析\\xu zhihui\\3 lu huaicheng 110510"); //生成的图片仍在该文件夹中
}
public static void allDicom (String dicomPath)throws Exception {
List<String> fileNames = new ArrayList<String>();
FileUtil.findFileList(new File(dicomPath),fileNames,".dcm");
System.out.println();
for (String value : fileNames) {
create2(value); //找到dicom文件,并生成底片
System.out.println("file:"+value);
}
}
//返回图片地址列表
public static List<String> chooseImage (String dicomPath)throws Exception {
List<String> fileNames = new ArrayList<String>();
findFileList(new File(dicomPath),fileNames,".jpg");
System.out.println()