Hugin trunk 0.1
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
HuginBase::PTools::Transform Class Reference

Holds transformations for Image -> Pano and the other way. More...

#include <PanoToolsInterface.h>

Public Member Functions

 Transform ()
 construct a new Transform object, without initializing a transformation
 
 ~Transform ()
 
void createTransform (const vigra::Diff2D &srcSize, VariableMap srcVars, Lens::LensProjectionFormat srcProj, const vigra::Diff2D &destSize, PanoramaOptions::ProjectionFormat destProj, const std::vector< double > &destProjParam, double destHFOV, const vigra::Diff2D &origSrcSize)
 initialize pano->image transformation
 
void createTransform (const PanoramaData &pano, unsigned int imgNr, const PanoramaOptions &dest, vigra::Diff2D srcSize=vigra::Diff2D(0, 0))
 create pano -> img transform
 
void createTransform (const SrcPanoImage &src, const PanoramaOptions &dest)
 
void createInvTransform (const vigra::Diff2D &srcSize, VariableMap srcVars, Lens::LensProjectionFormat srcProj, const vigra::Diff2D &destSize, PanoramaOptions::ProjectionFormat destProj, const std::vector< double > &destProjParam, double destHFOV, const vigra::Diff2D &origSrcSize)
 create image->pano transformation
 
void createInvTransform (const PanoramaData &pano, unsigned int imgNr, const PanoramaOptions &dest, vigra::Diff2D srcSize=vigra::Diff2D(0, 0))
 create image->pano transformation
 
void createInvTransform (const SrcPanoImage &src, const PanoramaOptions &dest)
 create image->pano transformation
 
bool transform (double &x_dest, double &y_dest, double x_src, double y_src) const
 excecute transform
 
bool transform (hugin_utils::FDiff2D &dest, const hugin_utils::FDiff2D &src) const
 
bool transformImgCoord (double &x_dest, double &y_dest, double x_src, double y_src) const
 like transform, but return image coordinates, not cartesian coordinates
 
bool transformImgCoordPartial (double &x_dest, double &y_dest, double x_src, double y_src) const
 
bool transformImgCoord (hugin_utils::FDiff2D &dest, const hugin_utils::FDiff2D &src) const
 
bool emitGLSL (std::ostringstream &oss) const
 

Private Member Functions

 Transform (const Transform &)
 
Transformoperator= (const Transform &)
 
void updatePTData (const vigra::Diff2D &srcSize, const VariableMap &srcVars, Lens::LensProjectionFormat &srcProj, const vigra::Diff2D &destSize, PanoramaOptions::ProjectionFormat &destProj, const std::vector< double > &destProjParam, double destHFOV)
 

Private Attributes

bool m_initialized
 
Image m_srcImage
 
Image m_dstImage
 
struct MakeParams m_mp
 
struct fDesc m_stack [15]
 
double m_srcTX
 
double m_srcTY
 
double m_destTX
 
double m_destTY
 

Detailed Description

Holds transformations for Image -> Pano and the other way.

Definition at line 105 of file PanoToolsInterface.h.

Constructor & Destructor Documentation

◆ Transform() [1/2]

HuginBase::PTools::Transform::Transform ( )
inline

construct a new Transform object, without initializing a transformation

use createTransform or createInvTransform to create a transformation, and transform to execute it.

Definition at line 115 of file PanoToolsInterface.h.

References threshold().

◆ ~Transform()

HuginBase::PTools::Transform::~Transform ( )

◆ Transform() [2/2]

HuginBase::PTools::Transform::Transform ( const Transform )
private

Member Function Documentation

◆ createInvTransform() [1/3]

void HuginBase::PTools::Transform::createInvTransform ( const PanoramaData pano,
unsigned int  imgNr,
const PanoramaOptions dest,
vigra::Diff2D  srcSize = vigra::Diff2D(0,0) 
)

◆ createInvTransform() [2/3]

void HuginBase::PTools::Transform::createInvTransform ( const SrcPanoImage src,
const PanoramaOptions dest 
)

create image->pano transformation

