]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/DataStructures/Image/MinimumSpanningTree.h
...
[FrontAlgorithms.git] / lib / fpa / DataStructures / Image / MinimumSpanningTree.h
diff --git a/lib/fpa/DataStructures/Image/MinimumSpanningTree.h b/lib/fpa/DataStructures/Image/MinimumSpanningTree.h
new file mode 100644 (file)
index 0000000..5adcbad
--- /dev/null
@@ -0,0 +1,77 @@
+// =========================================================================
+// @author Leonardo Florez Valencia
+// @email florez-l@javeriana.edu.co
+// =========================================================================
+#ifndef __fpa__DataStructures__Image__MinimumSpanningTree__h__
+#define __fpa__DataStructures__Image__MinimumSpanningTree__h__
+
+#include <itkImage.h>
+#include <fpa/DataStructures/MinimumSpanningTree.h>
+#include <fpa/DataStructures/Image/Path.h>
+
+namespace fpa
+{
+  namespace DataStructures
+  {
+    namespace Image
+    {
+      /**
+       */
+      template< unsigned int _VDim >
+      class MinimumSpanningTree
+        : public fpa::DataStructures::MinimumSpanningTree< itk::Index< _VDim >, itk::Image< itk::Offset< _VDim >, _VDim > >
+      {
+      public:
+        typedef itk::Index< _VDim > TVertex;
+        typedef itk::Image< itk::Offset< _VDim >, _VDim > TDataStructuresImage;
+
+        typedef MinimumSpanningTree             Self;
+        typedef itk::SmartPointer< Self >       Pointer;
+        typedef itk::SmartPointer< const Self > ConstPointer;
+        typedef fpa::DataStructures::MinimumSpanningTree< TVertex, TDataStructuresImage > Superclass;
+
+        typedef typename Superclass::TCollision     TCollision;
+        typedef typename Superclass::TCollisionsRow TCollisionsRow;
+        typedef typename Superclass::TCollisions    TCollisions;
+        typedef typename Superclass::TVertices      TVertices;
+
+        typedef fpa::DataStructures::Image::Path< _VDim > TPath;
+
+      public:
+        itkNewMacro( Self );
+        itkTypeMacro(
+          fpa::DataStructures::Image::MinimumSpanningTree,
+          fpa::DataStructures::MinimumSpanningTree
+          );
+
+      public:
+        virtual TVertex GetParent( const TVertex& v ) const override;
+        virtual void SetParent( const TVertex& v, const TVertex& p ) override;
+
+        void GetPath( typename TPath::Pointer& path, const TVertex& a ) const;
+        void GetPath(
+          typename TPath::Pointer& path,
+          const TVertex& a, const TVertex& b
+          ) const;
+
+      protected:
+        MinimumSpanningTree( );
+        virtual ~MinimumSpanningTree( );
+
+      private:
+        MinimumSpanningTree( const Self& other );
+        Self& operator=( const Self& other );
+      };
+
+    } // ecapseman
+
+  } // ecapseman
+
+} // ecapseman
+
+#ifndef ITK_MANUAL_INSTANTIATION
+#  include <fpa/DataStructures/Image/MinimumSpanningTree.hxx>
+#endif // ITK_MANUAL_INSTANTIATION
+#endif // __fpa__DataStructures__Image__MinimumSpanningTree__h__
+
+// eof - $RCSfile$