Berkeley SfM
Public Member Functions | Public Attributes | List of all members
bsfm::PnPRansacModel Struct Reference

#include <pnp_ransac_problem.h>

Inheritance diagram for bsfm::PnPRansacModel:
bsfm::RansacModel< Observation::Ptr >

Public Member Functions

 PnPRansacModel ()
 
virtual ~PnPRansacModel ()
 
 PnPRansacModel (const Camera &camera, const std::vector< Observation::Ptr > &matches)
 
virtual double Error () const
 
virtual bool IsGoodFit (const Observation::Ptr &observation, double error_tolerance)
 
double EvaluateReprojectionError (const Observation::Ptr &observation) const
 
- Public Member Functions inherited from bsfm::RansacModel< Observation::Ptr >
 RansacModel ()
 
virtual ~RansacModel ()
 

Public Attributes

Camera camera_
 
std::vector< Observation::Ptrmatches_
 
double error_
 

Detailed Description

Definition at line 67 of file pnp_ransac_problem.h.

Constructor & Destructor Documentation

bsfm::PnPRansacModel::PnPRansacModel ( )

Definition at line 52 of file pnp_ransac_problem.cpp.

53  : camera_(Camera()),
54  matches_(std::vector<Observation::Ptr>()),
55  error_(0.0) {}
std::vector< Observation::Ptr > matches_
bsfm::PnPRansacModel::~PnPRansacModel ( )
virtual

Definition at line 66 of file pnp_ransac_problem.cpp.

66 {}
bsfm::PnPRansacModel::PnPRansacModel ( const Camera camera,
const std::vector< Observation::Ptr > &  matches 
)

Definition at line 59 of file pnp_ransac_problem.cpp.

61  : camera_(camera),
62  matches_(matches),
63  error_(0.0) {}
std::vector< Observation::Ptr > matches_

Member Function Documentation

double bsfm::PnPRansacModel::Error ( ) const
virtual

Implements bsfm::RansacModel< Observation::Ptr >.

Definition at line 69 of file pnp_ransac_problem.cpp.

69  {
70  return error_;
71 }
double bsfm::PnPRansacModel::EvaluateReprojectionError ( const Observation::Ptr observation) const

Definition at line 91 of file pnp_ransac_problem.cpp.

92  {
93  CHECK_NOTNULL(observation.get());
94 
95  // Unpack this observation (extract Feature and Landmark).
96  Feature feature = observation->Feature();
97  Landmark::Ptr landmark = observation->GetLandmark();
98  CHECK_NOTNULL(landmark.get());
99 
100  // Extract position of this landmark.
101  Point3D point = landmark->Position();
102 
103  // Project into this camera.
104  double u = 0.0, v = 0.0;
105  const bool in_camera =
106  camera_.WorldToImage(point.X(), point.Y(), point.Z(), &u, &v);
107 
108  // Check that the landmark projects into the image.
109  if (!in_camera)
110  return std::numeric_limits<double>::infinity();
111 
112  // Compute error and return.
113  double delta_u = u - feature.u_;
114  double delta_v = v - feature.v_;
115  double error = delta_u*delta_u + delta_v*delta_v;
116 
117  return error;
118 }
bool WorldToImage(double wx, double wy, double wz, double *u_distorted, double *v_distorted) const
Definition: camera.cpp:121
std::shared_ptr< Landmark > Ptr
Definition: landmark.h:66
bool bsfm::PnPRansacModel::IsGoodFit ( const Observation::Ptr observation,
double  error_tolerance 
)
virtual

Implements bsfm::RansacModel< Observation::Ptr >.

Definition at line 74 of file pnp_ransac_problem.cpp.

75  {
76  // Get error.
77  double error = PnPRansacModel::EvaluateReprojectionError(observation);
78 
79  // Did not project into the image.
80  if (error < 0.0)
81  return false;
82 
83  // Check tolerance.
84  if (error <= error_tolerance)
85  return true;
86  return false;
87 }
double EvaluateReprojectionError(const Observation::Ptr &observation) const

Member Data Documentation

Camera bsfm::PnPRansacModel::camera_

Definition at line 86 of file pnp_ransac_problem.h.

double bsfm::PnPRansacModel::error_

Definition at line 88 of file pnp_ransac_problem.h.

std::vector<Observation::Ptr> bsfm::PnPRansacModel::matches_

Definition at line 87 of file pnp_ransac_problem.h.


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