56 default:
assert(!
"Unknown distortion model");
70 double focal_length = libmv_camera_intrinsics_options->
focal_length;
105 if (polynomial_intrinsics->
k1() != k1 ||
106 polynomial_intrinsics->
k2() != k2 ||
107 polynomial_intrinsics->
k3() != k3) {
120 double k1 = libmv_camera_intrinsics_options->
division_k1;
121 double k2 = libmv_camera_intrinsics_options->
division_k2;
123 if (division_intrinsics->
k1() != k1 || division_intrinsics->
k2() != k2) {
137 double k1 = libmv_camera_intrinsics_options->
nuke_k1;
138 double k2 = libmv_camera_intrinsics_options->
nuke_k2;
140 if (nuke_intrinsics->
k1() != k1 || nuke_intrinsics->
k2() != k2) {
154 double k1 = libmv_camera_intrinsics_options->
brown_k1;
155 double k2 = libmv_camera_intrinsics_options->
brown_k2;
156 double k3 = libmv_camera_intrinsics_options->
brown_k3;
157 double k4 = libmv_camera_intrinsics_options->
brown_k4;
159 if (brown_intrinsics->
k1() != k1 || brown_intrinsics->
k2() != k2 ||
160 brown_intrinsics->
k3() != k3 || brown_intrinsics->
k4() != k4) {
164 double p1 = libmv_camera_intrinsics_options->
brown_p1;
165 double p2 = libmv_camera_intrinsics_options->
brown_p2;
167 if (brown_intrinsics->
p1() != p1 || brown_intrinsics->
p2() != p2) {
173 default:
assert(!
"Unknown distortion model");
199 camera_intrinsics_options->
polynomial_k1 = polynomial_intrinsics->
k1();
200 camera_intrinsics_options->
polynomial_k2 = polynomial_intrinsics->
k2();
201 camera_intrinsics_options->
polynomial_k3 = polynomial_intrinsics->
k3();
202 camera_intrinsics_options->
polynomial_p1 = polynomial_intrinsics->
p1();
203 camera_intrinsics_options->
polynomial_p2 = polynomial_intrinsics->
p2();
212 camera_intrinsics_options->
division_k1 = division_intrinsics->
k1();
213 camera_intrinsics_options->
division_k2 = division_intrinsics->
k2();
221 camera_intrinsics_options->
nuke_k1 = nuke_intrinsics->
k1();
222 camera_intrinsics_options->
nuke_k2 = nuke_intrinsics->
k2();
231 camera_intrinsics_options->
brown_k1 = brown_intrinsics->
k1();
232 camera_intrinsics_options->
brown_k2 = brown_intrinsics->
k2();
233 camera_intrinsics_options->
brown_k3 = brown_intrinsics->
k3();
234 camera_intrinsics_options->
brown_k4 = brown_intrinsics->
k4();
235 camera_intrinsics_options->
brown_p1 = brown_intrinsics->
p1();
236 camera_intrinsics_options->
brown_p2 = brown_intrinsics->
p2();
240 default:
assert(!
"Unknown distortion model");
246 const unsigned char* source_image,
251 unsigned char* destination_image) {
254 source_image, width, height, overscan, channels, destination_image);
259 const float* source_image,
264 float* destination_image) {
267 source_image, width, height, overscan, channels, destination_image);
272 const unsigned char* source_image,
277 unsigned char* destination_image) {
280 source_image, width, height, overscan, channels, destination_image);
290 float* destination_image) {
293 source_image, width, height, overscan, channels, destination_image);
357 camera_intrinsics_options->
nuke_k2);
366 camera_intrinsics_options->
brown_k1,
367 camera_intrinsics_options->
brown_k2,
368 camera_intrinsics_options->
brown_k3,
369 camera_intrinsics_options->
brown_k4);
371 camera_intrinsics_options->
brown_p1,
372 camera_intrinsics_options->
brown_p2);
377 default:
assert(!
"Unknown distortion model");
397 default:
assert(!
"Unknown distortion model");
401 return camera_intrinsics;
static constexpr int image_width
static constexpr int image_height
void SetRadialDistortion(double k1, double k2, double k3, double k4)
void SetTangentialDistortion(double p1, double p2)
virtual void ApplyIntrinsics(double normalized_x, double normalized_y, double *image_x, double *image_y) const =0
void DistortBuffer(const PixelType *input_buffer, int width, int height, double overscan, int channels, PixelType *output_buffer)
void SetPrincipalPoint(double cx, double cy)
double principal_point_y() const
void SetFocalLength(double focal_x, double focal_y)
virtual void InvertIntrinsics(double image_x, double image_y, double *normalized_x, double *normalized_y) const =0
void SetImageSize(int width, int height)
double principal_point_x() const
void UndistortBuffer(const PixelType *input_buffer, int width, int height, double overscan, int channels, PixelType *output_buffer)
double focal_length() const
virtual DistortionModelType GetDistortionModelType() const =0
void SetDistortion(double k1, double k2)
void SetDistortion(double k1, double k2)
void SetRadialDistortion(double k1, double k2, double k3)
#define assert(assertion)
void libmv_cameraIntrinsicsUndistortFloat(const libmv_CameraIntrinsics *libmv_intrinsics, const float *source_image, int width, int height, float overscan, int channels, float *destination_image)
void libmv_cameraIntrinsicsDestroy(libmv_CameraIntrinsics *libmv_intrinsics)
libmv_CameraIntrinsics * libmv_cameraIntrinsicsCopy(const libmv_CameraIntrinsics *libmv_intrinsics)
CameraIntrinsics * libmv_cameraIntrinsicsCreateFromOptions(const libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
void libmv_cameraIntrinsicsUndistortByte(const libmv_CameraIntrinsics *libmv_intrinsics, const unsigned char *source_image, int width, int height, float overscan, int channels, unsigned char *destination_image)
void libmv_cameraIntrinsicsDistortByte(const struct libmv_CameraIntrinsics *libmv_intrinsics, const unsigned char *source_image, int width, int height, float overscan, int channels, unsigned char *destination_image)
void libmv_cameraIntrinsicsApply(const struct libmv_CameraIntrinsics *libmv_intrinsics, double x, double y, double *x1, double *y1)
void libmv_cameraIntrinsicsDistortFloat(const libmv_CameraIntrinsics *libmv_intrinsics, float *source_image, int width, int height, float overscan, int channels, float *destination_image)
static void libmv_cameraIntrinsicsFillFromOptions(const libmv_CameraIntrinsicsOptions *camera_intrinsics_options, CameraIntrinsics *camera_intrinsics)
void libmv_cameraIntrinsicsUpdate(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options, libmv_CameraIntrinsics *libmv_intrinsics)
void libmv_cameraIntrinsicsInvert(const struct libmv_CameraIntrinsics *libmv_intrinsics, double x, double y, double *x1, double *y1)
void libmv_cameraIntrinsicsExtractOptions(const libmv_CameraIntrinsics *libmv_intrinsics, libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
libmv_CameraIntrinsics * libmv_cameraIntrinsicsNew(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options)
@ LIBMV_DISTORTION_MODEL_POLYNOMIAL
@ LIBMV_DISTORTION_MODEL_NUKE
@ LIBMV_DISTORTION_MODEL_BROWN
@ LIBMV_DISTORTION_MODEL_DIVISION
struct libmv_CameraIntrinsics libmv_CameraIntrinsics
@ DISTORTION_MODEL_POLYNOMIAL
@ DISTORTION_MODEL_DIVISION
#define LIBMV_OBJECT_NEW(type,...)
#define LIBMV_OBJECT_DELETE(what, type)