/usr/include/OTB-5.8/otbInverseLogPolarTransform.h is in libotb-dev 5.8.0+dfsg-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | /*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.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.
=========================================================================*/
#ifndef otbInverseLogPolarTransform_h
#define otbInverseLogPolarTransform_h
#include "otbTransform.h"
namespace otb
{
/** \class InverseLogPolarTransform
* \brief This transform is the back transform of the LogPolarTransform.
*
* Given (x, y) the coordinates of a point in cartesian system, the corresponding
* log-polar coordinates are :
* \f$ \rho = 1/2*log((x-xc)^2+(y+yc)^2) \f$
* \f$ \theta = asin(y-yc)/(\sqrt{(x-xc)^2+(y+yc)^2}) \f$
*
* In this implemenatation, theta is expressed in degree, and the result of the asin function
* is clamped to the [0, 360] range. Please note that since the transform of the center has no meaning
* it is rejected to the point [400, 0], which does not belong to this range. This is done to provide
* a coordinate not likely to belong to a log-polar image buffer.
*
* \sa LogPolarTransform
* \ingroup Transform
*
* \ingroup OTBTransform
*/
template <class TScalarType>
class ITK_EXPORT InverseLogPolarTransform
: public Transform<TScalarType, 2, 2>
{
public:
/** Standard typedef */
typedef InverseLogPolarTransform Self;
typedef Transform<TScalarType, 2, 2> Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Creation through object factory */
itkNewMacro(Self);
/** Runtime information */
itkTypeMacro(InverseLogPolarTransform, Transform);
/** Template related typedefs */
typedef TScalarType ScalarType;
/** Superclass related typedefs */
typedef typename Superclass::InputPointType InputPointType;
typedef typename Superclass::OutputPointType OutputPointType;
typedef typename Superclass::InputVectorType InputVectorType;
typedef typename Superclass::OutputVectorType OutputVectorType;
typedef typename Superclass::InputVnlVectorType InputVnlVectorType;
typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType;
typedef typename Superclass::ParametersType ParametersType;
typedef itk::FixedArray<TScalarType, 2> ScaleType;
/** Set/Get the origin */
itkSetMacro(Center, InputPointType);
itkGetConstReferenceMacro(Center, InputPointType);
/** Set/Get the scales */
itkSetMacro(Scale, ScaleType);
itkGetConstReferenceMacro(Scale, ScaleType);
/**
* Set the transform parameters through the standard interface.
* \param parameters The parameters of the transform.
*/
void SetParameters(const ParametersType& parameters) ITK_OVERRIDE;
/**
* Get the transform parameters through the standard interface.
* \return The parameters of the transform.
*/
ParametersType& GetParameters(void) const ITK_OVERRIDE;
/**
* Set the Fixed Parameters
* \param param The fixed parameters of the transform.
*/
void SetFixedParameters( const ParametersType & param) ITK_OVERRIDE
{ this->m_FixedParameters = param; }
/**
* Get the Fixed Parameters
* \return The Fixed parameters of the transform.
*/
const ParametersType& GetFixedParameters(void) const ITK_OVERRIDE{return this->m_FixedParameters; }
/**
* Transform a point.
* \param point The point to transform.
* \return The transformed point.
*/
using Superclass::TransformVector;
OutputPointType TransformPoint(const InputPointType& point) const ITK_OVERRIDE;
/**
* Transform a vector representing a point.
* \param vector The point to transform.
* \return The transformed point.
*/
OutputVectorType TransformVector(const InputVectorType& vector) const ITK_OVERRIDE;
/**
* Transform a vnl vector representing a point.
* \param vector The point to transform.
* \return The transformed point.
*/
OutputVnlVectorType TransformVector(const InputVnlVectorType& vector) const ITK_OVERRIDE;
protected:
/** Constructor */
InverseLogPolarTransform();
/** Destructor */
~InverseLogPolarTransform() ITK_OVERRIDE;
/** PrintSelf method */
void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
private:
InverseLogPolarTransform(const Self &); // purposely not implemented
void operator =(const Self&); // purposely not implemented
InputPointType m_Center;
ScaleType m_Scale;
};
} // end namespace otb
#ifndef OTB_MANUAL_INSTANTIATION
#include "otbInverseLogPolarTransform.txx"
#endif
#endif
|