文档章节

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

D大调协奏曲
 D大调协奏曲
发布于 2017/06/29 17:21
字数 233
阅读 129
收藏 1
点赞 1
评论 0
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

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

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

zssureqh ⋅ 2015/11/26 ⋅ 0

DICOM:DICOM标准学习路线图(初稿)

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

zssureqh ⋅ 2015/10/18 ⋅ 0

医疗图像处理软件--OsiriX

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

匿名 ⋅ 2008/12/05 ⋅ 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

DICOM:C-GET服务

背景: 之前博文对比过多次C-MOVE与C-GET服务的区别,两者最大的区别在于C-GET是基于单个TCP连接的点对点的两方服务,而C-MOVE是基于两个TCP连接的三方服务(详情参见:《DICOM:C-GET与C-M...

zssureqh ⋅ 2015/12/16 ⋅ 0

DICOM:fo-dicom、dcm4che14、dcm4chee等开源库持续自我维护

题记: DICOM专栏系列虽然写了多年,但是依然不能解决大家日常中遇到的种种问题,其实这恰恰就是程序员(码农)工作的最大乐趣所在。就像每个人的人生一样,所处的环境不同,所遭遇的事件不同...

zssureqh ⋅ 2016/07/16 ⋅ 0

深度学习下的医学图像分析(四)

雷锋网按:本文由图普科技编译自《Medical Image Analysis with Deep Learning Part4》,是最近发表的《深度学习下的医学图像分析(三)》的后续文章。雷锋网独家首发。 对与深度学习相关的医...

图普科技 ⋅ 2017/07/19 ⋅ 0

DICOM:深入剖析Orthanc的SQLite,了解WADO&RESTful API

背景: 上一篇博文简单翻译了Orthanc官网给出的CodeProject上“利用Orthanc Plugin SDK开发WADO插件”的博文,其中提到了Orthanc从0.8.0版本之后支持快速查询,而原本的WADO请求需要是直接借...

zssure_thu ⋅ 2014/12/11 ⋅ 0

Orthanc 0.5.0 发布,基于REST的DICOM服务器

Orthanc 0.5.0 引入了匿名化处理和 DICOM 文件修改,支持私有 DICOM 标签和 PMSCT_RLE1 图像的解码。 Orthanc 是一个轻量级的,基于REST的DICOM服务器,主要用于卫生保健和医疗研究。...

oschina ⋅ 2013/02/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

Spring JDBC使用方法

普通实现: 1、创建数据表customer。 可以使用任何数据库实现,在项目中要引入相应数据库驱动包并配置相应数据库连接。 2、创建Customer pojo。 Customer类的属性对应数据库的属性,除了为每...

霍淇滨 ⋅ 今天 ⋅ 0

Contos 7 安装Jenkins

Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤 开发 提交 编译 测试 发布 有了Jenkins的帮助,在这5步中,除了第1步,后续的4步都是自动...

欧虞山 ⋅ 今天 ⋅ 0

revel

revel install go get github.com/revel/revelgo get github.com/revel/cmd create new app revel new git.oschina.net/zdglf/myapp run app revel run git.oschina.net/zdglf/myapp ot......

zdglf ⋅ 今天 ⋅ 0

49. Group Anagrams - LeetCode

Question 49. Group Anagrams Solution 思路:维护一个map,key是输入数组中的字符串(根据字符排好序) Java实现: public List<List<String>> groupAnagrams(String[] strs) { Map<Strin......

yysue ⋅ 今天 ⋅ 0

spring Email

使用spring发Email其实就是使用spring自己封装携带的一个javamail.JavaMailSenderImpl类而已。这个类可以当一个普通的java对象来使用,也可以通过把它配置变成spring Bean的方式然后注入使用...

BobwithB ⋅ 今天 ⋅ 0

spark 整理的一些知识

Spark 知识点 请描述spark RDD原理与特征? RDD全称是resilient distributed dataset(具有弹性的分布式数据集)。一个RDD仅仅是一个分布式的元素集合。在Spark中,所有工作都表示为创建新的...

tuoleisi77 ⋅ 今天 ⋅ 0

思考

时间一天天过感觉自己有在成长吗?最怕的是时光匆匆而过,自己没有收获!下面总结下最近自己的思考。 认识自己 认识另一个自己,人们常说要虚心听取别人意见和建议。然而人往往是很难做到的,...

hello_hp ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部