int main(int argc, char **argv) { if(argc != 3) { cerr << "Usage: " << argv[0] << " <input volume file> <output volume file>" << endl; return 1; } try { VolMagickOpStatus status; VolMagick::setDefaultMessenger(&status); VolMagick::VolumeFileInfo volinfo; volinfo.read(argv[1]); VolMagick::createVolumeFile(argv[2], volinfo.boundingBox(), volinfo.dimension(), volinfo.voxelTypes(), volinfo.numVariables(), volinfo.numTimesteps(), volinfo.TMin(),volinfo.TMax()); for(unsigned int var=0; var<volinfo.numVariables(); var++) for(unsigned int time=0; time<volinfo.numTimesteps(); time++) { VolMagick::Volume vol; readVolumeFile(vol,argv[1],var,time); for(VolMagick::uint64 i = 0; i < vol.dimension().size(); i++) vol(i, vol.min() + ((vol.max() - vol(i))/(vol.max() - vol.min()))*(vol.max() - vol.min())); vol.desc(volinfo.name(var)); writeVolumeFile(vol,argv[2],var,time); } } catch(VolMagick::Exception &e) { cerr << e.what() << endl; } catch(std::exception &e) { cerr << e.what() << endl; } return 0; }
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); } } }