ITK imageSeriesReader не может читать серии dicom

У меня есть некоторые проблемы при использовании ITK для чтения серии изображений DICOM.
Пожалуйста, посмотрите на код, который перехвачен из примеров itk.

http://www.itk.org/Doxygen47/html/Examples_2IO_2DicomSeriesReadSeriesWrite_8cxx-example.html

#include "itkGDCMImageIO.h"#include "itkGDCMSeriesFileNames.h"#include "itkImageSeriesReader.h"#include "itkImageSeriesWriter.h"#include <vector>
#include "itksys/SystemTools.hxx"
int main(  )
{

typedef int    PixelType;
const unsigned int      Dimension = 2;

typedef itk::Image< PixelType, Dimension >      ImageType;
typedef itk::ImageSeriesReader< ImageType >     ReaderType;

typedef itk::GDCMImageIO                        ImageIOType;
typedef itk::GDCMSeriesFileNames                NamesGeneratorType;

ImageIOType::Pointer gdcmIO = ImageIOType::New();
NamesGeneratorType::Pointer namesGenerator = NamesGeneratorType::New();
namesGenerator->SetInputDirectory("/home/co/imageData/DicomTestImages");const ReaderType::FileNamesContainer & filenames = namesGenerator->GetInputFileNames();
unsigned int numberOfFilenames =  filenames.size();
std::cout << numberOfFilenames << std::endl;
for(unsigned int fni = 0; fni<numberOfFilenames; fni++)
{
std::cout << "filename # " << fni << " = ";
std::cout << filenames[fni] << std::endl;
}ReaderType::Pointer reader = ReaderType::New();
reader->SetImageIO( gdcmIO );
reader->SetFileNames( filenames );

reader->Update();

return 0;
}

Программа может правильно выводить названия серий dicom.

Но при выполнении reader-> Update () он говорит:

terminate called after throwing an instanceof'itk::ExceptionObject'what():
/usr/local/include/ITK4.7/itkImageSeriesReader.hxx:371:
itk::ERROR: ImageSeriesReader(0x99a9af8): Size mismatch! The size of  /home/co/imageData/DicomTestImages/MRI.000 is [256, 256] and does not match the required size [256, 1].

Почему требуемый размер изображения должен быть [256,1]?

Серия изображений может быть загружена с http://www.vtk.org/Wiki/File:VTK_Examples_StandardFormats_Input_DicomTestImages.zip
Безнадежно, когда в демо-программе происходит ошибка.

0

Решение

я получил точно такую ​​же ошибку.
НО мои изображения имеют одинаковое измерение, я не получаю ошибок, если читаю их одно за другим … просто используя itk.ImageSeriesReader кажется, стереть последнее измерение каждого файла …

это работает:

import itk, numpy
slices = sorted(filenames)
for idx, file in enumerate(slices):
volume.append(itk.GetArrayFromImage(itk.imread(file)))
return numpy.asarray(volume)

это не:

import itk, numpy
slices = sorted(filenames)
reader = itk.ImageSeriesReader.New(FileNames=slices)
volume = reader.GetOutput()

и предоставьте ошибку:

itk::ERROR: ImageSeriesReader(0x14e81e2d0): Size mismatch! The size of  ./A23780DIATD/A23780DIATD_rec/A23780DIATD__rec0029.bmp is [864, 824] and does not match the required size [864, 1] from file ./A23780DIATD/A23780DIATD_rec/A23780DIATD__rec0029.bmp

(извините, это код Python)

0

Другие решения

Попробуйте использовать «const unsigned int Dimension = 3;» вместо этого «const unsigned int Dimension = 2;»

Меня устраивает.

0

Вы должны попытаться использовать reader->UpdateLargestPossibleRegion(); вместо reader->Update();

-1
По вопросам рекламы [email protected]