Dicom的多帧转单帧(BTO2CTO)【JAVA】

如何将Dicom系列转换为一个Nifti文件(Python) 简介 在医学成像中,我们通常使用两种类型的图像,Dicom或Nifti。但这两种类型的图像(或者说文件)之间是有区别的,因为它们比普通图像有更多的信息。这些信息存储在同一个文件中,Dicom 或是Nifti,我们可以使用称为标签的东西来调用它们,因此我们使用这些标签来返回我们想要的信息,例如患者 ID、姓名等。从这些信息中有一个名为pixel_data 数组的组件,它是一个包含我们可以可视化的像素值的数组,像素的尺寸(以防你想计算身体某个部分的面积,例如,肿瘤),像素的深度… Dicom图像(或文件)是一个 阅读详情

目的:将一张多帧的dicom图像转成N张单帧的dicom图像。
测试的Dicom(BTO)可以看到有里面共有62帧。在这里插入图片描述
传输语法也可以看到是1.2.840.10008.1.2.4.70,即代表是JPEG Lossless(JPEG无损压缩),可以从dcm4che-core-5.12中的UID.class中知道
在这里插入图片描述
在这里插入图片描述
正式开始了…
maven 主要引用

<dependency>
    <groupId>org.dcm4che.tool</groupId>
    <artifactId>dcm4che-tool-emf2sf</artifactId>
    <version>5.12.0</version>
</dependency>

这个jar包里面有一段函数是这样的

Emf2sf.java
 public static void main(String[] args) {
        try {
            CommandLine cl = parseComandLine(args);
            Emf2sf main = new Emf2sf();
            if (cl.hasOption("frame"))
                main.setFrames(toFrames(cl.getOptionValues("frame")));
            main.setPreserveSeriesInstanceUID(cl.hasOption("not-chseries"));
            main.setOutputDirectory(new File(cl.getOptionValue("out-dir", ".")));
            if (cl.hasOption("out-file"))
                main.setOutputFileFormat(cl.getOptionValue("out-file"));
            long start = System.currentTimeMillis();
            int n = main.extract(new File(fname(cl.getArgList())));
            long end = System.currentTimeMillis();
            System.out.println();
            System.out.println(
                    MessageFormat.format(rb.getString("extracted"), n,
                            (end - start) / 1000f));
       } catch (ParseException e) {
            System.err.println("emf2sf: " + e.getMessage());
            System.err.println(rb.getString("try"));
            System.exit(2);
        } catch (Exception e) {
            System.err.println("emf2sf: " + e.getMessage());
            e.printStackTrace();
            System.exit(2);
        }
    }

这里有个main函数:而这里有个String[] args 参数;
这个参数的用法如下:

    usage: emf2sf [<options>] <dicom-file>
    
    The emf2sf utility converts a DICOM Enhanced CT, MR or PET Multi-frame
    image to legacy DICOM Single-frame CT, MR, PET images.
    -
    Options:
     -f,--frame <no[,..]>       comma separated numbers of frames to convert;
                                convert all frames by default
     -h,--help                  display this help and exit
        --inst-no <format>      specifies instance number in created
                                Single-frame images as printf pattern. First %
                                will be replaced by the instance number of the
                                Enhanced Multi-frame image, second % by the
                                frame number (default: '%s%04d')
        --not-chseries          do not change Series Instance UID in created
                                Single-frame images
        --out-dir <directory>   directory to which extracted frames are stored
                                in DICOM files with file names specified by
                                option --out-file (default: '.')
        --out-file <name>       name of DICOM files of converted legacy DICOM
                                Single-frame images written to the directory
                                specified by out-dir. Zeros will be replaced
                                by the frame number (default:
                                <dicom-file>-000.dcm)
     -V,--version               output version information and exit
    Example:
    $ emf2sf -f 1,20,120 --out-file ct-000.dcm ct-emf.dcm
    Extract frame 1, 20 and 120 from Enhanced CT Multi-frame image ct-emf.dcm
    to legacy DICOM Single-frame CT images ct-001.dcm, ct-020.dcm and
    ct-120.dcm.

