Candy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
HVR::DepthCamera Class Reference

Depth camera is the base type for all nodes that provide depth camera data, from such devices as the Kinect or Primesense Sensor. More...

Inheritance diagram for HVR::DepthCamera:
Inheritance graph
[legend]

Classes

struct  ExtremesMap
 A map of extremes. More...
 
struct  SFBackgroundImage
 
struct  SFPositionImage
 
struct  Shape
 
struct  ViewSize
 

Public Types

typedef
H3D::H3DImageObject::SFImage 
SFImage
 
typedef H3D::TypedSFNode
< Candy::PaintTexture
SFPaintTexture
 
typedef std::vector< H3D::Vec3f > contour_t
 
typedef std::vector< contour_t > contours_t
 

Public Member Functions

 DepthCamera (H3D::Inst< H3D::SFNode > _metadata=0, H3D::Inst< H3D::SFVec2f > _fieldOfView=0, H3D::Inst< ViewSize > _viewSize=0, H3D::Inst< H3D::SFBool > _updateBackground=0, H3D::Inst< H3D::SFFloat > _maximumBackgroundDistance=0, H3D::Inst< H3D::SFFloat > _backgroundDepthMargin=0, H3D::Inst< H3D::SFInt32 > _backgroundPixelMargin=0, H3D::Inst< SFImage > _depthData=0, H3D::Inst< SFPositionImage > _positionData=0, H3D::Inst< SFBackgroundImage > _depthDataBackground=0, H3D::Inst< SFPaintTexture > _debugTexture=0)
 
virtual std::string defaultXMLContainerField ()
 
H3D::Vec3f pixel2DtoLine (float x, float y)
 Convert a pixel coordinate on the Kinect image into a 3D line representing that pixels direction from the Kinects point of view. More...
 
H3D::Vec3f pixel2Dto3D (float x, float y, float d)
 Convert a pixel coordinate on the Kinect image and depth value into a 3D position from the Kinects point of view. More...
 
H3D::Vec3f pixel2Dto3D (H3D::Vec3f p)
 Convert a pixel coordinate on the Kinect image (x,y,depth) into a 3D position from the Kinects point of view. More...
 
H3D::Vec3f point2DtoLine (float x, float y)
 Convert a point on the Kinect image into a 3D line representing that pixels direction from the Kinects point of view. More...
 
H3D::Vec3f point2Dto3D (float x, float y, float d)
 Convert a point on the Kinect image into a 3D position from the Kinects point of view. More...
 
H3D::Vec3f point2Dto3D (H3D::Vec3f p)
 Convert a point on the Kinect image into a 3D position from the Kinects point of view. More...
 
const std::vector< Shape > & getShapes ()
 
H3D::Vec2f getExtremes ()
 Returns a 2D vector containing the largest and smallest value of the depth in x and y, respectively. More...
 
const ExtremesMapgetExtremesMap ()
 Returns a map of extremes. More...
 

Public Attributes

struct HVR_API Shape
 
struct HVR_API ExtremesMap
 
std::auto_ptr< H3D::SFVec2ffieldOfView
  (input/output) This camera field of view is used when converting coordinates between 2D and 3D. More...
 
std::auto_ptr< ViewSizeviewSize
  (output only) This field holds the width and height of the view at the distance of one length unit. More...
 
std::auto_ptr< H3D::SFBoolupdateBackground
  (input/output) The background image (depthDataBackground) will be updated if this field is set to true. More...
 
std::auto_ptr< H3D::SFFloatmaximumBackgroundDistance
  (input/output) This is the largest distance that the background image may contain. More...
 
std::auto_ptr< H3D::SFFloatbackgroundDepthMargin
  (input/output) This is a margin removed from the depth when specifying the background, in meters. More...
 
std::auto_ptr< H3D::SFInt32backgroundPixelMargin
  (input/output) This is the margin around object when specifying the background, in pixels. More...
 
std::auto_ptr< SFImagedepthData
  (input/output) This is the depth data from the depth camera, in meters. More...
 
std::auto_ptr< SFPositionImagepositionData
  (output only) This is the 3D pixel position data from the depth camera, in meters and camera coordinates. More...
 
std::auto_ptr< SFBackgroundImagedepthDataBackground
  (output only) The depth camera holds a background image to more easily remove uninteresting data. More...
 
std::auto_ptr< SFPaintTexturedebugTexture
  (input/output) When specified, debug data are drawn to this texture. More...
 

Static Public Attributes

static H3D::H3DNodeDatabase database
 

Protected Member Functions

void update_debug_texture ()
 

