zoukankan      html  css  js  c++  java
  • ITK Read Dicom

    https://itk.org/ITKExamples/src/IO/GDCM/ReadDICOMSeriesAndWrite3DImage/Documentation.html
    #!/usr/bin/env python
    
    import sys
    import os
    import itk
    import argparse
    
    parser = argparse.ArgumentParser(description="Read DICOM Series And Write 3D Image.")
    parser.add_argument(
        "dicom_directory",
        nargs="?",
        help="If DicomDirectory is not specified, current directory is used",
    )
    parser.add_argument("output_image", nargs="?")
    parser.add_argument("series_name", nargs="?")
    args = parser.parse_args()
    
    # current directory by default
    dirName = "."
    if args.dicom_directory:
        dirName = args.dicom_directory
    
    PixelType = itk.ctype("signed short")
    Dimension = 3
    
    ImageType = itk.Image[PixelType, Dimension]
    
    namesGenerator = itk.GDCMSeriesFileNames.New()
    namesGenerator.SetUseSeriesDetails(True)
    namesGenerator.AddSeriesRestriction("0008|0021")
    namesGenerator.SetGlobalWarningDisplay(False)
    namesGenerator.SetDirectory(dirName)
    
    seriesUID = namesGenerator.GetSeriesUIDs()
    
    if len(seriesUID) < 1:
        print("No DICOMs in: " + dirName)
        sys.exit(1)
    
    print("The directory: " + dirName)
    print("Contains the following DICOM Series: ")
    for uid in seriesUID:
        print(uid)
    
    seriesFound = False
    for uid in seriesUID:
        seriesIdentifier = uid
        if args.series_name:
            seriesIdentifier = args.series_name
            seriesFound = True
        print("Reading: " + seriesIdentifier)
        fileNames = namesGenerator.GetFileNames(seriesIdentifier)
    
        reader = itk.ImageSeriesReader[ImageType].New()
        dicomIO = itk.GDCMImageIO.New()
        reader.SetImageIO(dicomIO)
        reader.SetFileNames(fileNames)
        reader.ForceOrthogonalDirectionOff()
    
        writer = itk.ImageFileWriter[ImageType].New()
        outFileName = os.path.join(dirName, seriesIdentifier + ".nrrd")
        if args.output_image:
            outFileName = args.output_image
        writer.SetFileName(outFileName)
        writer.UseCompressionOn()
        writer.SetInput(reader.GetOutput())
        print("Writing: " + outFileName)
        writer.Update()
    
        if seriesFound:
            break
  • 相关阅读:
    中国剩余定理及其扩展
    扩展欧几里得
    乘法逆元
    58-63用ssh远程连接linux系统
    148复习前一天的内容
    165-168函数
    Linux运维命令总结(-)
    177流程控制经典案例讲解
    170-176流程控制
    161【案例讲解】存储过程
  • 原文地址:https://www.cnblogs.com/imoon22/p/15473186.html
Copyright © 2011-2022 走看看