void initialize_vertex(VertexDescriptorType v, TGraph& g) const { //std::cout << "Initializing " << v[0] << " " << v[1] << std::endl; // Create the patch object and associate with the node itk::Index<2> index; index[0] = v[0]; index[1] = v[1]; itk::ImageRegion<2> region = ITKHelpers::GetRegionInRadiusAroundPixel(index, HalfWidth); unsigned int numberOfValues = Image->GetNumberOfComponentsPerPixel() * region.GetNumberOfPixels(); if(MaskImage->IsValid(region)) { std::vector<float> pixels(numberOfValues, 0); itk::ImageRegionIterator<TImage> imageIterator(Image, region); unsigned int pixelCounter = 0; while(!imageIterator.IsAtEnd()) { TImage::PixelType p = imageIterator.Get(); for(unsigned int component = 0; component < p.Size(); ++component) { pixels[Image->GetNumberOfComponentsPerPixel() * pixelCounter + component] = p[component]; } pixelCounter++; ++imageIterator; } FeatureVectorPixelDescriptor descriptor(this->image, this->mask, region); descriptor.SetVertex(v); put(DescriptorMap, v, descriptor); } else { FeatureVectorPixelDescriptor descriptor(numberOfValues); descriptor.SetVertex(v); put(DescriptorMap, v, descriptor); } };