Protected Attributes

struct HVR_API ViewSize
 
struct HVR_API SFBackgroundImage
 
struct HVR_API SFPositionImage
 

Detailed Description

Depth camera is the base type for all nodes that provide depth camera data, from such devices as the Kinect or Primesense Sensor.

Member Function Documentation

H3D::Vec2f HVR::DepthCamera::getExtremes ( )
inline

Returns a 2D vector containing the largest and smallest value of the depth in x and y, respectively.

If there are no extremes, for example if everything is background, then the vector will be (-1,-1).

const ExtremesMap& HVR::DepthCamera::getExtremesMap ( )
inline

Returns a map of extremes.

Each cell of the map has a 2D vector containing the largest and smallest value of the depth for that cell in x and y, respectively. If there are no extremes of the cell, for example if the cell shows only background, then the vector will be (-1,-1).

H3D::Vec3f HVR::DepthCamera::pixel2Dto3D ( float  x,
float  y,
float  d 
)

Convert a pixel coordinate on the Kinect image and depth value into a 3D position from the Kinects point of view.

This function will return origin if the actual 3D position could not be calculated.

H3D::Vec3f HVR::DepthCamera::pixel2Dto3D ( H3D::Vec3f  p)
inline

Convert a pixel coordinate on the Kinect image (x,y,depth) into a 3D position from the Kinects point of view.

The unit of depth is meters.

H3D::Vec3f HVR::DepthCamera::pixel2DtoLine ( float  x,
float  y 
)

Convert a pixel coordinate on the Kinect image into a 3D line representing that pixels direction from the Kinects point of view.

Returns a unit vector, or a zero vector if no depth image is available yet.

H3D::Vec3f HVR::DepthCamera::point2Dto3D ( float  x,
float  y,
float  d 
)

Convert a point on the Kinect image into a 3D position from the Kinects point of view.

The x and y of the image point are in the range -1 to 1, while the depth is in meters.

H3D::Vec3f HVR::DepthCamera::point2Dto3D ( H3D::Vec3f  p)
inline

Convert a point on the Kinect image into a 3D position from the Kinects point of view.

The x and y of the image point are in the range -1 to 1, while z is in meters.

H3D::Vec3f HVR::DepthCamera::point2DtoLine ( float  x,
float  y 
)

Convert a point on the Kinect image into a 3D line representing that pixels direction from the Kinects point of view.

The image point is expressed in the range -1 to 1.

Member Data Documentation

std::auto_ptr< H3D::SFFloat > HVR::DepthCamera::backgroundDepthMargin

(input/output) This is a margin removed from the depth when specifying the background, in meters.

This is a means to minimize the problem with moving background and poor depth accuracy.

std::auto_ptr< H3D::SFInt32 > HVR::DepthCamera::backgroundPixelMargin

(input/output) This is the margin around object when specifying the background, in pixels.

This is a means to minimize the problem with moving background and poor depth accuracy.

std::auto_ptr< SFPaintTexture > HVR::DepthCamera::debugTexture

(input/output) When specified, debug data are drawn to this texture.

std::auto_ptr< SFImage > HVR::DepthCamera::depthData

(input/output) This is the depth data from the depth camera, in meters.

This can be set manually to emulate a depth camera but any extending node will set this field automatically. This must be an image with a single floating point channel. The image shows the camera's point of view and z being the distance from the camera, i e expressing a left-handed system. A negative value represents unavailable data.

std::auto_ptr< SFBackgroundImage > HVR::DepthCamera::depthDataBackground

(output only) The depth camera holds a background image to more easily remove uninteresting data.

This is an image with a single floating point channel.

std::auto_ptr< H3D::SFVec2f > HVR::DepthCamera::fieldOfView

(input/output) This camera field of view is used when converting coordinates between 2D and 3D.

The camera sets this as good as it can but it may be manually specified.

std::auto_ptr< H3D::SFFloat > HVR::DepthCamera::maximumBackgroundDistance

(input/output) This is the largest distance that the background image may contain.

std::auto_ptr< SFPositionImage > HVR::DepthCamera::positionData

(output only) This is the 3D pixel position data from the depth camera, in meters and camera coordinates.

std::auto_ptr< H3D::SFBool > HVR::DepthCamera::updateBackground

(input/output) The background image (depthDataBackground) will be updated if this field is set to true.

The field will be set to false again when the background image has been updated.

std::auto_ptr< ViewSize > HVR::DepthCamera::viewSize

(output only) This field holds the width and height of the view at the distance of one length unit.

This is calculated by 2 x atan(fov/2).