From: Leonardo Florez-Valencia Date: Mon, 15 Feb 2016 23:16:25 +0000 (-0500) Subject: ... X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=b8daa5d36565c60e27e7e96707fb2f8a75145ec7;p=FrontAlgorithms.git ... --- diff --git a/lib/fpa/Base/ExtractBranchesFromMinimumSpanningTree.h b/lib/fpa/Base/ExtractBranchesFromMinimumSpanningTree.h index 06c3046..985d339 100644 --- a/lib/fpa/Base/ExtractBranchesFromMinimumSpanningTree.h +++ b/lib/fpa/Base/ExtractBranchesFromMinimumSpanningTree.h @@ -24,8 +24,9 @@ namespace fpa typedef T TMinimumSpanningTree; typedef typename T::TVertex TVertex; typedef typename T::TVertexCompare TVertexCompare; + typedef std::vector< TVertex > TPath; typedef - fpa::Base::MatrixValuesContainer< TVertex, bool, TVertexCompare > + fpa::Base::MatrixValuesContainer< TVertex, TPath, TVertexCompare > TBranches; typedef std::set< TVertex, TVertexCompare > TEndPoints; diff --git a/lib/fpa/Base/ExtractBranchesFromMinimumSpanningTree.hxx b/lib/fpa/Base/ExtractBranchesFromMinimumSpanningTree.hxx index 4af465f..f8793c9 100644 --- a/lib/fpa/Base/ExtractBranchesFromMinimumSpanningTree.hxx +++ b/lib/fpa/Base/ExtractBranchesFromMinimumSpanningTree.hxx @@ -46,8 +46,6 @@ AddEndPoint( const TVertex& v ) { if( this->m_EndPoints.find( v ) == this->m_EndPoints.end( ) ) { - std::cout << "Add " << v << std::endl; - this->m_EndPoints.insert( v ); this->Modified( ); @@ -78,8 +76,7 @@ ExtractBranchesFromMinimumSpanningTree( ) { this->itk::ProcessObject::SetNumberOfRequiredInputs( 1 ); - typename TBranches::Pointer out = - static_cast< TBranches* >( this->MakeOutput( 0 ).GetPointer( ) ); + typename TBranches::Pointer out = TBranches::New( ); this->itk::ProcessObject::SetNumberOfRequiredOutputs( 1 ); this->itk::ProcessObject::SetNthOutput( 0, out.GetPointer( ) ); } @@ -99,35 +96,38 @@ GenerateData( ) const T* tree = this->GetInput( ); TBranches* branches = this->GetOutput( ); + // Find bifurcations + TEndPoints all_points, marks; auto e0It = this->m_EndPoints.begin( ); for( ; e0It != this->m_EndPoints.end( ); ++e0It ) { + all_points.insert( *e0It ); auto e1It = e0It; e1It++; for( ; e1It != this->m_EndPoints.end( ); ++e1It ) { - std::cout << *e0It << " " << *e1It << std::endl; - // std::vector< TVertex > path = tree->GetPath( *e0It, *e1It ); + all_points.insert( *e0It ); + auto path = tree->GetPath( *e0It, *e1It ); + auto pIt = path.begin( ); + for( ; pIt != path.end( ); ++pIt ) + { + if( *pIt == *e0It || *pIt == *e1It ) + continue; + + if( marks.find( *pIt ) == marks.end( ) ) + marks.insert( *pIt ); + else + all_points.insert( *pIt ); + + } // rof } // rof } // rof -} - -/* - private: - // Purposely not implemented - ExtractBranchesFromMinimumSpanningTree( const Self& other ); - Self& operator=( const Self& other ); - protected: - TEndPoints m_EndPoints; - }; - - } // ecapseman - - } // ecapseman -*/ + // Construct branches + std::cout << all_points.size( ) << std::endl; +} #endif // __FPA__BASE__EXTRACTBRANCHESFROMMINIMUMSPANNINGTREE__HXX__