ITK/Examples/ImageProcessing/BinaryImageToShapeLabelMapFilter: Difference between revisions
Line 13: | Line 13: | ||
ImageType::Pointer image = ImageType::New(); | ImageType::Pointer image = ImageType::New(); | ||
CreateImage(image); | CreateImage(image); | ||
typedef itk::BinaryImageToShapeLabelMapFilter< | typedef itk::BinaryImageToShapeLabelMapFilter<ImageType> LabelMapFilterType; | ||
LabelMapFilterType::Pointer labelMapFilter = LabelMapFilterType::New(); | LabelMapFilterType::Pointer labelMapFilter = LabelMapFilterType::New(); | ||
labelMapFilter->SetInput(image); | labelMapFilter->SetInput(image); | ||
labelMapFilter->Update(); | labelMapFilter->Update(); | ||
LabelMapFilterType::OutputImageType * labelMap = labelMapFilter->GetOutput(); | |||
std::cout << "There are " << | |||
for(unsigned int i = 0; i < | std::cout << "There are " << labelMap->GetNumberOfLabelObjects() << " objects." << std::endl; | ||
for(unsigned int i = 0; i < labelMap->GetNumberOfLabelObjects(); i++) | |||
{ | { | ||
std::cout << "Object " << i << " has bounding box " << | std::cout << "Object " << i << " has bounding box " << labelMap->GetNthLabelObject(i)->GetBoundingBox() << std::endl; | ||
} | } | ||
return EXIT_SUCCESS; | return EXIT_SUCCESS; | ||
} | } |
Revision as of 14:17, 4 December 2010
BinaryImageToShapeLabelMapFilter.cxx
<source lang="cpp">
- include "itkImage.h"
- include "itkImageFileWriter.h"
- include "itkImageRegionIterator.h"
- include "itkBinaryImageToShapeLabelMapFilter.h"
typedef itk::Image<unsigned char, 2> ImageType; void CreateImage(ImageType::Pointer image);
int main(int, char *[]) {
ImageType::Pointer image = ImageType::New(); CreateImage(image); typedef itk::BinaryImageToShapeLabelMapFilter<ImageType> LabelMapFilterType; LabelMapFilterType::Pointer labelMapFilter = LabelMapFilterType::New(); labelMapFilter->SetInput(image); labelMapFilter->Update(); LabelMapFilterType::OutputImageType * labelMap = labelMapFilter->GetOutput(); std::cout << "There are " << labelMap->GetNumberOfLabelObjects() << " objects." << std::endl; for(unsigned int i = 0; i < labelMap->GetNumberOfLabelObjects(); i++) { std::cout << "Object " << i << " has bounding box " << labelMap->GetNthLabelObject(i)->GetBoundingBox() << std::endl; } return EXIT_SUCCESS;
}
void CreateImage(ImageType::Pointer image) {
ImageType::IndexType start; start.Fill(0);
ImageType::SizeType size; size.Fill(20);
ImageType::RegionType region; region.SetSize(size); region.SetIndex(start); image->SetRegions(region); image->Allocate();
itk::ImageRegionIterator<ImageType> imageIterator(image,image->GetLargestPossibleRegion());
// Make a square while(!imageIterator.IsAtEnd()) { if((imageIterator.GetIndex()[0] > 5 && imageIterator.GetIndex()[0] < 10) && (imageIterator.GetIndex()[1] > 5 && imageIterator.GetIndex()[1] < 10) ) { imageIterator.Set(255); } else { imageIterator.Set(0); }
++imageIterator; }
} </source>
CMakeLists.txt
<source lang="cmake"> cmake_minimum_required(VERSION 2.6)
PROJECT(BinaryImageToShapeLabelMapFilter)
FIND_PACKAGE(ITK REQUIRED) INCLUDE(${ITK_USE_FILE})
ADD_EXECUTABLE(BinaryImageToShapeLabelMapFilter BinaryImageToShapeLabelMapFilter.cxx) TARGET_LINK_LIBRARIES(BinaryImageToShapeLabelMapFilter ITKIO ITKBasicFilters ITKCommon ITKReview ) </source>