int testRepresenterForVectorImage(const std::string& datadir) { typedef itk::StandardImageRepresenter<itk::Vector<float, 2>, 2> RepresenterType; typedef GenericRepresenterTest<RepresenterType> RepresenterTestType; const std::string referenceFilename = datadir + "/hand_dfs/df-hand-1.vtk"; const std::string testDatasetFilename = datadir + "/hand_dfs/df-hand-2.vtk"; RepresenterType::Pointer representer = RepresenterType::New(); VectorImageType::Pointer reference = loadVectorImage(referenceFilename); representer->SetReference(reference); // choose a test dataset, a point and its associate pixel value VectorImageType::Pointer testDataset = loadVectorImage(testDatasetFilename); VectorImageType::IndexType idx; idx.Fill(0); VectorImageType::PointType testPt; reference->TransformIndexToPhysicalPoint(idx, testPt); VectorImageType::PixelType testValue = testDataset->GetPixel(idx); RepresenterTestType representerTest(representer, testDataset, std::make_pair(testPt, testValue)); return (representerTest.runAllTests() == true); }
void buildImageIntensityModelOnROI(const char* referenceFilename, const char* maskFilename, const char* dir, const char* outputImageFilename) { typedef itk::PCAModelBuilder<RepresenterType> ModelBuilderType; typedef itk::StatisticalModel<RepresenterType> StatisticalModelType; typedef std::vector<std::string> StringVectorType; typedef itk::DataManager<RepresenterType> DataManagerType; RepresenterType::Pointer representer = RepresenterType::New(); typedef itk::ImageFileReader< ImageType > MaskReaderType; MaskReaderType::Pointer maskReader = MaskReaderType::New(); maskReader->SetFileName( maskFilename ); maskReader->Update(); representer->SetReference( ReadImageFromFile(referenceFilename), maskReader->GetOutput() ); StringVectorType filenames; getdir(dir, filenames, ".vtk"); DataManagerType::Pointer dataManager = DataManagerType::New(); dataManager->SetRepresenter(representer); for (StringVectorType::const_iterator it = filenames.begin(); it != filenames.end(); it++) { std::string fullpath = (std::string(dir) + "/") + *it; dataManager->AddDataset( ReadImageFromFile(fullpath), fullpath.c_str()); } ModelBuilderType::Pointer pcaModelBuilder = ModelBuilderType::New(); StatisticalModelType::Pointer model = pcaModelBuilder->BuildNewModel(dataManager->GetSampleDataStructure(), 0); std::cout<<"dimensionality of the data: "<<model->GetDomain().GetNumberOfPoints()<<", dimension of the images: "<<(*dataManager->GetSampleDataStructure().begin())->GetSample()->GetLargestPossibleRegion().GetNumberOfPixels()<<std::endl; std::cout<<"writing the mean sample to a png file..."<<std::endl; typedef itk::ImageFileWriter< ImageType > ImageWriterType; ImageWriterType::Pointer writer = ImageWriterType::New(); writer->SetFileName( outputImageFilename ); writer->SetInput(model->DrawSample()); writer->Update(); }