Definition at line 88 of file PanoToolsInterface.cpp.

References createInvTransform(), and threshold().

◆ createInvTransform() [3/3]

void HuginBase::PTools::Transform::createInvTransform ( const vigra::Diff2D &  srcSize,
VariableMap  srcVars,
Lens::LensProjectionFormat  srcProj,
const vigra::Diff2D &  destSize,
PanoramaOptions::ProjectionFormat  destProj,
const std::vector< double > &  destProjParam,
double  destHFOV,
const vigra::Diff2D &  origSrcSize 
)

create image->pano transformation

Parameters
srcSizesize of input image
variablesof input image
srcProjprojection of the image
destSizeoutput panorama size
destProjpanorama projection
destHFOVHFOV of panorama
origSrcSizeoriginal input image size, 0,0 if the same as srcSize.

origSrcSize is needed, because the variables are only valid for the original input size. To transform a smaller image, like a preview image, the parameters have to be adjusted. The origial image size, for which variables are valid needs to be know for this.

Definition at line 206 of file PanoToolsInterface.cpp.

References m_destTX, m_destTY, m_dstImage, m_mp, m_srcImage, m_srcTX, m_srcTY, m_stack, map_get(), threshold(), and updatePTData().

Referenced by PreviewIdentifyTool::AfterDrawImagesEvent(), HuginBase::PTOptEstimator::agree(), HuginBase::CalculateImageOverlap::CalculateImageOverlap(), createInvTransform(), createInvTransform(), LensCalImageCtrl::DrawView(), CPEditorPanel::EstimatePoint(), GetImageRotatedTo(), GreatCircleArc::GreatCircleArc(), PreviewControlPointTool::MakeTransforms(), OutputProjectionInfo::OutputProjectionInfo(), PointFineTuneProjectionAware(), StraightLineFromSphericals::StraightLineFromSphericals(), HuginBase::Panorama::transferMask(), LayoutRemapper::UpdateAndResetIndex(), VertexCoordRemapper::UpdateAndResetIndex(), PreviewLayoutLinesTool::updateImageCentres(), and CPEditorPanel::UpdateTransforms().

◆ createTransform() [1/3]

void HuginBase::PTools::Transform::createTransform ( const PanoramaData pano,
unsigned int  imgNr,
const PanoramaOptions dest,
vigra::Diff2D  srcSize = vigra::Diff2D(0,0) 
)

◆ createTransform() [2/3]

void HuginBase::PTools::Transform::createTransform ( const SrcPanoImage src,
const PanoramaOptions dest 
)

Definition at line 122 of file PanoToolsInterface.cpp.

References createTransform(), and threshold().

◆ createTransform() [3/3]

void HuginBase::PTools::Transform::createTransform ( const vigra::Diff2D &  srcSize,
VariableMap  srcVars,
Lens::LensProjectionFormat  srcProj,
const vigra::Diff2D &  destSize,
PanoramaOptions::ProjectionFormat  destProj,
const std::vector< double > &  destProjParam,
double  destHFOV,
const vigra::Diff2D &  origSrcSize 
)

initialize pano->image transformation

Todo:
The next few functions could be rewritten to make more effective use of SrcPanoImages.

Steps of transform:

  1. pano_proj -> erect
  2. rotate equirect?? ( rotate yaw in screenpoints ? )
  3. spherical -> erect ??
  4. persp_sphere ( rotate point with rotation matrix)
  5. sphere_tp -> image_proj
  6. distortion correction
  7. shift image origin
  8. shear image

Definition at line 158 of file PanoToolsInterface.cpp.

References m_destTX, m_destTY, m_dstImage, m_mp, m_srcImage, m_srcTX, m_srcTY, m_stack, map_get(), threshold(), and updatePTData().

