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);
      }

  };