25 #ifndef WDATASETSEGMENTATION_H
26 #define WDATASETSEGMENTATION_H
31 #include <boost/shared_ptr.hpp>
34 #include "WDataSetScalar.h"
35 #include "WDataSetSingle.h"
54 WDataSetSegmentation( boost::shared_ptr< WValueSetBase > segmentation, boost::shared_ptr< WGrid > grid );
64 boost::shared_ptr< WDataSetScalar > grayMatter,
65 boost::shared_ptr< WDataSetScalar > cerebrospinalFluid );
114 virtual const std::string
getName()
const;
188 static boost::shared_ptr< WValueSetBase >
convert( boost::shared_ptr< WDataSetScalar > whiteMatter,
189 boost::shared_ptr< WDataSetScalar > grayMatter,
190 boost::shared_ptr< WDataSetScalar > cerebrospinalFluid );
199 template<
typename T >
static std::vector< T >
copyDataSetsToArray(
const std::vector< boost::shared_ptr< WDataSetScalar > > &dataSets );
202 template<
typename T > std::vector< T >
205 const size_t voxelDim = dataSets.size();
206 size_t countVoxels = 0;
207 if( !dataSets.empty() ) countVoxels = ( *dataSets.begin() )->
getValueSet()->size();
209 std::vector< T > data( countVoxels * voxelDim );
213 for( std::vector< boost::shared_ptr< WDataSetScalar > >::const_iterator it = dataSets.begin(); it != dataSets.end(); it++ )
215 for(
size_t voxelNumber = 0; voxelNumber < countVoxels; voxelNumber++ )
217 data[ voxelNumber * voxelDim + dimIndex ] = ( boost::shared_static_cast<
WDataSetSingle > ( *it ) )->getValueAt< T >( voxelNumber );
237 #endif // WDATASETSEGMENTATION_H