0
点赞
收藏
分享

微信扫一扫

luna16肺结节信息查看

import SimpleITK as sitk
import matplotlib.pyplot as plt
import numpy as np


def worldToVoxelCoord(worldCoord, origin, spacing,node_size):
    stretchedVoxelCoord = np.absolute(worldCoord - origin)
    voxelCoord = stretchedVoxelCoord // spacing # x,y,z

    radius = (node_size / spacing[0]/2)

    return voxelCoord, radius


if __name__ == '__main__':
    file_path = "D:/download\subset1\subset1/1.3.6.1.4.1.14519.5.2.1.6279.6001.134370886216012873213579659366.mhd"
    image = sitk.ReadImage(file_path)

    ORd = image.GetOrigin()
    print('原点坐标:',ORd)

    SPc = image.GetSpacing()
    print('像素间隔:',SPc) # x,y,z

    # numpy array
    img = sitk.GetArrayFromImage(image)
    print('img.shape:',img.shape)

    # 查annotation.csv
    node_loc = (-61.47472636,-140.3727694,-59.31736202)
    node_size = 9.326384983

    # 得到结节的图像位置
    voxelCoord, radius = worldToVoxelCoord(np.array(node_loc),
                            np.array(ORd),np.array(SPc),node_size)
    print('结节的图像位置:',voxelCoord,'像素半径:',radius)

    x,y,z = int(voxelCoord[0]),int(voxelCoord[1]),int(voxelCoord[2])
    r = np.math.ceil(radius)
    
    # plt作图
    img_node = img[z]
    img_node[y-r,x-r:x+r] = 1000
    img_node[y-r:y+r,x-r] = 1000
    img_node[y+r,x-r:x+r] = 1000
    img_node[y-r:y+r,x+r] = 1000

    plt.imshow(img_node,cmap='gray')
    plt.show()

 

举报

相关推荐

0 条评论