Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
TestCalibratedPyramid.cpp

shows usage of calibrated pyramid

Author
MIP
Date
2007
/* This file is part of the BIAS library (Basic ImageAlgorithmS).
Copyright (C) 2003-2009 (see file CONTACT for details)
Multimediale Systeme der Informationsverarbeitung
Institut fuer Informatik
Christian-Albrechts-Universitaet Kiel
BIAS is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
BIAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with BIAS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*/
/**
* @example TestCalibratedPyramid.cpp
* @relates CalibratedPyramid
* @brief shows usage of calibrated pyramid
* @author MIP
* @date 2007
*/
#include <Base/Geometry/KMatrix.hh>
#include <Geometry/ProjectionParametersPerspective.hh>
#include <Image/CalibratedPyramid.hh>
#include <vector>
using namespace BIAS;
using namespace std;
SharedPtr<ProjectionParametersBase> GetProjPersp(const double focal)
{
// generate projection parameters with fake K matrix
K[0][0] = K[1][1] = focal;
K[0][2] = 320.0; K[1][2] = 240.0;
projpersp->SetK(K);
DynamicCast<ProjectionParametersBase>(projpersp);
BIASASSERT(proj);
return proj;
}
void GetCalibratedPyramid(CalibratedPyramid<unsigned char>& cp)
{
im->FillImageWithXValue();
const double focal = 800.0;
ci.image = im;
ci.projection = GetProjPersp(focal);
cp.Init(ci);
}
void TestInit()
{
Image<unsigned char> im(640, 480, 1);
im.FillImageWithXValue();
const int x = 42, y = 42;
unsigned char val = im.GetImageDataArray()[y][x];
const unsigned size = 2;
const double factor = 4.0;
cp.Init(ci, size, factor);
if (cp.IsEmpty()) { BIASABORT; }
if (cp.Size()!=size) { BIASABORT; }
if (!Equal(cp.GetRescaleFactor(), factor)) { BIASABORT; }
// test access
unsigned char mval = cp[0].image->GetImageDataArray()[y][x];
if (val != mval) { BIASABORT; }
}
void TestSTL()
{
vector<CalibratedPyramid<unsigned char> > vcp(3);
GetCalibratedPyramid(cp);
vcp[1] = cp;
}
int main(int argc, char *argv[])
{
TestInit();
TestSTL();
return 0;
}