25 #ifndef WDATASETSEGMENTATION_H
26 #define WDATASETSEGMENTATION_H
31 #include <boost/shared_ptr.hpp>
33 #include "../kernel/WModuleInputData.h"
35 #include "WDataSetScalar.h"
36 #include "WDataSetSingle.h"
56 WDataSetSegmentation( boost::shared_ptr< WValueSetBase > segmentation, boost::shared_ptr< WGrid > grid );
66 boost::shared_ptr< WDataSetScalar > grayMatter,
67 boost::shared_ptr< WDataSetScalar > cerebrospinalFluid );
116 virtual const std::string
getName()
const;
190 static boost::shared_ptr< WValueSetBase >
convert( boost::shared_ptr< WDataSetScalar > whiteMatter,
191 boost::shared_ptr< WDataSetScalar > grayMatter,
192 boost::shared_ptr< WDataSetScalar > cerebrospinalFluid );
201 template<
typename T >
static std::vector< T >
copyDataSetsToArray(
const std::vector< boost::shared_ptr< WDataSetScalar > > &dataSets );
204 template<
typename T > std::vector< T >
207 const size_t voxelDim = dataSets.size();
208 size_t countVoxels = 0;
209 if ( !dataSets.empty() ) countVoxels = ( *dataSets.begin() )->
getValueSet()->size();
211 std::vector< T > data( countVoxels * voxelDim );
215 for ( std::vector< boost::shared_ptr< WDataSetScalar > >::const_iterator it = dataSets.begin(); it != dataSets.end(); it++ )
217 for(
size_t voxelNumber = 0; voxelNumber < countVoxels; voxelNumber++ )
219 data[ voxelNumber * voxelDim + dimIndex ] = ( boost::shared_static_cast<
WDataSetSingle > ( *it ) )->getValueAt< T >( voxelNumber );
239 #endif // WDATASETSEGMENTATION_H