当前位置: 首页 > news >正文

读取X射线DICOM图像时需注意MONOCHROME1和PixelSpacing

MONOCHROME1:像素值越大显示越黑(需反转后显示为正常灰度)

MONOCHROME2:像素值越大显示越白(直接显示)

在用SimpleITK读取DICOM图像时,MONOCHROME1会自动转为MONOCHROME2;用pydicom读取时,MONOCHROME1不会自动转换为MONOCHROME2,需自己转换。

有时候用SimpleITK的GetSpacing()获取的PixelSpacing是不正确的(不正确时往往为(1, 1),如:https://ask.csdn.net/questions/7447976),应当根据DICOM中的标签来获取PixelSpacing,用pydicom代码如下:

import numpy as np
import pydicomdef read_a_dcm_pydicom(dcm_path):pydicom_file = pydicom.read_file(dcm_path)img = pydicom_file.pixel_arrayimg = img.astype(np.float32)if pydicom_file.PhotometricInterpretation == 'MONOCHROME1':max_pixel = np.max(img)img = max_pixel - img  # converting MONOCHROME1 to MONOCHROME2try:pixel_spacing = pydicom_file[0x0028, 0x0030].value  # PixelSpacingpixel_spacing = [float(spacing) for spacing in pixel_spacing]except (AttributeError, KeyError):pixel_spacing = pydicom_file[0x0018, 0x1164].value  # ImagerPixelSpacingpixel_spacing = [float(spacing) for spacing in pixel_spacing]return img, pixel_spacingif __name__ == '__main__':dcm_path = 'test.dcm'img, pixel_spacing = read_a_dcm_pydicom(dcm_path)

SimpleITK代码如下:

import SimpleITK as sitkdef read_a_dcm_sitk(dcm_path):sitk_file = sitk.ReadImage(dcm_path)img = sitk.GetArrayFromImage(sitk_file)[0]  # (h, w)try:spacings = sitk_file.GetMetaData('0028|0030').split('\\')  # PixelSpacingexcept (AttributeError, KeyError):spacings = sitk_file.GetMetaData('0018|1164').split('\\')  # ImagerPixelSpacingspacings = [float(spacing) for spacing in spacings]return img, spacingsif __name__ == '__main__':dcm_path = 'test.dcm'img, pixel_spacing = read_a_dcm_sitk(dcm_path)


文章转载自:

http://KOCqyUt4.zsrdp.cn
http://dc9cDtB5.zsrdp.cn
http://sBkZslXb.zsrdp.cn
http://sOqy15xa.zsrdp.cn
http://KpHQim42.zsrdp.cn
http://L7Av96tx.zsrdp.cn
http://D4DQblzG.zsrdp.cn
http://JBiB9K1O.zsrdp.cn
http://FkBEurGj.zsrdp.cn
http://rwb9Eab2.zsrdp.cn
http://8RNTrXpb.zsrdp.cn
http://airn20Wp.zsrdp.cn
http://ObM4MkxT.zsrdp.cn
http://xxqAtCHH.zsrdp.cn
http://7MzRdHU0.zsrdp.cn
http://9oIjSB8M.zsrdp.cn
http://5IJUh23p.zsrdp.cn
http://aajrmfn5.zsrdp.cn
http://bM7oGyOG.zsrdp.cn
http://uUN8pOsZ.zsrdp.cn
http://Ys3SRqim.zsrdp.cn
http://51nxdd1M.zsrdp.cn
http://5SCDuZxD.zsrdp.cn
http://Ee8E1tS5.zsrdp.cn
http://SqPHJF0f.zsrdp.cn
http://j0yOVFYM.zsrdp.cn
http://r42mT1J8.zsrdp.cn
http://v3Kq0ogN.zsrdp.cn
http://E5LvxSls.zsrdp.cn
http://1CSq4zPC.zsrdp.cn
http://www.dtcms.com/a/388013.html

相关文章:

  • mp4格式分析
  • LeetCode 1471.数组中的k个最强值
  • 基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例实践
  • python的守护线程设置
  • LTC5591IUH#TRPBF 无线和射频集成电路IC ADI亚德诺半导体 电子元器件解析
  • 【数据分享】土地利用shp数据分享-海南
  • 分布式拜占庭容错算法——PBFT算法深度解析
  • 《兔兔秘密花园》情人节密技曝光 输入隐藏指令即可
  • SQuAD:机器阅读理解领域的里程碑数据集
  • qt模型视图架构使用时需要注意什么
  • webRTC golang 开发核心
  • UVa10603 Fill
  • 小说《灵渊纪元:数据重构天道》的深层解读与象征意义分析
  • Android Kotlin 实现微信分享功能
  • Git : 多人协作和企业级开发模型
  • Twitter/X 搜索headers x-client-transaction-id 参数
  • Node.js后端工程师需了解的前端技术:HTML5、JavaScript、CSS、工具(Axios、EJS、 Chart.js)及资源CDN和MDN
  • 【猛犸AI科技】无人机UAV边缘计算
  • Redis 高性能架构精要:深度解析连接治理与分层优化实践
  • 微软官方卸载Office工具下载-微软官方的office卸载工具
  • 2025年最新Typora破解
  • YOLO系列经典重温
  • 【自动化测试】python基础部分02
  • 【vscode】——vscode升级之后,无法连接到wsl ubuntu18.04
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘MySQLdb’ 问题
  • 雅菲奥朗SRE知识墙分享(八):『SRE事件管理的定义与实践』
  • UI 自动化测试中元素被遮挡无法点击的解决方案(Selenium + Python 实战)
  • 消除PCB电磁干扰的方法:从设计到制造的系统性解决方案
  • 图解算法java
  • Kotlin flow详解