183 std::vector<carto::VolumeRef<T> > pyramid;
184 pyramid.reserve( factors.size() + 1 );
189 std::cout <<
"Copy first level... " << std::endl;
190 pyramid.push_back( carto::copy(vol) );
193 std::vector<Point4du>::iterator f;
195 for( f = factors.begin(); f != factors.end(); ++f, ++l )
198 std::cout <<
"Compute subsampled level " << l <<
"... " << std::endl;
201 std::cout <<
"Moving average filter/subsampling: " << std::flush;
204 _dir[1] && (*f)[1] > 1,
205 _dir[2] && (*f)[2] > 1,
206 _dir[3] && (*f)[3] > 1 );
219 std::vector<Point4du> factors;
226 unsigned nlevels = 0;
227 Point4dl level_size( size[0], size[1], size[2], size[3] );
232 for(
int i = 0; i < 4; ++i )
235 level_size[i] /=
_factor[0][i];
236 if( level_size[i] == 1 )
241 factors.assign( nlevels,
_factor[0] );
244 Point4dl level_size( size[0], size[1], size[2], size[3] );
245 for( std::vector<Point4du>::iterator f = factors.begin();
246 f != factors.end(); ++f )
248 for(
int i = 0; i < 4; ++i )
252 if( level_size[i] / (*f)[i] == 0 )
255 level_size[i] /= (*f)[i];
262 factors.erase( f, factors.end() );