首先你需要一个神奇的 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文件相关推荐

  1. 211126-Matlab读取mhd文件并转为dcm

    Matlab读取mhd文件并转为dcm,做此记录,后续再进行更改. clc; clear; close all id = fopen('CT_FCN/CT_predicted_3.raw'); img ...

  2. 医学图像处理入门知识 | 格式DICOM,MHD+RAW | 坐标系 | ITK-SNAP | 重采样

    医学图像处理入门知识 引言 常见的医学图像格式 DICOM mhd+raw 坐标系 世界坐标体系 解剖学坐标体系 图像坐标体系 这三个坐标体系有什么关系呢?怎样转换呢? ITK-SNAP工具使用 基本 ...

  3. vs+vtk读取.mhd格式文件出现ERROR:MetaImage cannot read data from file 问题。

    在学习vtk的过程中,读取并显示.mhd格式的过程中,程序运行总是提示以下错误.检查了路径和程序什么的都没有问题. 原因是.mhd文件包含.raw文件,在mhd文件中存储图像头信息,在.raw文件中存 ...

  4. 医学图像处理——数据预处理(.mhd+raw格式图像读取和显示)

    数据预处理(.mhd+raw格式图像读取和显示) 说明: 1.mhd+raw背景 2..mhd说明图像数据的信息 3.Python读取和显示mhd图像数据 3.1python库的安装 3.1代码运行展 ...

  5. DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”

    背景: 本专栏"DICOM医学图像处理"受众较窄,起初只想作为自己学习积累和工作经验的简单整理.前几天无聊浏览了一下,发现阅读量两极化严重,主要集中在"关于BMP(JPG ...

  6. DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”

    背景: 续上篇,继续介绍如何将多幅JPG图像数据存入DCM文件.即将有损压缩数据直接写入DCM文件,存储为Multi-frame形式. 多幅JPG图像数据存入DCM文件: 为了避免引起歧义,这里着重说 ...

  7. DICOM医学图像处理:Dcmtk与fo-dicom保存文件的不同设计模式之“同步VS异步”+“单线程VS多线程”...

    2019独角兽企业重金招聘Python工程师标准>>> 一.背景: 最近一直在做DCM相关的编程工作,以前项目使用C++居多,所以使用DCMTK开源库,而目前团队使用C#居多,所以需 ...

  8. ITK VTK 读取显示mhd文件(c++)

    找了好多博客,也没有找到读取显示mhd文件的教程,然后自己就瞎试试了几次,没想到成了.实现了滑动鼠标显示各层切片. #include <vtkSmartPointer.h> #includ ...

  9. 医学影像中用 python 读取 nrrd 文件、nrrd转nii、nrrd转h5

    用 python 读取 nrrd 文件一般使用 pynrrd 这个库 1 安装pynrrd pip 安装 pip install pynrrd 源码安装 pip install git+https:/ ...

最新文章

  1. shell脚本调试技术
  2. IOS开发笔记16-Object-C中的属性
  3. python二维图颜色函数_Python scipy的二维图像卷积运算与图像模糊处理操作示例
  4. JavaScript错误和异常
  5. Log4j 日志输出学习(Eclipse)
  6. Spark的操作列表
  7. 凸优化第七章统计估计 7.5 实验设计
  8. (转)递归算法的时间复杂度终结篇与Master method
  9. 惯量比多少合适_惯量比折算问题
  10. 2018计算机应用基础作业一,2018计算机应用基础试题及答案
  11. java web 页面布局框架_jsp框架(jsp实现页面框架布局)
  12. CC2652RB1F开发板烧录ZNP的固件
  13. 【新手村专属】服创比赛总结
  14. 2023年四川农业大学农村发展专硕经验贴
  15. Hanoi塔问题图文详解
  16. “科林明伦杯”哈尔滨理工大学暑假训练赛 B吃雪糕 (异或思维题)(补题)
  17. 计算两个时间的间隔时长
  18. QT错误1-error: invalid use of incomplete type ‘class xxx‘
  19. 最终解决:win10小娜无法使用(win10 win+q 无法搜索应用程序)
  20. 【全文翻译】Composite Adversarial Attacks

热门文章

  1. 数据结构(运用线性表实现函数的查找、删改、查询)
  2. 送给有梦想正在奋斗的人,提高自信的15个小方法
  3. Python正则表达式\W+和\W*匹配过程的深入分析
  4. python写的飞船游戏卡顿,Python3+Pygame实现的射击游戏,很流畅,有音效
  5. es5中foreach的用法
  6. 数据挖掘算法一:K近邻原理及python实现
  7. 联想复仇者_复仇者可以向您传授20堂设计课程
  8. XMLSOAP应用简介
  9. MySQL高级-索引(BTree)结构
  10. 学习 Python 的 12 个方式