zoukankan      html  css  js  c++  java
  • SimpleITK 和 Nibabe

    SimpleITK 和 Nibabel 的区别:

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

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

    import SimpleITK as sitk
    from matplotlib import pyplot as plt
    
    def showNii(img):
        for i in range(img.shape[1]):
            plt.imshow(img[i,:,:], cmap="gray")
            plt.show()
    # itk_img = sitk.ReadImage('./Brats18_2013_2_1_flair.nii.gz')
    # img = sitk.GetArrayFromImage(itk_img)
    # print(img.shape)    # (155, 240, 240) 155表示个数,240,240表示图片长度和宽度
    # showNii(img)
    
    itk_img = sitk.ReadImage('./id001-128x128x64.nii.gz')
    img = sitk.GetArrayFromImage(itk_img)
    showNii(img)
    

    3D Plot:

    import scipy.ndimage
    import matplotlib.pyplot as plt
    import numpy as np
    from skimage import measure, morphology
    from mpl_toolkits.mplot3d.art3d import Poly3DCollection
    
    
    def plot_3d(image, threshold=-300):
        
        # Position the scan upright, 
        # so the head of the patient would be at the top facing the camera
        image = image.astype(np.int16)
        p = image.transpose(2,1,0)
    #     p = p[:,:,::-1]
        
        print(p.shape)
        verts, faces, _, x = measure.marching_cubes_lewiner(p, threshold) #marching_cubes_classic measure.marching_cubes
    
        fig = plt.figure(figsize=(10, 10))
        ax = fig.add_subplot(111, projection='3d')
    
        # Fancy indexing: `verts[faces]` to generate a collection of triangles
        mesh = Poly3DCollection(verts[faces], alpha=0.1)
        face_color = [0.5, 0.5, 1]
        mesh.set_facecolor(face_color)
        ax.add_collection3d(mesh)
    
        ax.set_xlim(0, p.shape[0])
        ax.set_ylim(0, p.shape[1])
        ax.set_zlim(0, p.shape[2])
    
        plt.show()
    plot_3d(img, 100)
    

    参考文献:

    1. SimpleITK

  • 相关阅读:
    Linux部署之NFS方式安装系统
    VMware Workstation Pro学习探索(Linux,Docker)
    sqlserver最大内存设置太小导致无法启动sql服务
    Docker下安装Sqlserver(mssql)
    docker错误:net/http: TLS handshake timeout;解决方案
    Linux和Docker常用命令
    Linux及Docker学习记录
    .net core视图预编译
    oracle的一些简单语法
    Oracle安装连接常见错误
  • 原文地址:https://www.cnblogs.com/ylHe/p/12840082.html
Copyright © 2011-2022 走看看