文档章节

基于dcm4che3的DICOM文件的读取操作

D大调协奏曲
 D大调协奏曲
发布于 2017/06/29 17:21
字数 233
阅读 150
收藏 1
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import org.dcm4che3.data.Attributes;
import org.dcm4che3.data.DatasetWithFMI;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.VR;
import org.dcm4che3.io.DicomInputStream;
import org.dcm4che3.io.DicomOutputStream;

public class DicomUtil {
	private DicomInputStream dis = null;

	private DatasetWithFMI datasetWithFMI = null;

	private Attributes data = null;

	private Attributes fmi = null;

	public DicomUtil(InputStream is) {
		super();
		try {
			dis = new DicomInputStream(is);
			datasetWithFMI = dis.readDatasetWithFMI();
			data = datasetWithFMI.getDataset();
			fmi = datasetWithFMI.getFileMetaInformation();
			dis.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public String getValueByTag(int tag) {
		String value = "";
		if (data != null) {
			value = data.getString(tag);
		}
		return value;
	}

	public void setValueByTag(int tag, VR vr,String s) {
		data.setString(tag, vr, s);
	}

	public void save(String path) {
		try {
			File file = new File(path);
			DicomOutputStream dos = new DicomOutputStream(file);
			dos.writeDataset(fmi, data);
			dos.finish();
			dos.flush();
			dos.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		File dicom = new File("C:\\Users\\zy\\Desktop\\ylzInfo\\0602_000004_3");
		InputStream fis;
		try {
			fis = new FileInputStream(dicom);
			DicomUtil dicomUtil = new DicomUtil(fis);

			 dicomUtil.setValueByTag(Tag.Modality,VR.CS ,"*****");
			 dicomUtil.setValueByTag(Tag.StudyDate,VR.DA, "***");
			 dicomUtil.setValueByTag(Tag.PatientName, VR.PN, "病人1");
			 dicomUtil.setValueByTag(Tag.PatientID, VR.LO, "病人ID");
			 
			// fis = new FileInputStream(dicom);
			// String value1 = dicomUtil.getValueByTag(Tag.Modality);

			// String value = dicomUtil.getValueByTag(Tag.StudyDate);

			 System.out.println(dicomUtil.getValueByTag(Tag.PatientName));
			// System.out.println("value1="+value1);

			 //dicomUtil.save("C:\\Users\\zy\\Desktop\\ylzInfo\\0602_000004_3");

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

 

© 著作权归作者所有

共有 人打赏支持
D大调协奏曲
粉丝 1
博文 11
码字总数 6895
作品 0
广州
程序员
DICOM:DICOM3.0网络通信协议(三)

背景: 专栏对于DICOM网络传输介绍过多次,例如DICOM:DICOM3.0网络通信协议(续)、DICOM医学图像处理:DICOM网络传输、DICOM医学图像处理:全面分析DICOM3.0标准中的通讯服务模块。此次通过...

zssureqh
2015/11/23
0
0
DICOM:DICOM3.0网络通信协议之“开源库实现剖析”

背景: 日前,通过对比fo-dicom与dcm4che两种开源库(也是C#与Java两大语言体系)的不同实现来实战学习了DICOM的网络传输,博文中列举了两大开源库各自的实现特点,以及使用的语言特性。本篇...

zssureqh
2015/11/26
0
0
DICOM:DICOM标准学习路线图(初稿)

题记: DICOM医学图像处理专栏撰写已有两个年头,积累了近百篇文章。起初只是用于记录自己科研、工作中遇到的疑难问题,专注于图像处理(主要是医学图像,这也正是专栏名称最初的由来);后来...

zssureqh
2015/10/18
0
0
医疗图像处理软件--OsiriX

OsiriX是一款医疗图像处理软件。主要用于医疗方面,可以把CT(计算机断层扫描)和MRI(核磁共振)的数据加以整合而生成3D的图像,可以旋转,透视甚至是动画等各种操作。只支持苹果操作系统。...

匿名
2008/12/05
16.6K
1
DICOM:最新标准梳理之DICOM Web Service,WADO-URI/WADO-WS/WADO-RS

目录: 0.背景 1.DICOM3.0标准概要 2.DICOM3.0 PS18 Web Service 2.1.WADO-URI 2.2.WADO-WS 2.3.WADO-RS 3.总结 背景: DICOM标准委员会每年大约处理10个左右标准功能内容方面的增补(supplem...

zssureqh
2016/10/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之 明确责任 观察者模式 状态模式 责任链模式

观察者模式是任务分发的一种模式。 如果认为我们设计的系统的各个模块(或子系统)的最终目的是完成共同任务,那么这个任务如何分配到多个模块的就是我们遇到的第一个问题。简单设计场合我们...

backbye
17分钟前
2
0
14-利用思维导图梳理JavaSE-大汇总

14-利用思维导图梳理JavaSE-Java基础知识大汇总 主要内容 1.对象入门 2.一切都是对象 3.程序流程控制 4.初始化和消除 5.权限访问控制 6.复用类 7.多态 8.接口与抽象类 9.内部类 10.容器 11.异...

飞鱼说编程
52分钟前
5
0
利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired

大家平时使用spring依赖注入,都是怎么写的? @Servicepublic class OrderService { @Autowired private UserService userService;} 是不是很熟悉的感觉?但是呢 如果你用...

HeyS1
59分钟前
25
0
IBATIS 写BLOB字段遇到的问题

1、 首先遇到的配置问题,通过设置typeHandler 来支持写入。接下来由此引出了事务的问题。 <typeHandler jdbcType="BLOB" javaType="[B" callback="org.springframework.orm.ibatis.support....

echo-neo
今天
1
0
37. Sudoku Solver

Description tags: backtrack,hash table difficulty: hard Write a program to solve a Sudoku puzzle by filling the empty cells.A sudoku solution must satisfy all of the following......

52iSilence7
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部