added a safe projection method to Calibrated and SimpleCamera. added a positiveDepth property to ARToolkitMeasurement so that the visibility can be checked
							parent
							
								
									571c0da8d1
								
							
						
					
					
						commit
						100b9b2eec
					
				| 
						 | 
				
			
			@ -8,6 +8,8 @@
 | 
			
		|||
#include "SimpleCamera.h"
 | 
			
		||||
#include "CalibratedCamera.h"
 | 
			
		||||
 | 
			
		||||
using namespace std;
 | 
			
		||||
 | 
			
		||||
namespace gtsam {
 | 
			
		||||
 | 
			
		||||
	/* ************************************************************************* */
 | 
			
		||||
| 
						 | 
				
			
			@ -24,10 +26,16 @@ namespace gtsam {
 | 
			
		|||
	SimpleCamera::~SimpleCamera() {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Point2 SimpleCamera::project(const Point3 & P) const {
 | 
			
		||||
		Point2 intrinsic = calibrated_.project(P);
 | 
			
		||||
	pair<Point2, bool> SimpleCamera::projectSafe(const Point3& P) const {
 | 
			
		||||
		Point3 cameraPoint = transform_to(calibrated_.pose(), P);
 | 
			
		||||
		Point2 intrinsic = project_to_camera(cameraPoint);
 | 
			
		||||
		Point2 projection = uncalibrate(K_, intrinsic);
 | 
			
		||||
		return projection;
 | 
			
		||||
		return pair<Point2, bool>(projection, cameraPoint.z() > 0);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Point2 SimpleCamera::project(const Point3 & P) const {
 | 
			
		||||
		pair<Point2, bool> projected = projectSafe(P);
 | 
			
		||||
		return projected.first;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	SimpleCamera SimpleCamera::level(const Cal3_S2& K, const Pose2& pose2, double height) {
 | 
			
		||||
| 
						 | 
				
			
			@ -38,6 +46,10 @@ namespace gtsam {
 | 
			
		|||
	// measurement functions and derivatives
 | 
			
		||||
	/* ************************************************************************* */
 | 
			
		||||
 | 
			
		||||
	pair<Point2, bool> projectSafe(const SimpleCamera& camera, const Point3& point) {
 | 
			
		||||
		return camera.projectSafe(point);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Point2 project(const SimpleCamera& camera, const Point3& point) {
 | 
			
		||||
		return camera.project(point);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,6 +37,15 @@ namespace gtsam {
 | 
			
		|||
			return K_;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
		 * project a 3d point to the camera and also check the depth
 | 
			
		||||
		 */
 | 
			
		||||
		std::pair<Point2,bool> projectSafe(const Point3& P) const;
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
		 * project a 3d point to the camera
 | 
			
		||||
		 */
 | 
			
		||||
		Point2 project(const Point3& P) const;
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
| 
						 | 
				
			
			@ -59,6 +68,12 @@ namespace gtsam {
 | 
			
		|||
	// measurement functions and derivatives
 | 
			
		||||
	/* ************************************************************************* */
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * This function receives the camera pose and the landmark location and
 | 
			
		||||
	 returns the location the point is supposed to appear in the image as well as the sign of the depth
 | 
			
		||||
	 */
 | 
			
		||||
	std::pair<Point2, bool> projectSafe(const SimpleCamera& camera, const Point3& point);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * This function receives the camera pose and the landmark location and
 | 
			
		||||
	 returns the location the point is supposed to appear in the image
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue