本文整理汇总了C++中volmagick::Volume::min方法的典型用法代码示例。如果您正苦于以下问题:C++ Volume::min方法的具体用法?C++ Volume::min怎么用?C++ Volume::min使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类volmagick::Volume
的用法示例。
在下文中一共展示了Volume::min方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
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;
}
示例2: main
int main(int argc, char **argv)
{
if(argc < 6)
{
std:: cerr <<
"Usage: " << argv[0] <<
" <first volume> <second volume> < threshold> <output volume left> <output volume masked> \n";
std::cerr<<"second volume (son) is subset of first volume (mother), threshold is in [0,255], output masked is the volume in first volume with > threshold in the second volume. output volume left is the first volume - output volume masked. " << std::endl;
return 1;
}
try
{
VolMagick::Volume inputVol;
VolMagick::Volume inputVol2;
VolMagick::readVolumeFile(inputVol,argv[1]); ///first argument is input volume
VolMagick::readVolumeFile(inputVol2, argv[2]); /// second argument is mask volume
float threshold = atof(argv[3]);
VolMagick::Volume outputLeft;
VolMagick::Volume outputMasked;
if(!inputVol2.boundingBox().isWithin(inputVol.boundingBox()) )
throw VolMagick::SubVolumeOutOfBounds("The mask volume bounding box must be within the mother volume's bounding box.");
outputLeft.voxelType(inputVol.voxelType());
outputLeft.dimension(inputVol.dimension());
outputLeft.boundingBox(inputVol.boundingBox());
outputMasked.voxelType(inputVol.voxelType());
outputMasked.dimension(inputVol.dimension());
outputMasked.boundingBox(inputVol.boundingBox());
float x, y, z;
float fvalue;
float minvalue = (float)inputVol2.min();
float maxvalue = (float)inputVol2.max();
for( int kz = 0; kz<inputVol.ZDim(); kz++)
{
for( int jy = 0; jy<inputVol.YDim(); jy++)
{
for( int ix = 0; ix<inputVol.XDim(); ix++)
{
z = inputVol.ZMin() + kz*inputVol.ZSpan();
y = inputVol.YMin() + jy*inputVol.YSpan();
x = inputVol.XMin() + ix*inputVol.XSpan();
if((z >= (float)inputVol2.ZMin()) && (z <= (float)inputVol2.ZMax()) && ( y >=(float)inputVol2.YMin()) && (y <= (float)inputVol2.YMax()) &&(x >= (float)inputVol2.XMin()) && (x <= (float)inputVol2.XMax()) )
{
fvalue = 255.0*(inputVol2.interpolate(x,y,z)-minvalue)/(maxvalue-minvalue);
if(fvalue > threshold)
{
outputMasked(ix,jy,kz, inputVol(ix,jy,kz));
outputLeft(ix,jy,kz, inputVol.min());
}
else
{
outputMasked(ix,jy,kz, inputVol.min());
outputLeft(ix,jy,kz, inputVol(ix,jy,kz));
}
}
else
{
outputMasked(ix,jy,kz, inputVol.min());
outputLeft(ix,jy,kz, inputVol(ix,jy,kz));
}
}
}
}
VolMagick::createVolumeFile(outputLeft, argv[4]);
VolMagick::createVolumeFile(outputMasked, argv[5]);
std::cout<<"done!"<<std::endl;
}
catch(VolMagick::Exception &e)
{
std:: cerr << e.what() << std::endl;
}
catch(std::exception &e)
//.........这里部分代码省略.........
示例3: main
int main(int argc, char **argv)
{
if(argc < 4)
{
std:: cerr <<
"Usage: " << argv[0] <<
" first volume - second volume = output volume, step \n";
return 1;
}
try
{
VolMagick::Volume inputVol;
VolMagick::Volume inputVol2;
VolMagick::Volume outputVol;
VolMagick::readVolumeFile(inputVol,argv[1]); ///first argument is input volume
VolMagick::readVolumeFile(inputVol2, argv[2]); /// second argument is mask volume
VolMagick::VolumeFileInfo volinfo1;
volinfo1.read(argv[1]);
std::cout << volinfo1.filename() << ":" <<std::endl;
VolMagick::VolumeFileInfo volinfo2;
volinfo2.read(argv[2]);
std::cout << volinfo2.filename() << ":" <<std::endl;
std::cout<<"minVol1 , maxVol1: "<<volinfo1.min()<<" "<<volinfo1.max()<<std::endl;;
std::cout<<"minVol2 , maxVol2: "<<volinfo2.min()<<" "<<volinfo2.max()<<std::endl;
outputVol.voxelType(inputVol.voxelType());
outputVol.dimension(inputVol.dimension());
outputVol.boundingBox(inputVol.boundingBox());
std::cout<<"voxeltype "<<inputVol.voxelType()<<std::endl;
int step = 1;
if(argc==5) step= atoi(argv[argc-1]);
outputVol= inputVol;
for( int kz = 0; kz<inputVol2.ZDim(); kz++)
{
for( int jy = 0; jy<inputVol2.YDim(); jy++)
for( int ix = 0; ix<inputVol2.XDim(); ix++)
{
if(inputVol2(ix, jy, kz)> inputVol2.min())
{
for(int k=kz-step; k<=kz+step; k++)
for(int j=jy-step; j<= jy+step; j++)
for(int i=ix-step; i<= ix+step; i++)
{
if(i*j*k >=0 && i< inputVol2.XDim()-1 && j <inputVol2.YDim()-1 && k < inputVol2.ZDim()-1)
outputVol(i, j, k, inputVol.min());
}
}
}
}
VolMagick::createVolumeFile(outputVol, argv[3]);
}
catch(VolMagick::Exception &e)
{
std:: cerr << e.what() << std::endl;
}
catch(std::exception &e)
{
std::cerr << e.what() << std::endl;
}
return 0;
}
示例4: main
int main(int argc, char **argv)
{
if(argc < 2)
{
cerr << "Usage: " << argv[0] << " <volume file>" << endl;
return 1;
}
try
{
VolMagick::VolumeFileInfo volinfo;
VolMagick::VolumeCache volcache;
VolMagickOpStatus status;
VolMagick::setDefaultMessenger(&status);
#if 0
VolMagick::Volume sphereVol;
sphereVol.dimension(VolMagick::Dimension(128,128,128));//256,256,256));
sphereVol.voxelType(VolMagick::UChar);
double center_x = sphereVol.XDim()/2.0;
double center_y = sphereVol.YDim()/2.0;
double center_z = sphereVol.ZDim()/2.0;
double distance;
for(unsigned int k=0; k<sphereVol.ZDim(); k++)
for(unsigned int j=0; j<sphereVol.YDim(); j++)
for(unsigned int i=0; i<sphereVol.XDim(); i++)
{
distance = sqrt(double((i-center_x)*(i-center_x)+
(j-center_y)*(j-center_y)+
(k-center_z)*(k-center_z)));
//sphereVol(i,j,k, distance);
if((distance > 15.0) && (distance < 20.0))
sphereVol(i,j,k, 20);//20.0+10*(distance-15.0)/(20.0-15.0));
if((distance >= 20.0) && (distance < 25.0))
sphereVol(i,j,k, 30);//50.0+10*(distance-50.0)/(55.0-50.0));
}
VolMagick::writeVolumeFile(sphereVol, argv[1]);
#endif
#if 0
volinfo.read(argv[1]);
cout << volinfo.filename() << ":" <<endl;
cout << "Num Variables: " << volinfo.numVariables() << endl;
cout << "Num Timesteps: " << volinfo.numTimesteps() << endl;
cout << "Dimension: " << volinfo.XDim() << "x" << volinfo.YDim() << "x" << volinfo.ZDim() << endl;
cout << "Bounding box: ";
cout << "(" << volinfo.boundingBox().minx << "," << volinfo.boundingBox().miny << "," << volinfo.boundingBox().minz << ") ";
cout << "(" << volinfo.boundingBox().maxx << "," << volinfo.boundingBox().maxy << "," << volinfo.boundingBox().maxz << ") ";
cout << endl;
double volmin = volinfo.min(), volmax = volinfo.max();
cout << "Min voxel value: " << volmin << endl;
cout << "Max voxel value: " << volmax << endl;
cout << "Voxel type: " << volinfo.voxelTypeStr() << endl;
cout << "Volume name: " << volinfo.name() << endl << endl;
#endif
/*
vol.dimension(VolMagick::Dimension(128,128,128));
vol.voxelType(VolMagick::Float);
for(unsigned int i=0; i<128; i++)
for(unsigned int j=0; j<128; j++)
for(unsigned int k=0; k<128; k++)
vol(i,j,k,double(i)/128.0);
*/
#if 0
if(argc > 2)
{
VolMagick::Volume vol;
readVolumeFile(vol,argv[1]);
vol.min(volinfo.min());
vol.max(volinfo.max());
//vol.map(0.0,255.0);
//vol.voxelType(VolMagick::UChar);
vol.resize(VolMagick::Dimension(512,512,512));
writeVolumeFile(vol,argv[2]);
}
#endif
#if 0
if(argc > 2)
{
double realmin, realmax;
VolMagick::Volume vol;
std::vector<VolMagick::VolumeFileInfo> volinfos(argc-2);
volinfos[0].read(argv[1]);
realmin = volinfos[0].min();
realmax = volinfos[0].max();
for(unsigned int i=0; i<argc-2; i++)
{
volinfos[i].read(argv[i+1]);
//.........这里部分代码省略.........
示例5: main
int main(int argc, char **argv)
{
if(argc < 3)
{
cerr << "Usage: " << argv[0] << " <volume file> <volume file>" << endl;
return 1;
}
try
{
VolMagickOpStatus status;
VolMagick::setDefaultMessenger(&status);
#if 0
double realmin, realmax;
VolMagick::Volume vol;
std::vector<VolMagick::VolumeFileInfo> volinfos(argc-2);
volinfos[0].read(argv[1]);
realmin = volinfos[0].min();
realmax = volinfos[0].max();
for(unsigned int i=0; i<argc-2; i++)
{
volinfos[i].read(argv[i+1]);
if(realmin > volinfos[i].min()) realmin = volinfos[i].min();
if(realmax < volinfos[i].max()) realmax = volinfos[i].max();
}
cout << "Realmin: " << realmin << endl;
cout << "Realmax: " << realmax << endl;
createVolumeFile(argv[argc-1],
volinfos[0].boundingBox(),
volinfos[0].dimension(),
std::vector<VolMagick::VoxelType>(1, VolMagick::UChar),
1, argc-2,
0.0, double(argc-3));
for(unsigned int i=0; i<argc-2; i++)
{
readVolumeFile(vol,argv[i+1]);
//so the mapping is correct across all timesteps, we must set the real min and max across time
vol.min(realmin);
vol.max(realmax);
vol.map(0.0,255.0);
vol.voxelType(VolMagick::UChar);
writeVolumeFile(vol,argv[argc-1],0,i);
}
#endif
const double errThresh = 0.01;
VolMagick::Volume vols[2];
VolMagick::readVolumeFile(vols[0],argv[1]);
VolMagick::readVolumeFile(vols[1],argv[2]);
if(vols[0].dimension() != vols[1].dimension()) throw VolMagick::VolumePropertiesMismatch("Volumes differ in dimension");
if(vols[0].boundingBox() != vols[1].boundingBox()) throw VolMagick::VolumePropertiesMismatch("Volumes differ in bounding box");
if(fabs(vols[0].min() - vols[1].min()) > errThresh) throw VolMagick::VolumePropertiesMismatch("Minimum voxel values differ");
if(fabs(vols[0].max() - vols[1].max()) > errThresh) throw VolMagick::VolumePropertiesMismatch("Maximum voxel values differ");
for(VolMagick::uint64 i = 0; i<vols[0].dimension().size(); i++)
if(fabs(vols[0](i) - vols[1](i)) > errThresh) throw VolMagick::VolumePropertiesMismatch("Voxel values differ");
}
catch(VolMagick::Exception &e)
{
cerr << e.what() << endl;
}
catch(std::exception &e)
{
cerr << e.what() << endl;
}
return 0;
}
示例6: main
int main(int argc, char **argv)
{
if(argc < 5)
{
std:: cerr <<
"Usage: " << argv[0] <<
" inputfile NewMin NewMax outputFile \n";
return 1;
}
try
{
VolMagick::Volume inputVol;
VolMagick::Volume inputVol2;
VolMagick::Volume outputVol;
VolMagick::readVolumeFile(inputVol,argv[1]); ///first argument is input volume
// VolMagick::VolumeFileInfo volinfo1;
// volinfo1.read(argv[1]);
// std::cout << volinfo1.filename() << ":" <<std::endl;
outputVol.voxelType(inputVol.voxelType());
outputVol.dimension(inputVol.dimension());
outputVol.boundingBox(inputVol.boundingBox());
std::cout<<"voxeltype: "<<inputVol.voxelType()<<std::endl;
std::cout<<"InputVol min, max: " << inputVol.min() << ", " << inputVol.max() << std::endl;
float newMin = atof(argv[2]);
float newMax = atof(argv[3]);
for( int kz = 0; kz<inputVol.ZDim(); kz++)
{
std::cout<<kz<<"..";
for( int jy = 0; jy<inputVol.YDim(); jy++)
for( int ix = 0; ix<inputVol.XDim(); ix++)
{
outputVol(ix,jy,kz, newMin + (inputVol(ix,jy,kz)-inputVol.min())*newMax/(inputVol.max()-inputVol.min()) );
}
}
VolMagick::createVolumeFile(argv[argc-1], outputVol);
// VolMagick::writeVolumeFile(outputVol, argv[argc-1]);
std::cout<< std::endl;
}
catch(VolMagick::Exception &e)
{
std:: cerr << e.what() << std::endl;
}
catch(std::exception &e)
{
std::cerr << e.what() << std::endl;
}
return 0;
}