next up previous contents
Next: Projecting points and lines Up: Cameras Previous: Cameras   Contents

Building cameras

To create a linear camera, you will need the header file
      #include <gandalf/vision/camera_linear.h>
for double precision or
      #include <gandalf/vision/cameraf_linear.h>
Then use the routine
      Gan_Camera CameraD;

      /* build a linear camera in double precision */
      gan_camera_build_linear ( &CameraD,
                             /* ZH     FY     FX     Y0     X0 */
                                100.0, 700.0, 500.0, 150.0, 100.0 );
to create a double precision linear camera. There is a single-precision camera structure, called a Gan_Camera_f. The single precision version of the above function is
      Gan_Camera_f CameraF;

      /* build a linear camera in double precision */
      gan_cameraf_build_linear ( &CameraF,
                              /* ZH      FY      FX      Y0      X0 */
                                 100.0F, 700.0F, 500.0F, 150.0F, 100.0F );
There are similar functions for creating cameras with a radial distortion model, for which you will need one or more of the following header files:
      #include <gandalf/vision/camera_radial_dist1.h>
      #include <gandalf/vision/camera_radial_dist2.h>
      #include <gandalf/vision/camera_radial_dist3.h>
      #include <gandalf/vision/cameraf_radial_dist1.h>
      #include <gandalf/vision/cameraf_radial_dist2.h>
      #include <gandalf/vision/cameraf_radial_dist3.h>

Then the functions are

      /* build a camera with one radial distortion parameter */
      gan_camera_build_radial_distortion_1 ( &CameraD,
                                       /*    ZH     FY     FX     Y0     X0 */
                                             100.0, 700.0, 500.0, 150.0, 100.0,
                                       /*    K1 */
                                             0.001 ); /* OR */
      gan_cameraf_build_radial_distortion_1 ( &CameraF,
                                        /*    ZH      FY      FX      Y0      X0 */
                                              100.0F, 700.0F, 500.0F, 150.0F, 100.0F,
                                        /*    K1 */
                                              0.001F );

      /* build a camera with two radial distortion parameters */
      gan_camera_build_radial_distortion_2 ( &CameraD,
                                       /*    ZH     FY     FX     Y0     X0 */
                                             100.0, 700.0, 500.0, 150.0, 100.0,
                                       /*    K1,    K2 */
                                             0.001, 1.0e-7 ); /* OR */
      gan_cameraf_build_radial_distortion_2 ( &CameraF,
                                        /*    ZH      FY      FX      Y0      X0 */
                                              100.0F, 700.0F, 500.0F, 150.0F, 100.0F,
                                        /*    K1,     K2 */
                                              0.001F, 1.0e-7F );
      /* build a camera with three radial distortion parameters */
      gan_camera_build_radial_distortion_3 ( &CameraD,
                                       /*    ZH     FY     FX     Y0     X0 */
                                             100.0, 700.0, 500.0, 150.0, 100.0,
                                       /*    K1,    K2,     K3 */
                                             0.001, 1.0e-7, -0.0001 ); /* OR */
      gan_cameraf_build_radial_distortion_3 ( &CameraF,
                                        /*    ZH      FY      FX      Y0      X0 */
                                              100.0F, 700.0F, 500.0F, 150.0F, 100.0F,
                                        /*    K1,     K2,      K3 */
                                              0.001F, 1.0e-7F, -0.0001F );
Note that Gan_Camera's and Gan_Camera_f's are simple structures with no internally allocated data, so there is no ..._free function for them.



2006-03-17