📄 itkreadwritespatialobjecttest.cxx
字号:
writer->SetBinaryPoints(false);
if(writer->GetBinaryPoints())
{
std::cout<<"[FAILURE]"<<std::endl;
return EXIT_FAILURE;
}
if((argc>1) && (!strcmp(argv[1],"binary")))
{
writer->SetBinaryPoints(true);
}
writer->Update();
std::cout<<"[PASSED]"<<std::endl;
std::cout<<"Testing Reading SceneSpatialObject: ";
ReaderType::Pointer reader = ReaderType::New();
if((argc>1) && (strcmp(argv[1],"binary")))
{
reader->SetFileName(argv[1]);
}
else
{
reader->SetFileName("Objects.meta");
}
reader->Update();
ReaderType::ScenePointer myScene = reader->GetScene();
if(!myScene)
{
std::cout<<"No Scene : [FAILED]"<<std::endl;
return EXIT_FAILURE;
}
else
{
std::cout<<" [PASSED]"<<std::endl;
}
std::cout<<"Testing Number of children:";
if(myScene->GetNumberOfObjects(1) != 10)
{
std::cout << "found " << myScene->GetNumberOfObjects(1) << " instead of 10" << std::endl;
std::cout<<" [FAILED]"<<std::endl;
return EXIT_FAILURE;
}
else
{
std::cout<<" [PASSED]"<<std::endl;
}
std::cout<<"Testing CenterLine Position:";
TubeType::PointListType::const_iterator j;
ReaderType::SceneType::ObjectListType * mySceneChildren =
myScene->GetObjects(999999);
ReaderType::SceneType::ObjectListType::const_iterator obj;
for(obj = mySceneChildren->begin(); obj != mySceneChildren->end(); obj++)
{
if(!strcmp((*obj)->GetTypeName(),"TubeSpatialObject"))
{
unsigned int value=0;
for(j = dynamic_cast<TubeType*>((*obj).GetPointer())->GetPoints().begin();
j != dynamic_cast<TubeType*>((*obj).GetPointer())->GetPoints().end();
j++)
{
for(unsigned int d=0;d<3;d++)
{
if((*j).GetPosition()[d]!=value * (*obj)->GetId())
{
std::cout<<" [FAILED] (Position is: " << (*j).GetPosition()[d] << " expected : "<< value * (*obj)->GetId()<< " ) " <<std::endl;
return EXIT_FAILURE;
}
}
// Testing the color of the tube points
if( (*j).GetRed() != value)
{
std::cout<<" [FAILED] : Red : found " << ( *j).GetRed() << " instead of " << value <<std::endl;
return EXIT_FAILURE;
}
if((*j).GetGreen()!=value+1)
{
std::cout<<" [FAILED] : Green : found " << ( *j).GetGreen() << " instead of " << value+1 <<std::endl;
return EXIT_FAILURE;
}
if((*j).GetBlue()!=value+2)
{
std::cout<<"[FAILED] : Blue : found " << ( *j).GetBlue() << " instead of " << value+2 <<std::endl;
return EXIT_FAILURE;
}
if((*j).GetAlpha()!=value+3)
{
std::cout<<" [FAILED] : Alpha : found " << ( *j).GetAlpha() << " instead of " << value+3 <<std::endl;
return EXIT_FAILURE;
}
value++;
}
}
}
std::cout<<" [PASSED]"<<std::endl;
// Testing VesselTubeSO
bool found = false;
std::cout << "Testing VesselTubeSpatialObject: ";
VesselTubeType::PointListType::const_iterator jv;
for(obj = mySceneChildren->begin(); obj != mySceneChildren->end(); obj++)
{
if(!strcmp((*obj)->GetTypeName(),"VesselTubeSpatialObject"))
{
found = true;
unsigned int value=0;
for(jv = dynamic_cast<VesselTubeType*>((*obj).GetPointer())->GetPoints().begin();
jv != dynamic_cast<VesselTubeType*>((*obj).GetPointer())->GetPoints().end();
jv++)
{
for(unsigned int d=0;d<3;d++)
{
if((*jv).GetPosition()[d]!=value * (*obj)->GetId())
{
std::cout<<" [FAILED] (Position is: " << (*jv).GetPosition()[d] << " expected : "<< value * (*obj)->GetId()<< " ) " <<std::endl;
return EXIT_FAILURE;
}
}
// Testing the color of the tube points
if( (*jv).GetRed() != value)
{
std::cout<<" [FAILED] : Red : found " << ( *jv).GetRed() << " instead of " << value <<std::endl;
return EXIT_FAILURE;
}
if((*jv).GetGreen()!=value+1)
{
std::cout<<" [FAILED] : Green : found " << ( *jv).GetGreen() << " instead of " << value+1 <<std::endl;
return EXIT_FAILURE;
}
if((*jv).GetBlue()!=value+2)
{
std::cout<<"[FAILED] : Blue : found " << ( *jv).GetBlue() << " instead of " << value+2 <<std::endl;
return EXIT_FAILURE;
}
if((*jv).GetAlpha()!=value+3)
{
std::cout<<" [FAILED] : Alpha : found " << ( *jv).GetAlpha() << " instead of " << value+3 <<std::endl;
return EXIT_FAILURE;
}
if((*jv).GetRidgeness()!=value*1)
{
std::cout<<" [FAILED] : Ridgeness : found " << ( *jv).GetRidgeness() << " instead of " << value*1 <<std::endl;
return EXIT_FAILURE;
}
if((*jv).GetMedialness()!=value*2)
{
std::cout<<" [FAILED] : Medialness : found " << ( *jv).GetMedialness() << " instead of " << value*2 <<std::endl;
return EXIT_FAILURE;
}
if((*jv).GetBranchness()!=value*3)
{
std::cout<<" [FAILED] : Branchness : found " << ( *jv).GetBranchness() << " instead of " << value*3 <<std::endl;
return EXIT_FAILURE;
}
if(!(*jv).GetMark())
{
std::cout<<" [FAILED] : GetMark is set to false" << std::endl;
return EXIT_FAILURE;
}
if((*jv).GetAlpha1()!=value*1)
{
std::cout<<" [FAILED] : Alpha1 : found " << ( *jv).GetAlpha1() << " instead of " << value*1 <<std::endl;
return EXIT_FAILURE;
}
if((*jv).GetAlpha2()!=value*2)
{
std::cout<<" [FAILED] : Alpha2 : found " << ( *jv).GetAlpha2() << " instead of " << value*2 <<std::endl;
return EXIT_FAILURE;
}
if((*jv).GetAlpha3()!=value*3)
{
std::cout<<" [FAILED] : Alpha3 : found " << ( *jv).GetAlpha3() << " instead of " << value*3 <<std::endl;
return EXIT_FAILURE;
}
value++;
}
}
}
if(found)
{
std::cout<<" [PASSED]"<<std::endl;
}
else
{
std::cout << " [FAILED] : Cannot found VesselSpatialObject" << std::endl;
return EXIT_FAILURE;
}
// Testing DTITubeSO
found = false;
std::cout << "Testing DTITubeSpatialObject: ";
DTITubeType::PointListType::const_iterator jdti;
for(obj = mySceneChildren->begin(); obj != mySceneChildren->end(); obj++)
{
if(!strcmp((*obj)->GetTypeName(),"DTITubeSpatialObject"))
{
found = true;
unsigned int value=0;
for(jdti = dynamic_cast<DTITubeType*>((*obj).GetPointer())->GetPoints().begin();
jdti != dynamic_cast<DTITubeType*>((*obj).GetPointer())->GetPoints().end();
jdti++)
{
for(unsigned int d=0;d<3;d++)
{
if((*jdti).GetPosition()[d]!=value * (*obj)->GetId())
{
std::cout<<" [FAILED] (Position is: " << (*jdti).GetPosition()[d] << " expected : "<< value * (*obj)->GetId()<< " ) " <<std::endl;
return EXIT_FAILURE;
}
}
// Testing the color of the tube points
if( (*jdti).GetRed() != value)
{
std::cout<<" [FAILED] : Red : found " << ( *jdti).GetRed() << " instead of " << value <<std::endl;
return EXIT_FAILURE;
}
if((*jdti).GetGreen()!=value+1)
{
std::cout<<" [FAILED] : Green : found " << ( *jdti).GetGreen() << " instead of " << value+1 <<std::endl;
return EXIT_FAILURE;
}
if((*jdti).GetBlue()!=value+2)
{
std::cout<<"[FAILED] : Blue : found " << ( *jdti).GetBlue() << " instead of " << value+2 <<std::endl;
return EXIT_FAILURE;
}
if((*jdti).GetAlpha()!=value+3)
{
std::cout<<" [FAILED] : Alpha : found " << ( *jdti).GetAlpha() << " instead of " << value+3 <<std::endl;
return EXIT_FAILURE;
}
if((*jdti).GetField(DTITubePointType::FA)!=value+1)
{
std::cout<<" [FAILED] : FA : found " << ( *jdti).GetField("FA") << " instead of " << value+1 <<std::endl;
return EXIT_FAILURE;
}
if((*jdti).GetField(DTITubePointType::ADC)!=value*2)
{
std::cout<<" [FAILED] : ADC : found " << ( *jdti).GetField("ADC") << " instead of " << value*2 <<std::endl;
return EXIT_FAILURE;
}
if((*jdti).GetField(DTITubePointType::GA)!=value*3)
{
std::cout<<" [FAILED] : GA : found " << ( *jdti).GetField("FA") << " instead of " << value*3 <<std::endl;
return EXIT_FAILURE;
}
if((*jdti).GetField("Lambda1")!=value*4)
{
std::cout<<" [FAILED] : GetLambda1 : found " << ( *jdti).GetField("Lambda1") << " instead of " << value*4 <<std::endl;
return EXIT_FAILURE;
}
if((*jdti).GetField("Lambda2")!=value*5)
{
std::cout<<" [FAILED] : GetLambda2 : found " << ( *jdti).GetField("Lambda2") << " instead of " << value*5 <<std::endl;
return EXIT_FAILURE;
}
if((*jdti).GetField("Lambda3")!=value*6)
{
std::cout<<" [FAILED] : GetLambda3 : found " << ( *jdti).GetField("Lambda3") << " instead of " << value*6 <<std::endl;
return EXIT_FAILURE;
}
int ind;
for(ind=0;ind<6;ind++)
{
if((*jdti).GetTensorMatrix()[ind]!=ind)
{
std::cout<<" [FAILED] : GetTensorMatrix : found " << ( *jdti).GetTensorMatrix()[ind] << " instead of " << ind <<std::endl;
return EXIT_FAILURE;
}
}
value++;
}
}
}
if(found)
{
std::cout<<" [PASSED]"<<std::endl;
}
else
{
std::cout << " [FAILED] : Cannot found VesselSpatialObject" << std::endl;
return EXIT_FAILURE;
}
std::cout<<"Testing Ellipse parameters:";
bool gotEllipse = false;
for(obj = mySceneChildren->begin(); obj != mySceneChildren->end(); obj++)
{
if(!strcmp((*obj)->GetTypeName(),"EllipseSpatialObject"))
{
for(unsigned int jj=0;jj<3;jj++)
{
if (dynamic_cast<EllipseType*>((*obj).GetPointer())->GetRadius()[jj] != 9)
{
std::cout<<" [FAILED]"<<std::endl;
return EXIT_FAILURE;
}
gotEllipse = true;
}
}
}
if(!gotEllipse)
{
std::cout<<" [FAILED] : No ellipse!"<<std::endl;
return EXIT_FAILURE;
}
std::cout<<" [PASSED]"<<std::endl;
std::cout<<"Testing Image data validity:";
for(obj = mySceneChildren->begin(); obj != mySceneChildren->end(); obj++)
{
if(!strcmp((*obj)->GetTypeName(),"ImageSpatialObject"))
{
itkImageType::ConstPointer constImage = dynamic_cast<const ImageType*>((*obj).GetPointer())->GetImage();
itk::ImageRegionConstIteratorWithIndex< itkImageType > it(constImage, constImage->GetLargestPossibleRegion());
for(unsigned int i = 0; !it.IsAtEnd(); i++, ++it)
{
if(it.Get() != i)
{
std::cout << "Expected " << i << " , found " << it.Get() << std::endl;
std::cout<<" [FAILED]"<<std::endl;
return EXIT_FAILURE;
}
}
}
}
std::cout<<" [PASSED]"<<std::endl;
std::cout<<"Testing Image Mask validity:";
bool maskFound = false;
for(obj = mySceneChildren->begin(); obj != mySceneChildren->end(); obj++)
{
if(!strcmp((*obj)->GetTypeName(),"ImageMaskSpatialObject"))
{
maskFound = true;
itkImageMaskType::ConstPointer constImage = dynamic_cast<const ImageMaskType*>((*obj).GetPointer())->GetImage();
itk::ImageRegionConstIteratorWithIndex< itkImageMaskType > it(constImage, constImage->GetLargestPossibleRegion());
for(unsigned char i = 0; !it.IsAtEnd(); i++, ++it)
{
if(it.Get() != i)
{
std::cout << "Expected " << i << " , found " << it.Get() << std::endl;
std::cout<<" [FAILED]"<<std::endl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -