医学图像处理:读取mhd文件
首先你需要一个神奇的 Toolbox:medical-image-processing-toolbox
然后只需要一行代码:
mhd = read_mhd('data.mhd');
就阔以读到 mhd 文件的数据啦
要特别注意一点,如果原数据读出来是 Double
类型的且矩阵内元素值不在 0 ~ 1 这个范围内,则不可以直接转换为 uint8
类型,解决方法是先将矩阵元素归一化到 0 ~ 1 之间,再转换:
mask = im2uint8(mhd.data(:,:,1) / 255);
imwrite(mask, 'image.png');
解释一下原因
double
(双精度浮点)类型在 matlab 中一般用于完成复杂的运算,它是为了保持运算精度而生的,double 类型的像素值范围在 0 ~ 1
;
uint8
(8位无符号整数)类型在 matlab 中一般用于存储图像,它是为了节省存储空间而生的,uint8 类型的像素值范围在 `0 ~ 255。
在读入图像时,发现是 uint8,而要对其进行运算时,需要先将图像转换为 double 类型:
img = imread('demo.jpg'); % 读入unit8类型(0~255)数据
I1 = im2double(img); % 把图像转换为double类型(0~1)
I2 = double(img)/255; % uint8转换成double,作用同im2double
im2double( )和double( )的区别。double( img)就是简单的数据类型转换,将无符号整型转换为双精度浮点型double,但是数据大小没有变化,原本数据是0255之间,转化后还是0255。例如原来是255,那么转换后为255.0,小数位0个数是由double数据长度决定,实际数据大小还是255,只不过这个255已经是double类型空间存储了,再增加不会发生溢出情况。而im2double(img)则不仅仅是将uint8转换到double类型,而且把数据大小从0255映射到01区间。
参考:
https://blog.csdn.net/kakiebu/article/details/78959249
https://blog.csdn.net/SMF0504/article/details/72899725
医学图像处理:读取mhd文件相关推荐
- 211126-Matlab读取mhd文件并转为dcm
Matlab读取mhd文件并转为dcm,做此记录,后续再进行更改. clc; clear; close all id = fopen('CT_FCN/CT_predicted_3.raw'); img ...
- 医学图像处理入门知识 | 格式DICOM,MHD+RAW | 坐标系 | ITK-SNAP | 重采样
医学图像处理入门知识 引言 常见的医学图像格式 DICOM mhd+raw 坐标系 世界坐标体系 解剖学坐标体系 图像坐标体系 这三个坐标体系有什么关系呢?怎样转换呢? ITK-SNAP工具使用 基本 ...
- vs+vtk读取.mhd格式文件出现ERROR:MetaImage cannot read data from file 问题。
在学习vtk的过程中,读取并显示.mhd格式的过程中,程序运行总是提示以下错误.检查了路径和程序什么的都没有问题. 原因是.mhd文件包含.raw文件,在mhd文件中存储图像头信息,在.raw文件中存 ...
- 医学图像处理——数据预处理(.mhd+raw格式图像读取和显示)
数据预处理(.mhd+raw格式图像读取和显示) 说明: 1.mhd+raw背景 2..mhd说明图像数据的信息 3.Python读取和显示mhd图像数据 3.1python库的安装 3.1代码运行展 ...
- DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”
背景: 本专栏"DICOM医学图像处理"受众较窄,起初只想作为自己学习积累和工作经验的简单整理.前几天无聊浏览了一下,发现阅读量两极化严重,主要集中在"关于BMP(JPG ...
- DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”
背景: 续上篇,继续介绍如何将多幅JPG图像数据存入DCM文件.即将有损压缩数据直接写入DCM文件,存储为Multi-frame形式. 多幅JPG图像数据存入DCM文件: 为了避免引起歧义,这里着重说 ...
- DICOM医学图像处理:Dcmtk与fo-dicom保存文件的不同设计模式之“同步VS异步”+“单线程VS多线程”...
2019独角兽企业重金招聘Python工程师标准>>> 一.背景: 最近一直在做DCM相关的编程工作,以前项目使用C++居多,所以使用DCMTK开源库,而目前团队使用C#居多,所以需 ...
- ITK VTK 读取显示mhd文件(c++)
找了好多博客,也没有找到读取显示mhd文件的教程,然后自己就瞎试试了几次,没想到成了.实现了滑动鼠标显示各层切片. #include <vtkSmartPointer.h> #includ ...
- 医学影像中用 python 读取 nrrd 文件、nrrd转nii、nrrd转h5
用 python 读取 nrrd 文件一般使用 pynrrd 这个库 1 安装pynrrd pip 安装 pip install pynrrd 源码安装 pip install git+https:/ ...
最新文章
- shell脚本调试技术
- IOS开发笔记16-Object-C中的属性
- python二维图颜色函数_Python scipy的二维图像卷积运算与图像模糊处理操作示例
- JavaScript错误和异常
- Log4j 日志输出学习(Eclipse)
- Spark的操作列表
- 凸优化第七章统计估计 7.5 实验设计
- (转)递归算法的时间复杂度终结篇与Master method
- 惯量比多少合适_惯量比折算问题
- 2018计算机应用基础作业一,2018计算机应用基础试题及答案
- java web 页面布局框架_jsp框架(jsp实现页面框架布局)
- CC2652RB1F开发板烧录ZNP的固件
- 【新手村专属】服创比赛总结
- 2023年四川农业大学农村发展专硕经验贴
- Hanoi塔问题图文详解
- “科林明伦杯”哈尔滨理工大学暑假训练赛 B吃雪糕 (异或思维题)(补题)
- 计算两个时间的间隔时长
- QT错误1-error: invalid use of incomplete type ‘class xxx‘
- 最终解决:win10小娜无法使用(win10 win+q 无法搜索应用程序)
- 【全文翻译】Composite Adversarial Attacks