Referenced by HuginLines::_getFilteredLines(), AddGeometricControlPoint(), PreviewEditCPTool::AddLineCP(), HuginBase::PTOptEstimator::agree(), PreviewColorPickerTool::CalcCorrection(), HuginBase::CalculateImageOverlap::CalculateImageOverlap(), createTransform(), createTransform(), OverviewOutlinesTool::DrawRect(), HuginBase::estimateOutputROI(), CPEditorPanel::EstimatePoint(), wxGraphTools::GetDistortionGraph(), ToolHelper::GetImagesUnderPos(), main(), GLPreviewFrame::OnCreateCP(), LensCalImageCtrl::OnMouseEvent(), OutputProjectionInfo::OutputProjectionInfo(), PointFineTuneProjectionAware(), PanoDetector::RemapBackKeypoints(), RemapImage(), HuginBase::AllPointSampler::sampleAllPanoPoints(), HuginBase::RandomPointSampler::sampleRandomPanoPoints(), HuginBase::Panorama::transferMask(), ChoosyRemapper::UpdateAndResetIndex(), TexCoordRemapper::UpdateAndResetIndex(), PreviewLayoutLinesTool::updateLineInformation(), PreviewPanel::updatePreview(), and CPEditorPanel::UpdateTransforms().

◆ emitGLSL()

bool HuginBase::PTools::Transform::emitGLSL ( std::ostringstream &  oss) const

◆ operator=()

Transform & HuginBase::PTools::Transform::operator= ( const Transform )
private

◆ transform() [1/2]

bool HuginBase::PTools::Transform::transform ( double x_dest,
double y_dest,
double  x_src,
double  y_src 
) const

excecute transform

Definition at line 238 of file PanoToolsInterface.cpp.

References m_stack, and threshold().

Referenced by wxGraphTools::GetDistortionGraph(), and PreviewPanel::mouse2erect().

◆ transform() [2/2]

bool HuginBase::PTools::Transform::transform ( hugin_utils::FDiff2D dest,
const hugin_utils::FDiff2D src 
) const

Definition at line 246 of file PanoToolsInterface.cpp.

References m_stack, and threshold().

◆ transformImgCoord() [1/2]

bool HuginBase::PTools::Transform::transformImgCoord ( double x_dest,
double y_dest,
double  x_src,
double  y_src 
) const

◆ transformImgCoord() [2/2]

bool HuginBase::PTools::Transform::transformImgCoord ( hugin_utils::FDiff2D dest,
const hugin_utils::FDiff2D src 
) const
inline

Definition at line 219 of file PanoToolsInterface.h.

References threshold().

◆ transformImgCoordPartial()

bool HuginBase::PTools::Transform::transformImgCoordPartial ( double x_dest,
double y_dest,
double  x_src,
double  y_src 
) const

Definition at line 519 of file PanoToolsTransformGPU.cpp.

References m_destTX, m_destTY, m_srcTX, m_srcTY, m_stack, and threshold().

◆ updatePTData()

void HuginBase::PTools::Transform::updatePTData ( const vigra::Diff2D &  srcSize,
const VariableMap srcVars,
Lens::LensProjectionFormat srcProj,
const vigra::Diff2D &  destSize,
PanoramaOptions::ProjectionFormat destProj,
const std::vector< double > &  destProjParam,
double  destHFOV 
)
private

Member Data Documentation

◆ m_destTX

double HuginBase::PTools::Transform::m_destTX
private

◆ m_destTY

double HuginBase::PTools::Transform::m_destTY
private

◆ m_dstImage

Image HuginBase::PTools::Transform::m_dstImage
private

◆ m_initialized

bool HuginBase::PTools::Transform::m_initialized
private

Definition at line 237 of file PanoToolsInterface.h.

Referenced by updatePTData(), and ~Transform().

◆ m_mp

struct MakeParams HuginBase::PTools::Transform::m_mp
private

Definition at line 241 of file PanoToolsInterface.h.

Referenced by createInvTransform(), and createTransform().

◆ m_srcImage

Image HuginBase::PTools::Transform::m_srcImage
private

◆ m_srcTX

double HuginBase::PTools::Transform::m_srcTX
private

◆ m_srcTY

double HuginBase::PTools::Transform::m_srcTY
private

◆ m_stack

struct fDesc HuginBase::PTools::Transform::m_stack[15]
private

The documentation for this class was generated from the following files: