/*========================================================================= Program: GIFT Wavelet Operator Test Module: giftWaveletOperatorTest.cxx Language: C++ Date: 2005/10/21 Version: 0.1 Author: Dan Mueller [d.mueller@qut.edu.au] Copyright (c) 2005 Queensland University of Technology. All rights reserved. See giftCopyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #define GIFT_DEBUG_PRINT 0 #if defined(_MSC_VER) //Warning about: identifier was truncated to '255' characters in the debug information (MVC6.0 Debug) #pragma warning( disable : 4786 ) #endif #include #include "itkArray2D.h" #include "giftBiorthogonalWaveletOperator.h" #include "vnl_math.h" ///////////////////////////////////////////////////////////// //Test helper method //NOTE: type = 0: Low-pass, Deconstruct //NOTE: type = 1: High-pass, Deconstruct //NOTE: type = 2: Low-pass, Reconstruct //NOTE: type = 3: High-pass, Reconstruct template bool giftTestBiorOperatorRadiusInstance(gift::BiorthogonalWaveletOperator bior, unsigned int expectedRadius, unsigned int type) { bool success = true; //Test Low-pass, Analysis for (unsigned int dim=0; dim < VDimension; dim++) { //Setup bior bior.SetDirection(dim); switch (type) { case 0: bior.SetLowpassDeconstruction(); break; case 1: bior.SetHighpassDeconstruction(); break; case 2: bior.SetLowpassReconstruction(); break; case 3: bior.SetHighpassReconstruction(); break; } bior.CreateDirectional(); //Get and test radius unsigned int returnedRadius = bior.GetRadius(dim); if (returnedRadius != expectedRadius) { std::cout << "ERROR: bior" << bior.GetNameMajor() << "." << bior.GetNameMinor() << " expected radius " << expectedRadius << " but gift::BiorthogonalWaveletOperator.GetRadius() returned " << returnedRadius << std::endl; success = false; } } return success; } ///////////////////////////////////////////////////////////// //Test BiorothogonalOperator radius for 2D and 3D template bool giftTestBiorOperatorRadiusDim() { bool success = true; //Declare type of biorDWT operator typedef unsigned char InternalPixelType ; const unsigned int Dimension = 2; typedef gift::BiorthogonalWaveletOperator BiorWavelet; //NOTE: type = 0: Low-pass, Deconstruct //NOTE: type = 1: High-pass, Deconstruct //NOTE: type = 2: Low-pass, Reconstruct //NOTE: type = 3: High-pass, Reconstruct unsigned int type = 0; BiorWavelet bior11(gift::BiorthogonalWaveletOperator::Bior_1_1); success &= giftTestBiorOperatorRadiusInstance(bior11, 1, type); BiorWavelet bior13(gift::BiorthogonalWaveletOperator::Bior_1_3); success &= giftTestBiorOperatorRadiusInstance(bior13, 3, type); BiorWavelet bior15(gift::BiorthogonalWaveletOperator::Bior_1_5); success &= giftTestBiorOperatorRadiusInstance(bior15, 5, type); BiorWavelet bior22(gift::BiorthogonalWaveletOperator::Bior_2_2); success &= giftTestBiorOperatorRadiusInstance(bior22, 3, type); BiorWavelet bior24(gift::BiorthogonalWaveletOperator::Bior_2_4); success &= giftTestBiorOperatorRadiusInstance(bior24, 5, type); //TODO: //BiorWavelet bior26(gift::BiorthogonalWaveletOperator::Bior_2_6); //success &= giftTestBiorOperatorRadiusInstance(bior26, ???, type); //TODO: //BiorWavelet bior28(gift::BiorthogonalWaveletOperator::Bior_2_8); //success &= giftTestBiorOperatorRadiusInstance(bior28, ???, type); BiorWavelet bior31(gift::BiorthogonalWaveletOperator::Bior_3_1); success &= giftTestBiorOperatorRadiusInstance(bior31, 2, type); BiorWavelet bior33(gift::BiorthogonalWaveletOperator::Bior_3_3); success &= giftTestBiorOperatorRadiusInstance(bior33, 4, type); BiorWavelet bior35(gift::BiorthogonalWaveletOperator::Bior_3_5); success &= giftTestBiorOperatorRadiusInstance(bior35, 6, type); //TODO: //BiorWavelet bior37(gift::BiorthogonalWaveletOperator::Bior_3_7); //success &= giftTestBiorOperatorRadiusInstance(bior37, ???, type); //TODO: //BiorWavelet bior39(gift::BiorthogonalWaveletOperator::Bior_3_9); //success &= giftTestBiorOperatorRadiusInstance(bior39, ???, type); //TODO: //BiorWavelet bior44(gift::BiorthogonalWaveletOperator::Bior_4_4); //success &= giftTestBiorOperatorRadiusInstance(bior44, 4, type); //TODO: //BiorWavelet bior55(gift::BiorthogonalWaveletOperator::Bior_5_5); //success &= giftTestBiorOperatorRadiusInstance(bior55, 4, type); //TODO: //BiorWavelet bior68(gift::BiorthogonalWaveletOperator::Bior_6_8); //success &= giftTestBiorOperatorRadiusInstance(bior68, 8, type); //Return result return success; } ///////////////////////////////////////////////////////////// //Test BiorothogonalOperator radius int giftTestBiorOperatorRadius( int, char * [] ) { bool success = true; success &= giftTestBiorOperatorRadiusDim<2>(); success &= giftTestBiorOperatorRadiusDim<3>(); //Return if (success){return EXIT_SUCCESS;} else {return EXIT_FAILURE;} } ///////////////////////////////////////////////////////////// //Test BiorothogonalOperator GetNameMajor() function int giftTestBiorOperatorGetNameMajor( int, char * [] ) { bool success = true; //Declare an instance of the biorDWT operator typedef unsigned char InternalPixelType ; const unsigned int Dimension = 2; typedef gift::BiorthogonalWaveletOperator BiorWavelet; BiorWavelet bior11(gift::BiorthogonalWaveletOperator::Bior_1_1); if (bior11.GetNameMajor() != 1) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior13(gift::BiorthogonalWaveletOperator::Bior_1_3); if (bior13.GetNameMajor() != 1) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior15(gift::BiorthogonalWaveletOperator::Bior_1_5); if (bior15.GetNameMajor() != 1) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior22(gift::BiorthogonalWaveletOperator::Bior_2_2); if (bior22.GetNameMajor() != 2) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior24(gift::BiorthogonalWaveletOperator::Bior_2_4); if (bior24.GetNameMajor() != 2) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior26(gift::BiorthogonalWaveletOperator::Bior_2_6); if (bior26.GetNameMajor() != 2) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior28(gift::BiorthogonalWaveletOperator::Bior_2_8); if (bior28.GetNameMajor() != 2) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior31(gift::BiorthogonalWaveletOperator::Bior_3_1); if (bior31.GetNameMajor() != 3) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior33(gift::BiorthogonalWaveletOperator::Bior_3_3); if (bior33.GetNameMajor() != 3) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior35(gift::BiorthogonalWaveletOperator::Bior_3_5); if (bior35.GetNameMajor() != 3) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior37(gift::BiorthogonalWaveletOperator::Bior_3_7); if (bior37.GetNameMajor() != 3) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior39(gift::BiorthogonalWaveletOperator::Bior_3_9); if (bior39.GetNameMajor() != 3) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior44(gift::BiorthogonalWaveletOperator::Bior_4_4); if (bior44.GetNameMajor() != 4) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior55(gift::BiorthogonalWaveletOperator::Bior_5_5); if (bior55.GetNameMajor() != 5) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior68(gift::BiorthogonalWaveletOperator::Bior_6_8); if (bior68.GetNameMajor() != 6) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } //Return if (success){return EXIT_SUCCESS;} else {return EXIT_FAILURE;} } ///////////////////////////////////////////////////////////// //Test BiorothogonalOperator GetNameMinor() function int giftTestBiorOperatorGetNameMinor( int, char * [] ) { bool success = true; //Declare an instance of the biorDWT operator typedef unsigned char InternalPixelType ; const unsigned int Dimension = 2; typedef gift::BiorthogonalWaveletOperator BiorWavelet; BiorWavelet bior11(gift::BiorthogonalWaveletOperator::Bior_1_1); if (bior11.GetNameMinor() != 1) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior13(gift::BiorthogonalWaveletOperator::Bior_1_3); if (bior13.GetNameMinor() != 3) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior15(gift::BiorthogonalWaveletOperator::Bior_1_5); if (bior15.GetNameMinor() != 5) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior22(gift::BiorthogonalWaveletOperator::Bior_2_2); if (bior22.GetNameMinor() != 2) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior24(gift::BiorthogonalWaveletOperator::Bior_2_4); if (bior24.GetNameMinor() != 4) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior26(gift::BiorthogonalWaveletOperator::Bior_2_6); if (bior26.GetNameMinor() != 6) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior28(gift::BiorthogonalWaveletOperator::Bior_2_8); if (bior28.GetNameMinor() != 8) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior31(gift::BiorthogonalWaveletOperator::Bior_3_1); if (bior31.GetNameMinor() != 1) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior33(gift::BiorthogonalWaveletOperator::Bior_3_3); if (bior33.GetNameMinor() != 3) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior35(gift::BiorthogonalWaveletOperator::Bior_3_5); if (bior35.GetNameMinor() != 5) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior37(gift::BiorthogonalWaveletOperator::Bior_3_7); if (bior37.GetNameMinor() != 7) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior39(gift::BiorthogonalWaveletOperator::Bior_3_9); if (bior39.GetNameMinor() != 9) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior44(gift::BiorthogonalWaveletOperator::Bior_4_4); if (bior44.GetNameMinor() != 4) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior55(gift::BiorthogonalWaveletOperator::Bior_5_5); if (bior55.GetNameMinor() != 5) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } BiorWavelet bior68(gift::BiorthogonalWaveletOperator::Bior_6_8); if (bior68.GetNameMinor() != 8) { std::cout << "ERROR: gift::BiorthogonalWaveletOperator.GetNameMajor() returns incorrect result" << std::endl; success = false; } //Return if (success){return EXIT_SUCCESS;} else {return EXIT_FAILURE;} }