python医学图像读取_python使用SimpleITK 和 Nibabel 读取医学图像 nii 数据并保存为图片...

本文介绍了如何使用Python的SimpleITK和Nibabel库读取医学图像NIFTI文件。SimpleITK加载数据是channel_first,而Nibabel则是channel_last,但Nibabel加载的图像可能会旋转90度。文章提供了示例代码,展示了读取、显示图像及将.nii文件转换为.png图像的过程,适用于处理如ADNI数据集的nii格式文件。
摘要由CSDN通过智能技术生成

SimpleITK 和 Nibabel 的区别:

SimpleITK 加载数据是channel_first,即(155,240,240);

Nibabel 是 channel_last,即(240,240,155),其中155是图像通道数,也就是155张图像,可以把nii看成二维图像,也可以看成三维。

But  nibabel加载出来的图像被旋转了90度,横过来了,不知道什么原因~亟待解决~

SimpleITK

import SimpleITK as sitk

import skimage.io as io

def read_img(path):

img = sitk.ReadImage(path)

data = sitk.GetArrayFromImage(img)

return data

#显示一个系列图

def show_img(data):

for i in range(data.shape[0]):

io.imshow(data[i,:,:], cmap = 'gray')

print(i)

io.show()

#单张显示

def show_img(ori_img):

io.imshow(ori_img[60], cmap = 'gray')

io.show()

path = 'F:/my_data/t1ce.nii.gz' #数据所在路径

data = read_img(path)

show_

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是可以用于读取nii.gz医学图像数据并进行3D数据展示的Python代码。需要安装vtk、simpleITK和pyqt5库。 ``` import vtk import SimpleITK as sitk from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class vtkWindow(QMainWindow): def __init__(self, parent=None): super(vtkWindow, self).__init__(parent) self.renderer = vtk.vtkRenderer() self.renWin = vtk.vtkRenderWindow() self.renWin.AddRenderer(self.renderer) self.iren = vtk.vtkRenderWindowInteractor() self.iren.SetRenderWindow(self.renWin) self.viewWidget = QVTKRenderWindowInteractor() self.vtkLayout = QHBoxLayout(self.viewWidget) self.vtkLayout.addWidget(self.iren) self.setCentralWidget(self.viewWidget) def show(self, *args, **kwargs): super(vtkWindow, self).show(*args, **kwargs) self.iren.Initialize() self.renWin.Render() def set_image(self, sitk_image): image_data = sitk.GetArrayFromImage(sitk_image) z, y, x = image_data.shape imageData = vtk.vtkImageData() imageData.SetDimensions(x, y, z) imageData.AllocateScalars(vtk.VTK_UNSIGNED_CHAR, 1) for i in range(z): for j in range(y): for k in range(x): imageData.SetScalarComponentFromDouble(k, j, i, 0, image_data[i][j][k]) image_actor = vtk.vtkImageActor() image_actor.SetInputData(imageData) self.renderer.AddActor(image_actor) self.renderer.ResetCamera() self.renWin.Render() if __name__ == "__main__": app = QApplication([]) vtk_win = vtkWindow() itk_image = sitk.ReadImage("path/to/nifti.gz") vtk_win.set_image(itk_image) vtk_win.show() app.exec_() ``` 这里主要用到了`vtkWindow`类,该类负责创建VTK窗口,并同时与pyqt5窗口进行交互。`set_image`函数用于将simpleITK图像导入到VTK窗口中进行显示,主要调用了VTK中的`vtkImageActor`类将simpleITK中的图像转换为VTK图像进行显示。```vtkWindow```继承QMainWindow可以在其他需要显示场景窗口的位置嵌入vtk进去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值