这里我在调用时候

String[] args= new String[] { "--out-dir", //启用自定义目录的参数
		        outFloder.getAbsolutePath(), //转换后的目录(文件夹目录)
		        dcm.getAbsolutePath() //待转换文件(BTO的全路径)
		};

这时候生成的62张dicom的单帧传输语法也是1.2.840.10008.1.2.4.70。
在这里插入图片描述
而经过解压后的文件大小约4412k。下篇文章将如果将压缩过得dicom解压。
我把我测试的bto上传,仅技术交流,请不要用于商业宣传,违者必究!谢谢合作!

单个dcm文件含有多帧数据,如何拆分成多个dcm文件 最近研究了题目中的问题: bool Parse2Dcms(std::string infilePath, std::string output_path) { if (!this->filepath.length()) { cout << "No No parent dcm filepath! error" << endl; return false; } DcmFileFormat fileformat; OFCondition oc = fi 阅读详情

相关推荐

13. DICOM图像显示-DCMTK-处理多帧图像

本篇文章介绍如何基于dcmtk实现Radiant软件多帧图像显示和动态播放。   一般US和DSA图像较常见多帧图像 应用层代码 //为节省内存,通过fcount设置多帧图像一次处理的帧数量 dicomImg = new DicomImage(dcmParse->GetDataSet(), EXS_LittleEndianExplicit, CIF_UsePartialAccessToPixelData, 0, 10); //获得一次处理的帧数量,10 int frames = dicomImg

tianma2012的博客 2542

DICOM DCM4CHE影像压缩结果对比

这里我对一张514kb的影像进行了压缩,使用各种压缩方式结果如下: 如果是无损压缩的话,当然JPEG2000LosslessOnly压缩比高且不失真,但有些如J2K系统并不支持。 虽然1.2.840.10008.1.2.4.70(JPEGLossless)比1.2.840.10008.1.2.4.90(JPEG2000LosslessOnly)压缩率低一点,但支持更广泛。 压缩方式选择可...

杨不休 1417

DICOM图像c++打开程序

基于mfc打开dicom,显示姓名医院,并且可以调整窗宽窗位

DICOM转JPG

错误:javax.imageio.IIOException: Unsupported JPEG process: SOF type 0xc3 错误背景:使用jdk64位、dcm4che-5.11.0版本生成jpg图片,发现dcm传输语义为1.2.840.10008.1.2.4.70(无损压缩格式)就会抛异常,其他显隐式正常; 解决问题历程: 1.网友说需要在 window环境中安装了32位的...

澜梓的博客 2086

从临床试验到互联网AB测试:边缘结构模型(MSM)如何解决‘时依性混杂’这个老大难问题

本文探讨边缘结构模型(MSM)如何解决时依性混杂问题,适用于临床试验和互联网AB测试。通过逆概率加权(IPTW)等方法,MSM能有效剥离混杂效应,准确评估长期干预效果。文章结合跨领域案例,详细解析MSM的核心原理、实施步骤及在推荐算法效果评估中的实战应用,帮助读者掌握这一先进因果推断工具。

weixin_28725949的博客 207

别再只用三次多项式了!用MATLAB手把手教你搞定七次多项式轨迹规划(附完整代码)

本文详细介绍了七次多项式在轨迹规划中的优势与应用,通过MATLAB实现从理论推导到实际代码的全过程。相比传统的三次多项式,七次多项式能精确控制位置、速度、加速度和加加速度,实现更平滑的运动控制,特别适用于工业机器人和数控机床等高精度场景。文章包含完整的MATLAB代码示例和优化技巧,帮助工程师快速掌握这一高级轨迹规划方法。

weixin_30872337的博客 298

《itk实用demo》-多帧DCM转序列图像

多帧DCM转序列图像 #include &quot;itkGDCMImageIO.h&quot; #include &quot;itkNumericSeriesFileNames.h&quot; #include &quot;itkImageFileReader.h&quot; #include &quot;itkImageSeriesWriter.h&quot; #include &quot;itkMetaDataObjec

就这样吧 1215

SAP FI实战入门:从借贷法则到F-02记账,新手必懂的会计凭证操作

本文详细介绍了SAP FI模块中借贷记账法的核心逻辑及F-02凭证录入的全流程操作。通过实例解析借贷方向规则、科目编码设置及金额镜像原则,帮助新手快速掌握会计凭证操作技巧。同时提供了FS10N余额查询和常见错误排查方法,助力用户高效完成SAP财务记账任务。

weixin_29306571的博客 263

DCM4CHE解压缩的DICOM文件

概要 上一篇博客 DCM4CHE图像显示 是针对未压缩的dicom文件的显示处理,那对于压缩的dicom文件该怎样处理呢? 本文就介绍带压缩协议的dicom文件处理。 一.查看dicom的压缩协议 (也可以通过第三方dicom查看软件查看,tag:0020,0010) DicomInputStream dis = new DicomInputStream(new File("D:/dico...

lemin_zhao的博客 3085

ROS 入门教程:小乌龟仿真器和基础操作

小乌龟仿真器和ros基础操作

zlflll的博客 4127

别再手动改颜色了!用这个Word宏,一键搞定Zotero参考文献超链接的蓝色样式

本文介绍如何利用Word宏一键修改Zotero参考文献的超链接颜色,解决手动调整的繁琐问题。通过详细的VBA代码解析和高级定制方案,帮助科研人员快速实现文献引用的自动化格式优化,提升论文排版效率。特别适合需要批量处理APA等标准格式蓝色超链接的用户。

weixin_30875157的博客 515

dicom文件的传输语法讲解

dicom文件的传输语法讲解Dicom全称是医学数字图像与通讯,这里讲diocm格式文件的解读,读取本身是没啥难度的 无非就是字节码数据流处理。只不过确实比较繁琐。 dicom中文协议文档:http://download.youkuaiyun.com/download/wenzhi20102321/9897014 dicom文件结构: 整体结构先是128字节所谓的导言部分,跳过就是了,接着就是四个字节组成

wenzhi的博客 1万+

27、超声成像技术与原理全面解析

本博客全面解析了超声成像技术与原理,涵盖声学材料特性、超声成像系统的基本概念与组成、关键技术如多普勒和聚焦技术、超声换能器的设计与原理、图像处理方法、系统校准与质量控制,以及超声成像的应用领域和发展趋势。旨在为医学诊断、工业检测和海洋声学等领域的研究人员和工程师提供深入的技术参考和指导。

z2a3b4c5d的博客 495

DICOM DCM4CHE影像压缩

一个刚跨入医疗行业的程序猿,分享一些自己在研究医疗影像,RIS,HIS走过的坑...

不会吉他的肌肉男不是好的挨踢男的专栏 2926

利用SIMULINK搭建一个16QAM调制解调收发系统

1发送模块设计 根据前面介绍的理论知识,我们可以知道16QAM的基本结构,首先我来设计QAM发送段的SIMULINK仿真模块。 图1 16QAM的发送端模块 他的基本工作流程为:将信号通过两路升余弦滤波器,得到滤波以后的信号,滤波器的作用就是为了防止码间干扰。然后将滤波以后的信号和SIN,COS相乘得到调制信号,将调制 下面一一介绍每个模块的具体参数设置以及各个部分信号的波形图。 图2 产生随机数据的信号源 第一部分信号是产生一组随机的数字,作为信源,第二个模块将信号...

FPGA/MATLAB学习教程/源码/项目合作开发 4776

EMS案例:BMS传导发射超标整改案例

BMS作为新能源汽车的关键部件,其EMC性能直接影响整车的安全性和可靠性。本文通过一个实际的传导发射整改案例,详细展示了从问题定位、分析到解决方案实施的全过程。希望这些经验能够为从事类似产品设计的工程师提供有价值的参考,在未来的产品开发中避免类似问题,设计出更加可靠、稳定的BMS产品。EMC设计是一门结合理论与实践的艺术,只有通过不断积累经验、深入理解电磁场理论,并紧密结合实际应用场景,才能在复杂的电磁环境中设计出鲁棒性强的电子产品。

m0_56451176的博客 272

通过cornerstone解析多帧dicom图像

cornerstone

weixin_67193048的博客 1622

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

小程序影藏溢出的gif_如何将图像转换为GIF的实用指南

现在很流行将各种图像格式转换为GIF表情包。这是因为GIF文件可以将多个图像的集合汇总为一个可播放的文件。更重要的是,与典型的静态照片不同,GIF非常有趣。幸运的是,有了正确的资源,您可以轻松地将图像转换为GIF 。但是遗憾的是,找到合适的 GIF转换器图像绝非易事。出于这个原因,我们准备了此实用指南,可帮助您将任何图像格式转换为GIF格式。第1部分.在Windows和Mac系统上将图像转换为GI...

weixin_40009063的博客 267

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

dcmtk多帧影像转单帧

目前还有问题,待以后修复。

fanhenghui的专栏 217

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

dicom多帧转换_如何提取/查看多帧DICOM文件的所有帧?

I know I can view a dicom file using following code:import dicomfrom dicom.contrib.pydicom_PIL import show_PILf = "CT-MONO2-8-abdo.dcm"ds = dicom.read_file(f, force=True)show_PIL(ds)However, how can I...

weixin_39622901的博客 413

DICOM 文件中,VR,VL,SQ,图像二进制的几个注意点

Dicom Sequence 编码 二进制区 文件的编码

rendawei636专注医疗软件 2135

Java中Object类的常用方法以及作用

Java中Object类的常用方法 方法名称 返回类型 getclass() 获取类的class对象 Class<?> hashCode() 获取对象的hashCode值 int equals(Object) 比较对象是否相等,比较的是值和地址,子类可重写以自定义 boolean clone() 创建并返回此对象的克隆对象,一般子类会重写这个方法 protected Object toString() 返回对象的字符串表示形式 String not

tx3666423的博客 471

多帧Dcm图片的读取与拆分存储

1. 概述 在项目中为了保留对之前代码的兼容和加上新功能,需要将多帧的Dcm图像转换为单帧的Dcm图像,近期对其进行了实践。本篇文章中将实现的代码予以分享,不妥之处请见谅。多帧图像 2. 实现代码 之前有两篇博客分别讲了DCMTK在vs上配置过程和读取Dcm图的实现,感兴趣的读者可以看看之前的文章。 //*****************************************

m_buddy的博客 9566

dcm4che java_java使用dcm4che3 api解析dicom文件

images = new LinkedList();study = new Study();s = new Series();obj = new DicomObj();image = new Image();file = new File(fileList.get(i)); //System.out.println(fileList.get(i)); DisplayTag d = new Disp...

weixin_28728031的博客 768

DCM4CHE处理多帧图像

概要 dicom医疗影像图像有单帧和多帧的分别,一般来说普通CT CR图像都是单帧的(也有多帧的情况),一般DXA和US图形是多帧的,今天我们就主要介绍一下多帧图像的处理 准备工作 准备一个多帧图像的dicom 查看这个dicom的压缩协议,如果是带压缩协议的dicom需要解压缩,具体的参见我的博客DCM4CHE解压缩的DICOM文件 大概思路 单帧dicom是把一幅...

lemin_zhao的博客 3671
上一篇: 不允许从数据类型 varbinary 到 date 的隐式转换。请使用 CONVERT 函数来运行此查询
下一篇: DICOM Standard Browser
冰雨荥雾1314
博客等级 码龄10年 22粉丝 33原创
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值