
#ifndef bardPnPRegistration_h
#define bardPnPRegistration_h

#include "bardRegistrationInterface.h"

namespace bard
{

/**
 * \class PnPRegistration
 * \brief Implements 2D/3D registration using OpenCV PnP algorithm.
 */
class PnPRegistration : public RegistrationInterface {

public:

  PnPRegistration();
  virtual ~PnPRegistration();

  /**
  * \brief Takes 3D points and 2D points, and computes a pose matrix.
  */
  virtual bool DoRegistration(
      const cv::Matx33d& intrinsics,
      const std::vector<ModelData>& model,
      const std::vector<TagData>& tags,
      vtkMatrix4x4& outputMatrix
      );
};

} // end namespace

#endif
