Basic Image AlgorithmS Library 2.8.0

TrifocalTensorBase.hh

00001 /* 
00002 This file is part of the BIAS library (Basic ImageAlgorithmS).
00003 
00004 Copyright (C) 2003-2009    (see file CONTACT for details)
00005   Multimediale Systeme der Informationsverarbeitung
00006   Institut fuer Informatik
00007   Christian-Albrechts-Universitaet Kiel
00008 
00009 
00010 BIAS is free software; you can redistribute it and/or modify
00011 it under the terms of the GNU Lesser General Public License as published by
00012 the Free Software Foundation; either version 2.1 of the License, or
00013 (at your option) any later version.
00014 
00015 BIAS is distributed in the hope that it will be useful,
00016 but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018 GNU Lesser General Public License for more details.
00019 
00020 You should have received a copy of the GNU Lesser General Public License
00021 along with BIAS; if not, write to the Free Software
00022 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 */
00024 
00025 
00026 #ifndef __TrifocalTensorBase_hh__
00027 #define __TrifocalTensorBase_hh__
00028 
00029 #include <Base/Math/Tensor3D3x3x3.hh>
00030 #include <Base/Math/Matrix3x3.hh>
00031 #include <Base/Math/Vector3.hh>
00032 #include <Base/Geometry/RMatrixBase.hh>
00033 #include <Base/Geometry/PMatrixBase.hh>
00034 #include <Base/Geometry/HomgPoint2D.hh>
00035 #include <Base/Geometry/HomgPoint3D.hh>
00036 
00037 #define TRIFOCALTENSOR_TYPE double
00038 
00039 namespace BIAS {
00040 
00041   class BIASGeometryBase_EXPORT TrifocalTensorBase
00042     : public Tensor3D3x3x3<TRIFOCALTENSOR_TYPE>
00043   {
00044   public:
00045     TrifocalTensorBase();
00046     TrifocalTensorBase(const TrifocalTensorBase& t);
00047 
00048     ~TrifocalTensorBase();
00049 
00050     void Dump();
00051 
00052     /** composition for "normalized" (with K^-1) image points */
00053     void Compose(RMatrixBase& R1, RMatrixBase& R2, RMatrixBase& R3,
00054                  Vector3<double>& C1, Vector3<double>& C2, 
00055                  Vector3<double>& C3);
00056     void Compose(RMatrixBase& R1, RMatrixBase& R2, RMatrixBase& R3,
00057                  HomgPoint3D& C1, HomgPoint3D& C2, HomgPoint3D& C3);
00058 
00059     /** composition for R1=I and C1=0 */
00060     void Compose(RMatrixBase& R2, RMatrixBase& R3, Vector3<double>& C2, 
00061                  Vector3<double>& C3);
00062     void Compose(RMatrixBase& R2, RMatrixBase& R3,
00063                  HomgPoint3D& C2, HomgPoint3D& C3);
00064    
00065     void CheckPointCorr(HomgPoint2D& p1, HomgPoint2D& p2, HomgPoint2D& p3,
00066                         Matrix3x3<double>& res);
00067     
00068 
00069 
00070     TrifocalTensorBase& operator=(const TrifocalTensorBase& t);
00071 
00072   protected:
00073     
00074   }; // class
00075 
00076 
00077 } // namespace
00078 
00079 #endif // __TrifocalTensorBase_hh__
 All Classes Functions Variables Typedefs Enumerations Enumerator Friends