libfreenect 0.1-beta
libfreenect_registration.h
Go to the documentation of this file.
1/*
2 * This file is part of the OpenKinect Project. http://www.openkinect.org
3 *
4 * Copyright (c) 2011 individual OpenKinect contributors. See the CONTRIB file
5 * for details.
6 *
7 * This code is licensed to you under the terms of the Apache License, version
8 * 2.0, or, at your option, the terms of the GNU General Public License,
9 * version 2.0. See the APACHE20 and GPL2 files for the text of the licenses,
10 * or the following URLs:
11 * http://www.apache.org/licenses/LICENSE-2.0
12 * http://www.gnu.org/licenses/gpl-2.0.txt
13 *
14 * If you redistribute this file in source form, modified or unmodified, you
15 * may:
16 * 1) Leave this header intact and distribute it under the same terms,
17 * accompanying it with the APACHE20 and GPL20 files, or
18 * 2) Delete the Apache 2.0 clause and accompany it with the GPL2 file, or
19 * 3) Delete the GPL v2 clause and accompany it with the APACHE20 file
20 * In all cases you must keep the copyright notice intact and include a copy
21 * of the CONTRIB file.
22 *
23 * Binary distributions must follow the binary distribution requirements of
24 * either License.
25 */
26#pragma once
27
28#include "libfreenect.h"
29#include <stdint.h>
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
38typedef struct {
39 int32_t dx_center; // not used by mapping algorithm
40
41 int32_t ax;
42 int32_t bx;
43 int32_t cx;
44 int32_t dx;
45
46 int32_t dx_start;
47
48 int32_t ay;
49 int32_t by;
50 int32_t cy;
51 int32_t dy;
52
53 int32_t dy_start;
54
57
58 int32_t rollout_blank; // not used by mapping algorithm
59 int32_t rollout_size; // not used by mapping algorithm
60
61 int32_t dx_beta_inc;
62 int32_t dy_beta_inc;
63
64 int32_t dxdx_start;
65 int32_t dxdy_start;
66 int32_t dydx_start;
67 int32_t dydy_start;
68
69 int32_t dxdxdx_start;
70 int32_t dydxdx_start;
71 int32_t dxdxdy_start;
72 int32_t dydxdy_start;
73
74 int32_t back_comp1; // not used by mapping algorithm
75
76 int32_t dydydx_start;
77
78 int32_t back_comp2; // not used by mapping algorithm
79
80 int32_t dydydy_start;
82
84typedef struct {
85 uint16_t start_lines;
86 uint16_t end_lines;
89
91typedef struct {
92 float dcmos_emitter_dist; // Distance between IR camera and IR emitter, in cm.
93 float dcmos_rcmos_dist; // Distance between IR camera and RGB camera, in cm.
94 float reference_distance; // The focal length of the IR camera, in mm.
95 float reference_pixel_size; // The size of a single pixel on the zero plane, in mm.
97
99typedef struct {
103
105
108 int32_t (*registration_table)[2]; // A table of 640*480 pairs of x,y values.
109 // Index first by pixel, then x:0 and y:1.
111
112
113// These allow clients to export registration parameters; proper docs will
114// come later
117
118// convenience function to convert a single x-y coordinate pair from camera
119// to world coordinates
121 int cx, int cy, int wz, double* wx, double* wy);
122
123// helper function to map one FREENECT_VIDEO_RGB image to a FREENECT_DEPTH_MM
124// image (inverse mapping to FREENECT_DEPTH_REGISTERED, which is depth -> RGB)
126 uint16_t* depth_mm, uint8_t* rgb_raw, uint8_t* rgb_registered );
127
128#ifdef __cplusplus
129}
130#endif
#define FREENECTAPI
If Win32, export all functions for DLL usage.
Definition libfreenect.h:189
struct _freenect_device freenect_device
Definition libfreenect.h:181
FREENECTAPI void freenect_camera_to_world(freenect_device *dev, int cx, int cy, int wz, double *wx, double *wy)
FREENECTAPI freenect_registration freenect_copy_registration(freenect_device *dev)
FREENECTAPI int freenect_destroy_registration(freenect_registration *reg)
FREENECTAPI void freenect_map_rgb_to_depth(freenect_device *dev, uint16_t *depth_mm, uint8_t *rgb_raw, uint8_t *rgb_registered)
Definition libfreenect_registration.h:38
int32_t dydydy_start
Definition libfreenect_registration.h:80
int32_t back_comp2
Definition libfreenect_registration.h:78
int32_t dydydx_start
Definition libfreenect_registration.h:76
int32_t dy_beta_inc
Definition libfreenect_registration.h:62
int32_t dx_start
Definition libfreenect_registration.h:46
int32_t ax
Definition libfreenect_registration.h:41
int32_t dy_beta_start
Definition libfreenect_registration.h:56
int32_t dy
Definition libfreenect_registration.h:51
int32_t rollout_blank
Definition libfreenect_registration.h:58
int32_t dydxdx_start
Definition libfreenect_registration.h:70
int32_t bx
Definition libfreenect_registration.h:42
int32_t dxdx_start
Definition libfreenect_registration.h:64
int32_t cx
Definition libfreenect_registration.h:43
int32_t dxdxdy_start
Definition libfreenect_registration.h:71
int32_t dy_start
Definition libfreenect_registration.h:53
int32_t dxdy_start
Definition libfreenect_registration.h:65
int32_t dx
Definition libfreenect_registration.h:44
int32_t ay
Definition libfreenect_registration.h:48
int32_t dx_beta_start
Definition libfreenect_registration.h:55
int32_t dxdxdx_start
Definition libfreenect_registration.h:69
int32_t cy
Definition libfreenect_registration.h:50
int32_t rollout_size
Definition libfreenect_registration.h:59
int32_t dydx_start
Definition libfreenect_registration.h:66
int32_t dx_center
Definition libfreenect_registration.h:39
int32_t by
Definition libfreenect_registration.h:49
int32_t dydxdy_start
Definition libfreenect_registration.h:72
int32_t dydy_start
Definition libfreenect_registration.h:67
int32_t dx_beta_inc
Definition libfreenect_registration.h:61
int32_t back_comp1
Definition libfreenect_registration.h:74
registration padding info (?)
Definition libfreenect_registration.h:84
uint16_t cropping_lines
Definition libfreenect_registration.h:87
uint16_t start_lines
Definition libfreenect_registration.h:85
uint16_t end_lines
Definition libfreenect_registration.h:86
all data needed for depth->RGB mapping
Definition libfreenect_registration.h:99
freenect_reg_info reg_info
Definition libfreenect_registration.h:100
int32_t * depth_to_rgb_shift
Definition libfreenect_registration.h:107
double const_shift
Definition libfreenect_registration.h:104
freenect_reg_pad_info reg_pad_info
Definition libfreenect_registration.h:101
uint16_t * raw_to_mm_shift
Definition libfreenect_registration.h:106
freenect_zero_plane_info zero_plane_info
Definition libfreenect_registration.h:102
internal Kinect zero plane data
Definition libfreenect_registration.h:91
float dcmos_emitter_dist
Definition libfreenect_registration.h:92
float reference_pixel_size
Definition libfreenect_registration.h:95
float dcmos_rcmos_dist
Definition libfreenect_registration.h:93
float reference_distance
Definition libfreenect_registration.h:94