Blender  V3.3
intern/camera_intrinsics.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2011 Blender Foundation. All rights reserved. */
3 
5 #include "intern/utildefines.h"
7 
13 
15  const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options) {
16  CameraIntrinsics* camera_intrinsics =
17  libmv_cameraIntrinsicsCreateFromOptions(libmv_camera_intrinsics_options);
18  return (libmv_CameraIntrinsics*)camera_intrinsics;
19 }
20 
22  const libmv_CameraIntrinsics* libmv_intrinsics) {
23  const CameraIntrinsics* orig_intrinsics =
24  (const CameraIntrinsics*)libmv_intrinsics;
25 
26  CameraIntrinsics* new_intrinsics = NULL;
27  switch (orig_intrinsics->GetDistortionModelType()) {
29  const PolynomialCameraIntrinsics* polynomial_intrinsics =
30  static_cast<const PolynomialCameraIntrinsics*>(orig_intrinsics);
31  new_intrinsics =
32  LIBMV_OBJECT_NEW(PolynomialCameraIntrinsics, *polynomial_intrinsics);
33  break;
34  }
36  const DivisionCameraIntrinsics* division_intrinsics =
37  static_cast<const DivisionCameraIntrinsics*>(orig_intrinsics);
38  new_intrinsics =
39  LIBMV_OBJECT_NEW(DivisionCameraIntrinsics, *division_intrinsics);
40  break;
41  }
43  const NukeCameraIntrinsics* nuke_intrinsics =
44  static_cast<const NukeCameraIntrinsics*>(orig_intrinsics);
45  new_intrinsics = LIBMV_OBJECT_NEW(NukeCameraIntrinsics, *nuke_intrinsics);
46  break;
47  }
49  const BrownCameraIntrinsics* brown_intrinsics =
50  static_cast<const BrownCameraIntrinsics*>(orig_intrinsics);
51  new_intrinsics =
52  LIBMV_OBJECT_NEW(BrownCameraIntrinsics, *brown_intrinsics);
53  break;
54  }
55  default: assert(!"Unknown distortion model");
56  }
57  return (libmv_CameraIntrinsics*)new_intrinsics;
58 }
59 
61  LIBMV_OBJECT_DELETE(libmv_intrinsics, CameraIntrinsics);
62 }
63 
65  const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
66  libmv_CameraIntrinsics* libmv_intrinsics) {
67  CameraIntrinsics* camera_intrinsics = (CameraIntrinsics*)libmv_intrinsics;
68 
69  double focal_length = libmv_camera_intrinsics_options->focal_length;
70  double principal_x = libmv_camera_intrinsics_options->principal_point_x;
71  double principal_y = libmv_camera_intrinsics_options->principal_point_y;
72  int image_width = libmv_camera_intrinsics_options->image_width;
73  int image_height = libmv_camera_intrinsics_options->image_height;
74 
75  /* Try avoid unnecessary updates, so pre-computed distortion grids
76  * are not freed.
77  */
78 
79  camera_intrinsics->SetThreads(libmv_camera_intrinsics_options->num_threads);
80 
81  if (camera_intrinsics->focal_length() != focal_length) {
82  camera_intrinsics->SetFocalLength(focal_length, focal_length);
83  }
84 
85  if (camera_intrinsics->principal_point_x() != principal_x ||
86  camera_intrinsics->principal_point_y() != principal_y) {
87  camera_intrinsics->SetPrincipalPoint(principal_x, principal_y);
88  }
89 
90  if (camera_intrinsics->image_width() != image_width ||
91  camera_intrinsics->image_height() != image_height) {
92  camera_intrinsics->SetImageSize(image_width, image_height);
93  }
94 
95  switch (libmv_camera_intrinsics_options->distortion_model) {
97  assert(camera_intrinsics->GetDistortionModelType() ==
99 
100  PolynomialCameraIntrinsics* polynomial_intrinsics =
101  (PolynomialCameraIntrinsics*)camera_intrinsics;
102 
103  double k1 = libmv_camera_intrinsics_options->polynomial_k1;
104  double k2 = libmv_camera_intrinsics_options->polynomial_k2;
105  double k3 = libmv_camera_intrinsics_options->polynomial_k3;
106 
107  if (polynomial_intrinsics->k1() != k1 ||
108  polynomial_intrinsics->k2() != k2 ||
109  polynomial_intrinsics->k3() != k3) {
110  polynomial_intrinsics->SetRadialDistortion(k1, k2, k3);
111  }
112  break;
113  }
114 
116  assert(camera_intrinsics->GetDistortionModelType() ==
118 
119  DivisionCameraIntrinsics* division_intrinsics =
120  (DivisionCameraIntrinsics*)camera_intrinsics;
121 
122  double k1 = libmv_camera_intrinsics_options->division_k1;
123  double k2 = libmv_camera_intrinsics_options->division_k2;
124 
125  if (division_intrinsics->k1() != k1 || division_intrinsics->k2() != k2) {
126  division_intrinsics->SetDistortion(k1, k2);
127  }
128 
129  break;
130  }
131 
133  assert(camera_intrinsics->GetDistortionModelType() ==
135 
136  NukeCameraIntrinsics* nuke_intrinsics =
137  (NukeCameraIntrinsics*)camera_intrinsics;
138 
139  double k1 = libmv_camera_intrinsics_options->nuke_k1;
140  double k2 = libmv_camera_intrinsics_options->nuke_k2;
141 
142  if (nuke_intrinsics->k1() != k1 || nuke_intrinsics->k2() != k2) {
143  nuke_intrinsics->SetDistortion(k1, k2);
144  }
145 
146  break;
147  }
148 
150  assert(camera_intrinsics->GetDistortionModelType() ==
152 
153  BrownCameraIntrinsics* brown_intrinsics =
154  (BrownCameraIntrinsics*)camera_intrinsics;
155 
156  double k1 = libmv_camera_intrinsics_options->brown_k1;
157  double k2 = libmv_camera_intrinsics_options->brown_k2;
158  double k3 = libmv_camera_intrinsics_options->brown_k3;
159  double k4 = libmv_camera_intrinsics_options->brown_k4;
160 
161  if (brown_intrinsics->k1() != k1 || brown_intrinsics->k2() != k2 ||
162  brown_intrinsics->k3() != k3 || brown_intrinsics->k4() != k4) {
163  brown_intrinsics->SetRadialDistortion(k1, k2, k3, k4);
164  }
165 
166  double p1 = libmv_camera_intrinsics_options->brown_p1;
167  double p2 = libmv_camera_intrinsics_options->brown_p2;
168 
169  if (brown_intrinsics->p1() != p1 || brown_intrinsics->p2() != p2) {
170  brown_intrinsics->SetTangentialDistortion(p1, p2);
171  }
172  break;
173  }
174 
175  default: assert(!"Unknown distortion model");
176  }
177 }
178 
180  int threads) {
181  CameraIntrinsics* camera_intrinsics = (CameraIntrinsics*)libmv_intrinsics;
182  camera_intrinsics->SetThreads(threads);
183 }
184 
186  const libmv_CameraIntrinsics* libmv_intrinsics,
187  libmv_CameraIntrinsicsOptions* camera_intrinsics_options) {
188  const CameraIntrinsics* camera_intrinsics =
189  (const CameraIntrinsics*)libmv_intrinsics;
190 
191  // Fill in options which are common for all distortion models.
192  camera_intrinsics_options->focal_length = camera_intrinsics->focal_length();
193  camera_intrinsics_options->principal_point_x =
194  camera_intrinsics->principal_point_x();
195  camera_intrinsics_options->principal_point_y =
196  camera_intrinsics->principal_point_y();
197 
198  camera_intrinsics_options->image_width = camera_intrinsics->image_width();
199  camera_intrinsics_options->image_height = camera_intrinsics->image_height();
200 
201  switch (camera_intrinsics->GetDistortionModelType()) {
203  const PolynomialCameraIntrinsics* polynomial_intrinsics =
204  static_cast<const PolynomialCameraIntrinsics*>(camera_intrinsics);
205  camera_intrinsics_options->distortion_model =
207  camera_intrinsics_options->polynomial_k1 = polynomial_intrinsics->k1();
208  camera_intrinsics_options->polynomial_k2 = polynomial_intrinsics->k2();
209  camera_intrinsics_options->polynomial_k3 = polynomial_intrinsics->k3();
210  camera_intrinsics_options->polynomial_p1 = polynomial_intrinsics->p1();
211  camera_intrinsics_options->polynomial_p2 = polynomial_intrinsics->p2();
212  break;
213  }
214 
216  const DivisionCameraIntrinsics* division_intrinsics =
217  static_cast<const DivisionCameraIntrinsics*>(camera_intrinsics);
218  camera_intrinsics_options->distortion_model =
220  camera_intrinsics_options->division_k1 = division_intrinsics->k1();
221  camera_intrinsics_options->division_k2 = division_intrinsics->k2();
222  break;
223  }
224 
226  const NukeCameraIntrinsics* nuke_intrinsics =
227  static_cast<const NukeCameraIntrinsics*>(camera_intrinsics);
228  camera_intrinsics_options->distortion_model = LIBMV_DISTORTION_MODEL_NUKE;
229  camera_intrinsics_options->nuke_k1 = nuke_intrinsics->k1();
230  camera_intrinsics_options->nuke_k2 = nuke_intrinsics->k2();
231  break;
232  }
233 
235  const BrownCameraIntrinsics* brown_intrinsics =
236  static_cast<const BrownCameraIntrinsics*>(camera_intrinsics);
237  camera_intrinsics_options->distortion_model =
239  camera_intrinsics_options->brown_k1 = brown_intrinsics->k1();
240  camera_intrinsics_options->brown_k2 = brown_intrinsics->k2();
241  camera_intrinsics_options->brown_k3 = brown_intrinsics->k3();
242  camera_intrinsics_options->brown_k4 = brown_intrinsics->k4();
243  camera_intrinsics_options->brown_p1 = brown_intrinsics->p1();
244  camera_intrinsics_options->brown_p2 = brown_intrinsics->p2();
245  break;
246  }
247 
248  default: assert(!"Unknown distortion model");
249  }
250 }
251 
253  const libmv_CameraIntrinsics* libmv_intrinsics,
254  const unsigned char* source_image,
255  int width,
256  int height,
257  float overscan,
258  int channels,
259  unsigned char* destination_image) {
260  CameraIntrinsics* camera_intrinsics = (CameraIntrinsics*)libmv_intrinsics;
261  camera_intrinsics->UndistortBuffer(
262  source_image, width, height, overscan, channels, destination_image);
263 }
264 
266  const libmv_CameraIntrinsics* libmv_intrinsics,
267  const float* source_image,
268  int width,
269  int height,
270  float overscan,
271  int channels,
272  float* destination_image) {
273  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
274  intrinsics->UndistortBuffer(
275  source_image, width, height, overscan, channels, destination_image);
276 }
277 
279  const struct libmv_CameraIntrinsics* libmv_intrinsics,
280  const unsigned char* source_image,
281  int width,
282  int height,
283  float overscan,
284  int channels,
285  unsigned char* destination_image) {
286  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
287  intrinsics->DistortBuffer(
288  source_image, width, height, overscan, channels, destination_image);
289 }
290 
292  const libmv_CameraIntrinsics* libmv_intrinsics,
293  float* source_image,
294  int width,
295  int height,
296  float overscan,
297  int channels,
298  float* destination_image) {
299  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
300  intrinsics->DistortBuffer(
301  source_image, width, height, overscan, channels, destination_image);
302 }
303 
305  const struct libmv_CameraIntrinsics* libmv_intrinsics,
306  double x,
307  double y,
308  double* x1,
309  double* y1) {
310  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
311  intrinsics->ApplyIntrinsics(x, y, x1, y1);
312 }
313 
315  const struct libmv_CameraIntrinsics* libmv_intrinsics,
316  double x,
317  double y,
318  double* x1,
319  double* y1) {
320  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
321  intrinsics->InvertIntrinsics(x, y, x1, y1);
322 }
323 
325  const libmv_CameraIntrinsicsOptions* camera_intrinsics_options,
326  CameraIntrinsics* camera_intrinsics) {
327  camera_intrinsics->SetFocalLength(camera_intrinsics_options->focal_length,
328  camera_intrinsics_options->focal_length);
329 
330  camera_intrinsics->SetPrincipalPoint(
331  camera_intrinsics_options->principal_point_x,
332  camera_intrinsics_options->principal_point_y);
333 
334  camera_intrinsics->SetImageSize(camera_intrinsics_options->image_width,
335  camera_intrinsics_options->image_height);
336 
337  switch (camera_intrinsics_options->distortion_model) {
339  PolynomialCameraIntrinsics* polynomial_intrinsics =
340  static_cast<PolynomialCameraIntrinsics*>(camera_intrinsics);
341 
342  polynomial_intrinsics->SetRadialDistortion(
343  camera_intrinsics_options->polynomial_k1,
344  camera_intrinsics_options->polynomial_k2,
345  camera_intrinsics_options->polynomial_k3);
346 
347  break;
348  }
349 
351  DivisionCameraIntrinsics* division_intrinsics =
352  static_cast<DivisionCameraIntrinsics*>(camera_intrinsics);
353 
354  division_intrinsics->SetDistortion(
355  camera_intrinsics_options->division_k1,
356  camera_intrinsics_options->division_k2);
357  break;
358  }
359 
361  NukeCameraIntrinsics* nuke_intrinsics =
362  static_cast<NukeCameraIntrinsics*>(camera_intrinsics);
363 
364  nuke_intrinsics->SetDistortion(camera_intrinsics_options->nuke_k1,
365  camera_intrinsics_options->nuke_k2);
366  break;
367  }
368 
370  BrownCameraIntrinsics* brown_intrinsics =
371  static_cast<BrownCameraIntrinsics*>(camera_intrinsics);
372 
373  brown_intrinsics->SetRadialDistortion(
374  camera_intrinsics_options->brown_k1,
375  camera_intrinsics_options->brown_k2,
376  camera_intrinsics_options->brown_k3,
377  camera_intrinsics_options->brown_k4);
378  brown_intrinsics->SetTangentialDistortion(
379  camera_intrinsics_options->brown_p1,
380  camera_intrinsics_options->brown_p2);
381 
382  break;
383  }
384 
385  default: assert(!"Unknown distortion model");
386  }
387 }
388 
390  const libmv_CameraIntrinsicsOptions* camera_intrinsics_options) {
391  CameraIntrinsics* camera_intrinsics = NULL;
392  switch (camera_intrinsics_options->distortion_model) {
394  camera_intrinsics = LIBMV_OBJECT_NEW(PolynomialCameraIntrinsics);
395  break;
397  camera_intrinsics = LIBMV_OBJECT_NEW(DivisionCameraIntrinsics);
398  break;
400  camera_intrinsics = LIBMV_OBJECT_NEW(NukeCameraIntrinsics);
401  break;
403  camera_intrinsics = LIBMV_OBJECT_NEW(BrownCameraIntrinsics);
404  break;
405  default: assert(!"Unknown distortion model");
406  }
407  libmv_cameraIntrinsicsFillFromOptions(camera_intrinsics_options,
408  camera_intrinsics);
409  return camera_intrinsics;
410 }
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble y1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
void SetRadialDistortion(double k1, double k2, double k3, double k4)
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 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 UndistortBuffer(const PixelType *input_buffer, int width, int height, double overscan, int channels, PixelType *output_buffer)
virtual DistortionModelType GetDistortionModelType() const =0
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)
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)
libmv_CameraIntrinsics * libmv_cameraIntrinsicsNew(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options)
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)
CameraIntrinsics * libmv_cameraIntrinsicsCreateFromOptions(const libmv_CameraIntrinsicsOptions *camera_intrinsics_options)
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_cameraIntrinsicsCopy(const libmv_CameraIntrinsics *libmv_intrinsics)
struct libmv_CameraIntrinsics libmv_CameraIntrinsics
@ LIBMV_DISTORTION_MODEL_POLYNOMIAL
@ LIBMV_DISTORTION_MODEL_NUKE
@ LIBMV_DISTORTION_MODEL_BROWN
@ LIBMV_DISTORTION_MODEL_DIVISION
ListBase threads
list of all thread for every CPUDevice in cpudevices a thread exists.
@ DISTORTION_MODEL_POLYNOMIAL
@ DISTORTION_MODEL_DIVISION
@ DISTORTION_MODEL_BROWN
@ DISTORTION_MODEL_NUKE
#define LIBMV_OBJECT_NEW(type,...)
Definition: utildefines.h:38
#define LIBMV_OBJECT_DELETE(what, type)
Definition: utildefines.h:41