56 default: assert(!
"Unknown distortion model");
70 double focal_length = libmv_camera_intrinsics_options->
focal_length;
108 if (polynomial_intrinsics->
k1() != k1 ||
109 polynomial_intrinsics->
k2() != k2 ||
110 polynomial_intrinsics->
k3() != k3) {
123 double k1 = libmv_camera_intrinsics_options->
division_k1;
124 double k2 = libmv_camera_intrinsics_options->
division_k2;
126 if (division_intrinsics->
k1() != k1 || division_intrinsics->
k2() != k2) {
140 double k1 = libmv_camera_intrinsics_options->
nuke_k1;
141 double k2 = libmv_camera_intrinsics_options->
nuke_k2;
143 if (nuke_intrinsics->
k1() != k1 || nuke_intrinsics->
k2() != k2) {
157 double k1 = libmv_camera_intrinsics_options->
brown_k1;
158 double k2 = libmv_camera_intrinsics_options->
brown_k2;
159 double k3 = libmv_camera_intrinsics_options->
brown_k3;
160 double k4 = libmv_camera_intrinsics_options->
brown_k4;
162 if (brown_intrinsics->
k1() != k1 || brown_intrinsics->
k2() != k2 ||
163 brown_intrinsics->
k3() != k3 || brown_intrinsics->
k4() != k4) {
167 double p1 = libmv_camera_intrinsics_options->
brown_p1;
168 double p2 = libmv_camera_intrinsics_options->
brown_p2;
170 if (brown_intrinsics->
p1() != p1 || brown_intrinsics->
p2() != p2) {
176 default: assert(!
"Unknown distortion model");
208 camera_intrinsics_options->
polynomial_k1 = polynomial_intrinsics->
k1();
209 camera_intrinsics_options->
polynomial_k2 = polynomial_intrinsics->
k2();
210 camera_intrinsics_options->
polynomial_k3 = polynomial_intrinsics->
k3();
211 camera_intrinsics_options->
polynomial_p1 = polynomial_intrinsics->
p1();
212 camera_intrinsics_options->
polynomial_p2 = polynomial_intrinsics->
p2();
221 camera_intrinsics_options->
division_k1 = division_intrinsics->
k1();
222 camera_intrinsics_options->
division_k2 = division_intrinsics->
k2();
230 camera_intrinsics_options->
nuke_k1 = nuke_intrinsics->
k1();
231 camera_intrinsics_options->
nuke_k2 = nuke_intrinsics->
k2();
240 camera_intrinsics_options->
brown_k1 = brown_intrinsics->
k1();
241 camera_intrinsics_options->
brown_k2 = brown_intrinsics->
k2();
242 camera_intrinsics_options->
brown_k3 = brown_intrinsics->
k3();
243 camera_intrinsics_options->
brown_k4 = brown_intrinsics->
k4();
244 camera_intrinsics_options->
brown_p1 = brown_intrinsics->
p1();
245 camera_intrinsics_options->
brown_p2 = brown_intrinsics->
p2();
249 default: assert(!
"Unknown distortion model");
255 const unsigned char* source_image,
260 unsigned char* destination_image) {
263 source_image, width, height, overscan, channels, destination_image);
268 const float* source_image,
273 float* destination_image) {
276 source_image, width, height, overscan, channels, destination_image);
281 const unsigned char* source_image,
286 unsigned char* destination_image) {
289 source_image, width, height, overscan, channels, destination_image);
299 float* destination_image) {
302 source_image, width, height, overscan, channels, destination_image);
366 camera_intrinsics_options->
nuke_k2);
375 camera_intrinsics_options->
brown_k1,
376 camera_intrinsics_options->
brown_k2,
377 camera_intrinsics_options->
brown_k3,
378 camera_intrinsics_options->
brown_k4);
380 camera_intrinsics_options->
brown_p1,
381 camera_intrinsics_options->
brown_p2);
386 default: assert(!
"Unknown distortion model");
406 default: assert(!
"Unknown distortion model");
410 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
void SetThreads(int threads)
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)
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_cameraIntrinsicsSetThreads(libmv_CameraIntrinsics *libmv_intrinsics, int threads)
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)