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
  • 相关阅读:
    Codeforces 429 A. Xor-tree
    有趣的游戏:Google XSS Game
    三层架构(一个)——什么是三层架构?
    atitit.ajax bp dwr 3.该票据安排使用的流量汇总 VO9o.....
    深入struts2.0(五)--Dispatcher类
    update与fixedupdate差别
    Android 平台 HTTP网速測试 案例 API 分析
    Matlab画图-非常具体,非常全面
    词性标注
    windows消息钩子
  • 原文地址:https://www.cnblogs.com/imoon22/p/15473186.html
Copyright © 2011-2022 走看看