[疑难杂症2024-003]如何判断一张没有头信息的dcm图像,是否是压缩图像?

本文主要是介绍[疑难杂症2024-003]如何判断一张没有头信息的dcm图像,是否是压缩图像?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文由Markdown语法编辑器编辑完成.

1. 前言:

DCM格式,是医学图像领域里面的通用格式.DCM图像一般分为两大部分,一部分是TAG信息,一部分是像素.

而TAG信息,一般又会分为两部分,如下图所示, 是用dcmtk下面的dcmdump指令,来读图任意一张正常的dcm图像后,展示的tag信息.
可以看到,主要分为两部分:
Dicom-Meta-Information-Header和DICOM-Data-Set.
在这里插入图片描述
DICOM-Meta-Information-Header, 是dicom头,一般是0002开头的Element.
这里面, TransferSyntaxUID, 是用来标识这个图像的传输方式.

以下是对Transfer Syntax UID的一个说明:

来源于: https://www.dicomlibrary.com/dicom/transfer-syntax/Transfer Syntax
A Transfer Syntax is a set of encoding rules able to unambiguously represent one or more Abstract Syntaxes. 
In particular, it allows communicating Application Entities to negotiate common encoding techniques they both support (e.g., byte ordering, compression, etc.).
A Transfer Syntax is an attribute of a Presentation Context, one or more of which are negotiated at the establishment of an Association between DICOM Application Entities.

这里面提到了,它用来标识图像的字节排序,压缩算法,等等。

今天要提到的这个解决方案,就是跟dicom的Trasnfer Syntax UID取值相关的。

从以上的定义,我们可以知道,如果想知道,一张dcm图像,到底是不是压缩图像,我们可以很方便地根据这个tag来识别。
以下是我分别读取一张标准的(非压缩图),和压缩图,读取图像后的区别。

# 读取正常图像
import pydicom
file_1 = "/path/to/normal"
ds1 = pydicom.read_file(file_1)
print(ds1.file_meta.TransferSyntaxUID.is_compressed)file_2 = "/path/to/compress"
ds2 = pydicom.read_file(file2)
print(ds2.file_meta.TransferSyntaxUID.is_compressed)

但是,今天遇到的问题,却是,这个图像没有头信息,所以使用pydicom读取后,没有file_meta, 当然也就没有TransferSyntaxUID. 由于后续的服务,只能在原图上面进行。

因此,我需要做的事情就是,在没有file_meta的情况下,依然能够根据图像是否是压缩图像来解压。

2. 解决方案

经过一系列的调研,dicom的TAG中,还是会有一些,可以帮助我们来推算出图像的压缩类型。
以下列举这些有用的dicom, 以及计算方法:

DICOM TAG含义取值
BitsAllocated
Rows
Columns
SamplePerPixel
FrameOf

未完待续…

这篇关于[疑难杂症2024-003]如何判断一张没有头信息的dcm图像,是否是压缩图像?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/916605

相关文章

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比