void operator()() { CVC::ThreadFeedback feedback; if (_output.empty()) { _output = _volSelected+"_gdtv"; } if (_dataset.empty()) { _dataset = _volSelected+"_gdtv"; } // read in the data if necessary if(cvcapp.isData<VolMagick::VolumeFileInfo>(_volSelected)) { VolMagick::VolumeFileInfo vfi = cvcapp.data<VolMagick::VolumeFileInfo>(_volSelected); if (_currentIndex == 0) { if (_output.substr(_output.find_last_of(".")) != _fileType) { _output = _output + _fileType; } VolMagick::createVolumeFile(_output, vfi.boundingBox(), vfi.dimension(), vfi.voxelTypes(), vfi.numVariables(), vfi.numTimesteps(), vfi.TMin(), vfi.TMax()); } // run gdtv filter for(unsigned int var=0; var<vfi.numVariables(); var++) { for(unsigned int time=0; time<vfi.numTimesteps(); time++) { VolMagick::Volume vol; readVolumeFile(vol,vfi.filename(),var,time); vol.gdtvFilter(2.0-_exp,_lambda,_iterations,_nhood-1.0); if (_currentIndex == 0) { writeVolumeFile(vol,_output,var,time); } else if (_currentIndex == 1) { // put the dataset in the list cvcapp.data(_dataset,vol); } } } } else if(cvcapp.isData<VolMagick::Volume>(_volSelected)) { VolMagick::Volume vol = cvcapp.data<VolMagick::Volume>(_volSelected); vol.gdtvFilter(2.0-_exp,_lambda,_iterations,_nhood-1.0); if (_currentIndex == 0) { //if _output not set, overwrite the input volume data if(_output.empty()) cvcapp.data(_volSelected, vol); else { _output = _output + _fileType; cvcapp.data(_output, vol); } } else if (_currentIndex == 1) { cvcapp.data(_dataset,vol); } } }