ITK笔记——读取单个DICOM切片

什么是DICOM

DICOM(Digital imaging and Communication in Medicine),医学数字成像与通信,它是一个国际标准(ISO 12052),由美国放射学院(ACR)和国家电气制造协会(NEMA)在1970年代共同制定,旨在统一格式,解决医学图像的处理、存储、打印以及传输。

GDCM

GDCM(Grassroots DICOM),开源库,DICOM标准的一种实现。ITK的DICOM设施,就是由它提供的。对应itk::GDCMImageIO类名。

读取单个DICOM数据

定义数据类型

	using InputPixelType = signed short;
	constexpr unsigned int InputDimension = 2;

	using InputImageType = itk::Image< InputPixelType, InputDimension >;

初始化GDCM接口

	using ImageIOType = itk::GDCMImageIO;
	ImageIOType::Pointer gdcmImageIO = ImageIOType::New();

设置ImageFileReader

	using ReaderType = itk::ImageFileReader< InputImageType >;
	ReaderType::Pointer reader = ReaderType::New();
	reader->SetFileName(argv[1]);
	reader->SetImageIO(gdcmImageIO);

触发读取

	reader->Update();

VTK渲染

	QuickView viewer;
	viewer.AddImage(reader->GetOutput());
	viewer.Visualize();

在这里插入图片描述

ReadDICOMImage.cxx

#include "itkImageFileReader.h"
#include "itkGDCMImageIO.h"

#include "QuickView.h"

int main(int argc, char *argv[])
{
	if (argc < 2)
	{
		std::cerr << "Usage: " << argv[0] << " DicomImage" << std::endl;
		return EXIT_FAILURE;
	}

	using InputPixelType = signed short;
	constexpr unsigned int InputDimension = 2;

	using InputImageType = itk::Image< InputPixelType, InputDimension >;

	using ImageIOType = itk::GDCMImageIO;
	ImageIOType::Pointer gdcmImageIO = ImageIOType::New();

	using ReaderType = itk::ImageFileReader< InputImageType >;
	ReaderType::Pointer reader = ReaderType::New();
	reader->SetFileName(argv[1]);
	reader->SetImageIO(gdcmImageIO);

	try
	{
		reader->Update();
	}
	catch ( itk::ExceptionObject &ex)
	{
		std::cerr << "exception in file reader " << std::endl;
		std::cerr << ex << std::endl;
		return EXIT_FAILURE;
	}

	QuickView viewer;
	viewer.AddImage(reader->GetOutput());
	viewer.Visualize();

	return EXIT_SUCCESS;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
 
project(ReadDICOMImage)
 
find_package(ITK REQUIRED)
include(${ITK_USE_FILE})
if (ITKVtkGlue_LOADED)
  find_package(VTK REQUIRED)
  include(${VTK_USE_FILE})
else()
  find_package(ItkVtkGlue REQUIRED)
  include(${ItkVtkGlue_USE_FILE})
  set(Glue ItkVtkGlue)
endif()
 
add_executable(ReadDICOMImage MACOSX_BUNDLE ReadDICOMImage.cxx)
target_link_libraries(ReadDICOMImage
  ${Glue}  ${VTK_LIBRARIES} ${ITK_LIBRARIES})

Example Download

Ref

Examples/IO/DicomImageReadWrite.cxx

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值