Skip to content

Commit

Permalink
Add stereographic support
Browse files Browse the repository at this point in the history
  • Loading branch information
mcm001 committed Jan 6, 2024
1 parent fc730d4 commit 86ed8ea
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 4 deletions.
23 changes: 22 additions & 1 deletion src/mrcal_wrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,13 @@ mrcal_result::~mrcal_result() {
return;
}

bool unproject_mrcal(cv::Mat& src, cv::Mat& dst, cv::Mat& cameraMat, cv::Mat& distCoeffs, CameraLensModel lensModel) {
bool unproject_mrcal(cv::Mat& src, cv::Mat& dst, cv::Mat& cameraMat, cv::Mat& distCoeffs, CameraLensModel lensModel,
// Extra stuff for splined stereographic models
uint16_t order,
uint16_t Nx,
uint16_t Ny,
uint16_t fov_x_deg
) {

mrcal_lensmodel_t mrcal_lensmodel;
switch (lensModel) {
Expand All @@ -370,6 +376,21 @@ bool unproject_mrcal(cv::Mat& src, cv::Mat& dst, cv::Mat& cameraMat, cv::Mat& di
case CameraLensModel::LENSMODEL_OPENCV8:
mrcal_lensmodel.type = MRCAL_LENSMODEL_OPENCV8;
break;
case CameraLensModel::LENSMODEL_STEREOGRAPHIC:
mrcal_lensmodel.type = MRCAL_LENSMODEL_STEREOGRAPHIC;
break;
case CameraLensModel::LENSMODEL_SPLINED_STEREOGRAPHIC:
mrcal_lensmodel.type = MRCAL_LENSMODEL_SPLINED_STEREOGRAPHIC;

/* Maximum degree of each 1D polynomial. This is almost certainly 2 */
mrcal_lensmodel.LENSMODEL_SPLINED_STEREOGRAPHIC__config.fov_x_deg = fov_x_deg;
/* The horizontal field of view. Not including fov_y. It's proportional with */
/* Ny and Nx */
mrcal_lensmodel.LENSMODEL_SPLINED_STEREOGRAPHIC__config.order = order;
/* We have a Nx by Ny grid of control points */
mrcal_lensmodel.LENSMODEL_SPLINED_STEREOGRAPHIC__config.Nx = Nx;
mrcal_lensmodel.LENSMODEL_SPLINED_STEREOGRAPHIC__config.Ny = Ny;
break;
default:
std::cerr << "Unknown lensmodel\n";
return false;
Expand Down
12 changes: 9 additions & 3 deletions src/mrcal_wrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,14 @@ std::unique_ptr<mrcal_result> mrcal_main(
enum class CameraLensModel {
LENSMODEL_OPENCV5 = 0,
LENSMODEL_OPENCV8,
LENSMODEL_STERIOGRAPHIC,
LENSMODEL_SPLIEND_STERIOGRAPHIC
LENSMODEL_STEREOGRAPHIC,
LENSMODEL_SPLINED_STEREOGRAPHIC
};

bool unproject_mrcal(cv::Mat& src, cv::Mat& dst, cv::Mat& cameraMat, cv::Mat& distCoeffs, CameraLensModel lensModel);
bool unproject_mrcal(cv::Mat& src, cv::Mat& dst, cv::Mat& cameraMat, cv::Mat& distCoeffs, CameraLensModel lensModel,
// Extra stuff for splined stereographic models
uint16_t order,
uint16_t Nx,
uint16_t Ny,
uint16_t fov_x_deg
);

0 comments on commit 86ed8ea

Please sign in to comment.