Blender  V2.93
intern/camera_intrinsics.cc
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2011 Blender Foundation.
17  * All rights reserved.
18  */
19 
21 #include "intern/utildefines.h"
23 
29 
31  const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options) {
32  CameraIntrinsics* camera_intrinsics =
33  libmv_cameraIntrinsicsCreateFromOptions(libmv_camera_intrinsics_options);
34  return (libmv_CameraIntrinsics*)camera_intrinsics;
35 }
36 
38  const libmv_CameraIntrinsics* libmv_intrinsics) {
39  const CameraIntrinsics* orig_intrinsics =
40  (const CameraIntrinsics*)libmv_intrinsics;
41 
42  CameraIntrinsics* new_intrinsics = NULL;
43  switch (orig_intrinsics->GetDistortionModelType()) {
45  const PolynomialCameraIntrinsics* polynomial_intrinsics =
46  static_cast<const PolynomialCameraIntrinsics*>(orig_intrinsics);
47  new_intrinsics =
48  LIBMV_OBJECT_NEW(PolynomialCameraIntrinsics, *polynomial_intrinsics);
49  break;
50  }
52  const DivisionCameraIntrinsics* division_intrinsics =
53  static_cast<const DivisionCameraIntrinsics*>(orig_intrinsics);
54  new_intrinsics =
55  LIBMV_OBJECT_NEW(DivisionCameraIntrinsics, *division_intrinsics);
56  break;
57  }
59  const NukeCameraIntrinsics* nuke_intrinsics =
60  static_cast<const NukeCameraIntrinsics*>(orig_intrinsics);
61  new_intrinsics = LIBMV_OBJECT_NEW(NukeCameraIntrinsics, *nuke_intrinsics);
62  break;
63  }
65  const BrownCameraIntrinsics* brown_intrinsics =
66  static_cast<const BrownCameraIntrinsics*>(orig_intrinsics);
67  new_intrinsics =
68  LIBMV_OBJECT_NEW(BrownCameraIntrinsics, *brown_intrinsics);
69  break;
70  }
71  default: assert(!"Unknown distortion model");
72  }
73  return (libmv_CameraIntrinsics*)new_intrinsics;
74 }
75 
77  LIBMV_OBJECT_DELETE(libmv_intrinsics, CameraIntrinsics);
78 }
79 
81  const libmv_CameraIntrinsicsOptions* libmv_camera_intrinsics_options,
82  libmv_CameraIntrinsics* libmv_intrinsics) {
83  CameraIntrinsics* camera_intrinsics = (CameraIntrinsics*)libmv_intrinsics;
84 
85  double focal_length = libmv_camera_intrinsics_options->focal_length;
86  double principal_x = libmv_camera_intrinsics_options->principal_point_x;
87  double principal_y = libmv_camera_intrinsics_options->principal_point_y;
88  int image_width = libmv_camera_intrinsics_options->image_width;
89  int image_height = libmv_camera_intrinsics_options->image_height;
90 
91  /* Try avoid unnecessary updates, so pre-computed distortion grids
92  * are not freed.
93  */
94 
95  camera_intrinsics->SetThreads(libmv_camera_intrinsics_options->num_threads);
96 
97  if (camera_intrinsics->focal_length() != focal_length) {
98  camera_intrinsics->SetFocalLength(focal_length, focal_length);
99  }
100 
101  if (camera_intrinsics->principal_point_x() != principal_x ||
102  camera_intrinsics->principal_point_y() != principal_y) {
103  camera_intrinsics->SetPrincipalPoint(principal_x, principal_y);
104  }
105 
106  if (camera_intrinsics->image_width() != image_width ||
107  camera_intrinsics->image_height() != image_height) {
108  camera_intrinsics->SetImageSize(image_width, image_height);
109  }
110 
111  switch (libmv_camera_intrinsics_options->distortion_model) {
113  assert(camera_intrinsics->GetDistortionModelType() ==
115 
116  PolynomialCameraIntrinsics* polynomial_intrinsics =
117  (PolynomialCameraIntrinsics*)camera_intrinsics;
118 
119  double k1 = libmv_camera_intrinsics_options->polynomial_k1;
120  double k2 = libmv_camera_intrinsics_options->polynomial_k2;
121  double k3 = libmv_camera_intrinsics_options->polynomial_k3;
122 
123  if (polynomial_intrinsics->k1() != k1 ||
124  polynomial_intrinsics->k2() != k2 ||
125  polynomial_intrinsics->k3() != k3) {
126  polynomial_intrinsics->SetRadialDistortion(k1, k2, k3);
127  }
128  break;
129  }
130 
132  assert(camera_intrinsics->GetDistortionModelType() ==
134 
135  DivisionCameraIntrinsics* division_intrinsics =
136  (DivisionCameraIntrinsics*)camera_intrinsics;
137 
138  double k1 = libmv_camera_intrinsics_options->division_k1;
139  double k2 = libmv_camera_intrinsics_options->division_k2;
140 
141  if (division_intrinsics->k1() != k1 || division_intrinsics->k2() != k2) {
142  division_intrinsics->SetDistortion(k1, k2);
143  }
144 
145  break;
146  }
147 
149  assert(camera_intrinsics->GetDistortionModelType() ==
151 
152  NukeCameraIntrinsics* nuke_intrinsics =
153  (NukeCameraIntrinsics*)camera_intrinsics;
154 
155  double k1 = libmv_camera_intrinsics_options->nuke_k1;
156  double k2 = libmv_camera_intrinsics_options->nuke_k2;
157 
158  if (nuke_intrinsics->k1() != k1 || nuke_intrinsics->k2() != k2) {
159  nuke_intrinsics->SetDistortion(k1, k2);
160  }
161 
162  break;
163  }
164 
166  assert(camera_intrinsics->GetDistortionModelType() ==
168 
169  BrownCameraIntrinsics* brown_intrinsics =
170  (BrownCameraIntrinsics*)camera_intrinsics;
171 
172  double k1 = libmv_camera_intrinsics_options->brown_k1;
173  double k2 = libmv_camera_intrinsics_options->brown_k2;
174  double k3 = libmv_camera_intrinsics_options->brown_k3;
175  double k4 = libmv_camera_intrinsics_options->brown_k4;
176 
177  if (brown_intrinsics->k1() != k1 || brown_intrinsics->k2() != k2 ||
178  brown_intrinsics->k3() != k3 || brown_intrinsics->k4() != k4) {
179  brown_intrinsics->SetRadialDistortion(k1, k2, k3, k4);
180  }
181 
182  double p1 = libmv_camera_intrinsics_options->brown_p1;
183  double p2 = libmv_camera_intrinsics_options->brown_p2;
184 
185  if (brown_intrinsics->p1() != p1 || brown_intrinsics->p2() != p2) {
186  brown_intrinsics->SetTangentialDistortion(p1, p2);
187  }
188  break;
189  }
190 
191  default: assert(!"Unknown distortion model");
192  }
193 }
194 
196  int threads) {
197  CameraIntrinsics* camera_intrinsics = (CameraIntrinsics*)libmv_intrinsics;
198  camera_intrinsics->SetThreads(threads);
199 }
200 
202  const libmv_CameraIntrinsics* libmv_intrinsics,
203  libmv_CameraIntrinsicsOptions* camera_intrinsics_options) {
204  const CameraIntrinsics* camera_intrinsics =
205  (const CameraIntrinsics*)libmv_intrinsics;
206 
207  // Fill in options which are common for all distortion models.
208  camera_intrinsics_options->focal_length = camera_intrinsics->focal_length();
209  camera_intrinsics_options->principal_point_x =
210  camera_intrinsics->principal_point_x();
211  camera_intrinsics_options->principal_point_y =
212  camera_intrinsics->principal_point_y();
213 
214  camera_intrinsics_options->image_width = camera_intrinsics->image_width();
215  camera_intrinsics_options->image_height = camera_intrinsics->image_height();
216 
217  switch (camera_intrinsics->GetDistortionModelType()) {
219  const PolynomialCameraIntrinsics* polynomial_intrinsics =
220  static_cast<const PolynomialCameraIntrinsics*>(camera_intrinsics);
221  camera_intrinsics_options->distortion_model =
223  camera_intrinsics_options->polynomial_k1 = polynomial_intrinsics->k1();
224  camera_intrinsics_options->polynomial_k2 = polynomial_intrinsics->k2();
225  camera_intrinsics_options->polynomial_k3 = polynomial_intrinsics->k3();
226  camera_intrinsics_options->polynomial_p1 = polynomial_intrinsics->p1();
227  camera_intrinsics_options->polynomial_p2 = polynomial_intrinsics->p2();
228  break;
229  }
230 
232  const DivisionCameraIntrinsics* division_intrinsics =
233  static_cast<const DivisionCameraIntrinsics*>(camera_intrinsics);
234  camera_intrinsics_options->distortion_model =
236  camera_intrinsics_options->division_k1 = division_intrinsics->k1();
237  camera_intrinsics_options->division_k2 = division_intrinsics->k2();
238  break;
239  }
240 
242  const NukeCameraIntrinsics* nuke_intrinsics =
243  static_cast<const NukeCameraIntrinsics*>(camera_intrinsics);
244  camera_intrinsics_options->distortion_model = LIBMV_DISTORTION_MODEL_NUKE;
245  camera_intrinsics_options->nuke_k1 = nuke_intrinsics->k1();
246  camera_intrinsics_options->nuke_k2 = nuke_intrinsics->k2();
247  break;
248  }
249 
251  const BrownCameraIntrinsics* brown_intrinsics =
252  static_cast<const BrownCameraIntrinsics*>(camera_intrinsics);
253  camera_intrinsics_options->distortion_model =
255  camera_intrinsics_options->brown_k1 = brown_intrinsics->k1();
256  camera_intrinsics_options->brown_k2 = brown_intrinsics->k2();
257  camera_intrinsics_options->brown_k3 = brown_intrinsics->k3();
258  camera_intrinsics_options->brown_k4 = brown_intrinsics->k4();
259  camera_intrinsics_options->brown_p1 = brown_intrinsics->p1();
260  camera_intrinsics_options->brown_p2 = brown_intrinsics->p2();
261  break;
262  }
263 
264  default: assert(!"Unknown distortion model");
265  }
266 }
267 
269  const libmv_CameraIntrinsics* libmv_intrinsics,
270  const unsigned char* source_image,
271  int width,
272  int height,
273  float overscan,
274  int channels,
275  unsigned char* destination_image) {
276  CameraIntrinsics* camera_intrinsics = (CameraIntrinsics*)libmv_intrinsics;
277  camera_intrinsics->UndistortBuffer(
278  source_image, width, height, overscan, channels, destination_image);
279 }
280 
282  const libmv_CameraIntrinsics* libmv_intrinsics,
283  const float* source_image,
284  int width,
285  int height,
286  float overscan,
287  int channels,
288  float* destination_image) {
289  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
290  intrinsics->UndistortBuffer(
291  source_image, width, height, overscan, channels, destination_image);
292 }
293 
295  const struct libmv_CameraIntrinsics* libmv_intrinsics,
296  const unsigned char* source_image,
297  int width,
298  int height,
299  float overscan,
300  int channels,
301  unsigned char* destination_image) {
302  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
303  intrinsics->DistortBuffer(
304  source_image, width, height, overscan, channels, destination_image);
305 }
306 
308  const libmv_CameraIntrinsics* libmv_intrinsics,
309  float* source_image,
310  int width,
311  int height,
312  float overscan,
313  int channels,
314  float* destination_image) {
315  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
316  intrinsics->DistortBuffer(
317  source_image, width, height, overscan, channels, destination_image);
318 }
319 
321  const struct libmv_CameraIntrinsics* libmv_intrinsics,
322  double x,
323  double y,
324  double* x1,
325  double* y1) {
326  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
327  intrinsics->ApplyIntrinsics(x, y, x1, y1);
328 }
329 
331  const struct libmv_CameraIntrinsics* libmv_intrinsics,
332  double x,
333  double y,
334  double* x1,
335  double* y1) {
336  CameraIntrinsics* intrinsics = (CameraIntrinsics*)libmv_intrinsics;
337  intrinsics->InvertIntrinsics(x, y, x1, y1);
338 }
339 
341  const libmv_CameraIntrinsicsOptions* camera_intrinsics_options,
342  CameraIntrinsics* camera_intrinsics) {
343  camera_intrinsics->SetFocalLength(camera_intrinsics_options->focal_length,
344  camera_intrinsics_options->focal_length);
345 
346  camera_intrinsics->SetPrincipalPoint(
347  camera_intrinsics_options->principal_point_x,
348  camera_intrinsics_options->principal_point_y);
349 
350  camera_intrinsics->SetImageSize(camera_intrinsics_options->image_width,
351  camera_intrinsics_options->image_height);
352 
353  switch (camera_intrinsics_options->distortion_model) {
355  PolynomialCameraIntrinsics* polynomial_intrinsics =
356  static_cast<PolynomialCameraIntrinsics*>(camera_intrinsics);
357 
358  polynomial_intrinsics->SetRadialDistortion(
359  camera_intrinsics_options->polynomial_k1,
360  camera_intrinsics_options->polynomial_k2,
361  camera_intrinsics_options->polynomial_k3);
362 
363  break;
364  }
365 
367  DivisionCameraIntrinsics* division_intrinsics =
368  static_cast<DivisionCameraIntrinsics*>(camera_intrinsics);
369 
370  division_intrinsics->SetDistortion(
371  camera_intrinsics_options->division_k1,
372  camera_intrinsics_options->division_k2);
373  break;
374  }
375 
377  NukeCameraIntrinsics* nuke_intrinsics =
378  static_cast<NukeCameraIntrinsics*>(camera_intrinsics);
379 
380  nuke_intrinsics->SetDistortion(camera_intrinsics_options->nuke_k1,
381  camera_intrinsics_options->nuke_k2);
382  break;
383  }
384 
386  BrownCameraIntrinsics* brown_intrinsics =
387  static_cast<BrownCameraIntrinsics*>(camera_intrinsics);
388 
389  brown_intrinsics->SetRadialDistortion(
390  camera_intrinsics_options->brown_k1,
391  camera_intrinsics_options->brown_k2,
392  camera_intrinsics_options->brown_k3,
393  camera_intrinsics_options->brown_k4);
394  brown_intrinsics->SetTangentialDistortion(
395  camera_intrinsics_options->brown_p1,
396  camera_intrinsics_options->brown_p2);
397 
398  break;
399  }
400 
401  default: assert(!"Unknown distortion model");
402  }
403 }
404 
406  const libmv_CameraIntrinsicsOptions* camera_intrinsics_options) {
407  CameraIntrinsics* camera_intrinsics = NULL;
408  switch (camera_intrinsics_options->distortion_model) {
410  camera_intrinsics = LIBMV_OBJECT_NEW(PolynomialCameraIntrinsics);
411  break;
413  camera_intrinsics = LIBMV_OBJECT_NEW(DivisionCameraIntrinsics);
414  break;
416  camera_intrinsics = LIBMV_OBJECT_NEW(NukeCameraIntrinsics);
417  break;
419  camera_intrinsics = LIBMV_OBJECT_NEW(BrownCameraIntrinsics);
420  break;
421  default: assert(!"Unknown distortion model");
422  }
423  libmv_cameraIntrinsicsFillFromOptions(camera_intrinsics_options,
424  camera_intrinsics);
425  return camera_intrinsics;
426 }
_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 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
_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
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:42
#define LIBMV_OBJECT_DELETE(what, type)
Definition: utildefines.h:45