Raytrix Light Field SDK  v3.0
Logo
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Properties Events Groups Pages
Light Field Computation API functions

Functions to perform computations with ray images. More...

Functions

static System::Void Rx::Net::ApiLF::RxAutoDepthPlanes ()
 Do an automatic adaption of the depth planes. More...
 
static System::Void Rx::Net::ApiLF::RxConvertImage (Rx::Net::Image^ %xDstImage, Rx::Net::Image^ xSrcImage, Rx::InteropNet::Runtime28::EPixelType eDstImageType, Rx::InteropNet::Runtime28::EDataType eDstDataType)
 Convert a Rx::CRxImage to a new pixel and data type. More...
 
static System::Void Rx::Net::ApiLF::RxDepth3D ()
 Object space depth 3D. More...
 
static System::Void Rx::Net::ApiLF::RxDepthColorCode ()
 Colorizes the depth map created by Rx::Net::ApiLF::RxDepthMap. More...
 
static System::Void Rx::Net::ApiLF::RxDepthMap ()
 Creates a depth map from the ray depth image created by Rx::Net::ApiLF::RxDepthRay. More...
 
static System::Void Rx::Net::ApiLF::RxDepthRay ()
 Estimates the depth of the bound ray image and stores the result in the image with the ID Rx::Net::ApiLF::EImgID::DepthRay. More...
 
static System::Void Rx::Net::ApiLF::RxFreeImage (Rx::Net::ApiLF::EImgID eImgID)
 Frees memory used by image defined by eImgID. This invalidates the image. More...
 
static System::Void Rx::Net::ApiLF::RxGetImage (Rx::Net::ApiLF::EImgID eImgID, Rx::Net::Image^ %xImage)
 Get an internal image. More...
 
static System::Void Rx::Net::ApiLF::RxGetImage (Rx::Net::ApiLF::EImgID eImgID, Rx::InteropNet::Runtime28::IImage^ xImageIfc, System::Boolean bCreate)
 Get an internal image. More...
 
static System::Void Rx::Net::ApiLF::RxGetImageDevicePointer (Rx::Net::ApiLF::EImgID eImgID, System::IntPtr% pDevicePtr)
 Get the device pointer of an internal image. More...
 
static System::Void Rx::Net::ApiLF::RxGetImageFormat (Rx::Net::ApiLF::EImgID eImgID, Rx::Net::ImageFormat^ %xF)
 Get the image format of an internal image. More...
 
static System::Void Rx::Net::ApiLF::RxGetImageHistogram (Rx::Net::ApiLF::EImgID eImgID, array< System::UInt32 >^%xHistogram, System::UInt32% uChannels)
 Calculates the histogram of the image with the given ID and stores the histogram data in the given array. This array must be large enough to hold 4 * 256 numbers. The number of calculated channels is returned in uChannels. More...
 
static System::Void Rx::Net::ApiLF::RxGetImageMinMax (Rx::Net::ApiLF::EImgID eImgID, System::UInt32 uChannel, System::Single &fMin, System::Single &fMax)
 Finds the minimum and maximum value of the given image ID. More...
 
static System::Void Rx::Net::ApiLF::RxGetImageMinMax (Rx::Net::ApiLF::EImgID eImgID, System::UInt32 uChannel, System::Single% fMin, System::Single% fMax)
 Finds the minimum and maximum value of the given image ID. More...
 
static System::Void Rx::Net::ApiLF::RxGrid ()
 Show a lens grid overlay on the raw ray image. More...
 
static System::Void Rx::Net::ApiLF::RxGridDataImage ()
 Pre Process a ray image with a minimal Set of preprocessing parameter. More...
 
static System::Boolean Rx::Net::ApiLF::RxIsImageValid (Rx::Net::ApiLF::EImgID eImgID)
 Test whether an internal image is valid. More...
 
static System::Boolean Rx::Net::ApiLF::RxLockCudaMutex (System::Int32 iTimeout)
 Locks the CUDA Mutex. More...
 
static System::Void Rx::Net::ApiLF::RxMapValue (System::Double% dTrg, System::Double dSrc, Rx::Net::ApiLF::EValueMapping eValueMapping)
 Map a given source value via the EValueMapping::ID eValueMapping. More...
 
static System::Void Rx::Net::ApiLF::RxPreProcess ()
 Pre-Process a ray image. More...
 
static System::Void Rx::Net::ApiLF::RxProject (System::Boolean% bTargetPointValid, array< System::Double >^%adTargetPoint, array< System::Double >^%adSourcePoint, Rx::Projection::ESpace::ID eTarget, Rx::Projection::ESpace::ID eSource)
 Projects a point or a set of points in a given source space into a given target space. More...
 
static System::Void Rx::Net::ApiLF::RxRefocusBasic ()
 Focus image to a plane perpendicular to the optical axis, i.e. parallel to the image plane. More...
 
static System::Void Rx::Net::ApiLF::RxResizeImage (Rx::Net::Image^ %xDstImage, Rx::Net::Image^ %xSrcImage, System::Int32 iDivider)
 Resize an image. More...
 
static System::Void Rx::Net::ApiLF::RxSaveDepth3dMesh (System::String^ sFilename, System::Double dMaxEdgeLength, System::Double dCropLeftPerc, System::Double dCropRightPerc, System::Double dCropTopPerc, System::Double dCropBottomPerc)
 Saves the 3D mesh provided by image 'Depth3D' to binary STL format. This requires a valid image computed by Rx::Net::ApiLF::RxDepth3D. Triangles with a depth-variation larger than 'dMaxEdgeLength' for at least one vertex pair are not added to the mesh. More...
 
static System::Void Rx::Net::ApiLF::RxSaveDepth3dPointList (System::String^ sFilename)
 Saves the depth values of the current Depth3D image to the given file as a point list. More...
 
static System::Void Rx::Net::ApiLF::RxSetImage (Rx::Net::ApiLF::EImgID eImgID, Rx::Net::Image^ xImage)
 Set an internal image. More...
 
static System::Void Rx::Net::ApiLF::RxSetImage (Rx::Net::ApiLF::EImgID eImgID, Rx::InteropNet::Runtime28::IImage^ xImageIfc)
 Set an internal image. More...
 
static System::Void Rx::Net::ApiLF::RxStereo ()
 Creates a stereo image and stores the result in the image with the ID Rx::Net::ApiLF::EImgID::Stereo_ViewCamera. More...
 
static System::Void Rx::Net::ApiLF::RxTotalFocus ()
 Focus on a depth surface. More...
 
static System::Void Rx::Net::ApiLF::RxUnlockCudaMutex ()
 Unlocks the CUDA Mutex. More...
 

Detailed Description

Functions to perform computations with ray images.

See also
Raytrix Light Field API Computation - Detailed
Programming with the Raytrix Light Field API
Using the Rayrix Light Field API
Raytrix's Projection System - Target View

Function Documentation

static System::Void Rx::Net::ApiLF::RxAutoDepthPlanes ( )
static

Do an automatic adaption of the depth planes.

Halcon Plugin - Function Name:
rx_auto_depth_planes.
static System::Void Rx::Net::ApiLF::RxConvertImage ( Rx::Net::Image^ %  xDstImage,
Rx::Net::Image xSrcImage,
Rx::InteropNet::Runtime28::EPixelType  eDstImageType,
Rx::InteropNet::Runtime28::EDataType  eDstDataType 
)
static

Convert a Rx::CRxImage to a new pixel and data type.

Parameters
[out]xDstImageDestination image.
[in]xSrcImageReference to the image.
eDstImageTypePixel type of the converted image.
eDstDataTypeData type of the converted image.
static System::Void Rx::Net::ApiLF::RxDepth3D ( )
static

Object space depth 3D.

This creates a RGBA float image which maps each pixel in the view camera to a 3D position in object space. The R channel is the X coordinate, the G channel is the Y coordinate and the B channel is the Z coordinate. The Z coordinate is relative to the global coordinate system which typically coincides with the light field camera sensor. All coordinate values are given in millimeters (default) or virtual depth units, depending on the parameter Rx::Net::ApiLF::EPar::Depth3D_UseVirtualDepth.

The image is stored in the image with the ID Rx::Net::ApiLF::EImgID::Depth3D.

Halcon Plugin - Function Name:
rx_depth_3d.
See also
Raytrix's Projection System - Target View
Using the Rayrix Light Field API
Raytrix Light Field API Computation - Detailed
static System::Void Rx::Net::ApiLF::RxDepthColorCode ( )
static
static System::Void Rx::Net::ApiLF::RxFreeImage ( Rx::Net::ApiLF::EImgID  eImgID)
static

Frees memory used by image defined by eImgID. This invalidates the image.

Halcon Plugin - Function Name:
rx_free_image.
Parameters
eImgIDIdentifier for the image.
static System::Void Rx::Net::ApiLF::RxGetImage ( Rx::Net::ApiLF::EImgID  eImgID,
Rx::Net::Image^ %  xImage 
)
static

Get an internal image.

The available internal image IDs are listed in Rx::Net::ApiLF::EImgID.

Parameters
eImgIDInternal image ID. This is not a ray image handle.
[out]xImageOn return contains a copy of the specified internal image.
static System::Void Rx::Net::ApiLF::RxGetImage ( Rx::Net::ApiLF::EImgID  eImgID,
Rx::InteropNet::Runtime28::IImage xImageIfc,
System::Boolean  bCreate 
)
static

Get an internal image.

The available internal image IDs are listed in Rx::Net::ApiLF::EImgID.

Halcon Plugin - Function Name:
rx_get_image.
Parameters
eImgIDInternal image ID. This is not a ray image handle.
[out]xImageIfcOn return contains a copy of the specified internal image.
bCreateIf true, a new image is created in pImage. Otherwise, it is ensured that pImage refers to an image the same size and type as the respective internal image, and then the internal image is copied.
static System::Void Rx::Net::ApiLF::RxGetImageDevicePointer ( Rx::Net::ApiLF::EImgID  eImgID,
System::IntPtr%  pDevicePtr 
)
static

Get the device pointer of an internal image.

Attention
This function returns the image device pointer of an internal image. The available internal image IDs are listed in Rx::Net::ApiLF::EImgID.
Parameters
eImgIDInternal image ID. This is not a ray image handle.
[out]pDevicePtrOn return contains the internal image's device pointer.
static System::Void Rx::Net::ApiLF::RxGetImageFormat ( Rx::Net::ApiLF::EImgID  eImgID,
Rx::Net::ImageFormat^ %  xF 
)
static

Get the image format of an internal image.

Attention
This function returns the image format of an internal image without copying the actual image from the CUDA device to host memory.

The available internal image IDs are listed in Rx::Net::ApiLF::EImgID.

Parameters
eImgIDInternal image ID. This is not a ray image handle.
[out]xFOn return contains the internal image's format.
static System::Void Rx::Net::ApiLF::RxGetImageHistogram ( Rx::Net::ApiLF::EImgID  eImgID,
array< System::UInt32 >^%  xHistogram,
System::UInt32%  uChannels 
)
static

Calculates the histogram of the image with the given ID and stores the histogram data in the given array. This array must be large enough to hold 4 * 256 numbers. The number of calculated channels is returned in uChannels.

Parameters
eImgIDThe image ID.
[out]xHistogramA reference of array<System::UInt32> where the histogram will be stored.
[in]uChannelsThe number of channels.
static System::Void Rx::Net::ApiLF::RxGetImageMinMax ( Rx::Net::ApiLF::EImgID  eImgID,
System::UInt32  uChannel,
System::Single &  fMin,
System::Single &  fMax 
)
static

Finds the minimum and maximum value of the given image ID.

Parameters
eImgIDThe image ID.
uChannelThe channel.
[out]fMinThe minimum value.
[out]fMaxThe maximum value.
static System::Void Rx::Net::ApiLF::RxGetImageMinMax ( Rx::Net::ApiLF::EImgID  eImgID,
System::UInt32  uChannel,
System::Single%  fMin,
System::Single%  fMax 
)
static

Finds the minimum and maximum value of the given image ID.

Parameters
eImgIDThe image ID.
uChannelThe channel.
[out]fMinThe minimum value.
[out]fMaxThe maximum value.
static System::Void Rx::Net::ApiLF::RxGrid ( )
static

Show a lens grid overlay on the raw ray image.

The result is written to the internal image with ID Rx::Net::ApiLF::EImgID::RayGrid.

static System::Void Rx::Net::ApiLF::RxGridDataImage ( )
static

Pre Process a ray image with a minimal Set of preprocessing parameter.

This function does the same preprocessing as Rx::Net::ApiLF::RxPreProcess but all preprocessing flags with exception of Debayering are deactivated.

The following parameters of Rx::Net::ApiLF::EPar::ID affect the RxGridDataImage computation:

static System::Boolean Rx::Net::ApiLF::RxIsImageValid ( Rx::Net::ApiLF::EImgID  eImgID)
static

Test whether an internal image is valid.

Attention
The available internal image IDs are listed in Rx::Net::ApiLF::EImgID.
Halcon Plugin - Function Name:
rx_is_image_valid.
Parameters
eImgIDInternal image ID. This is not a ray image handle.
Returns
true if the image is valid, false otherwise.
static System::Boolean Rx::Net::ApiLF::RxLockCudaMutex ( System::Int32  iTimeout)
static

Locks the CUDA Mutex.

Parameters
iTimeoutIf the mutex is locked, the timeout defines the time in ms until a Rx::Net::RxException is thrown.
Returns
True if it succeeds, false if it fails.
static System::Void Rx::Net::ApiLF::RxMapValue ( System::Double%  dTrg,
System::Double  dSrc,
Rx::Net::ApiLF::EValueMapping  eValueMapping 
)
static

Map a given source value via the EValueMapping::ID eValueMapping.

Halcon Plugin - Function Name:
rx_map_value.
Parameters
[out]dTrgTarget value.
dSrcSource value.
eValueMappingThe value mapping.
static System::Void Rx::Net::ApiLF::RxPreProcess ( )
static

Pre-Process a ray image.

The ray image that is bound with Rx::Net::ApiLF::RxRayBind is a raw light field image. Before this ray image can be used by the actual processing algorithms, it has to be adjusted by applying a rectification of a possible radial distortion and by adjusting its brightness and color with respect to a white image.

The parameters of the preprocessing step are read/set with Rx::Net::ApiLF::RxGetPar / Rx::Net::ApiLF::RxSetPar via the parameters IDs Rx::Net::ApiLF::EPar. When these parameters are changed the ray field image on the device is not automatically adjusted accordingly. Changed preprocess parameters are only applied when the function RxPreProcess is called.

The following parameters of Rx::Net::ApiLF::EPar::ID affect the preprocess computation:

Halcon Plugin - Function Name:
rx_pre_process
See also
Programming with the Raytrix Light Field API
Raytrix Light Field API Computation - Detailed
static System::Void Rx::Net::ApiLF::RxProject ( System::Boolean%  bTargetPointValid,
array< System::Double >^%  adTargetPoint,
array< System::Double >^%  adSourcePoint,
Rx::Projection::ESpace::ID  eTarget,
Rx::Projection::ESpace::ID  eSource 
)
static

Projects a point or a set of points in a given source space into a given target space.

Attention
Parameters
[out]bTargetPointValidTarget point valid.
[out]adTargetPointTarget point.
[in]adSourcePointSource point.
eTargetThe target space.
eSourcethe source space.
See also
Raytrix's Projection System - Target View.
static System::Void Rx::Net::ApiLF::RxRefocusBasic ( )
static

Focus image to a plane perpendicular to the optical axis, i.e. parallel to the image plane.

This focuses to a plane perpendicular to the optical axis. To change the focal plane, use parameter Rx::Net::ApiLF::EPar::Focus_RelativeFocusPlane. A relative focus value of zero refocuses to the plane furthest away from the viewer and a value of 1 would focus to a plane that passes through the object side focal point of the recording lens.

The result is written to the internal image with ID Rx::Net::ApiLF::EImgID::RefocusBasic_VirtualSpace, Rx::Net::ApiLF::EImgID::RefocusBasic_ObjectSpace, Rx::Net::ApiLF::EImgID::RefocusBasic_ViewCamera depending on the current Rx::Net::ApiLF::EPar::Proj_CurrentTargetView. The size of this resultant image is set in relation to the ray image size via the parameter Rx::Net::ApiLF::EPar::Focus_ResImgDiv.

The following Parameter affect the computation of Rx::Net::ApiLF::RxRefocusBasic:

Halcon Plugin - Function Name:
rx_refocus_basic
See also
Using the Rayrix Light Field API
Raytrix Light Field API Computation - Detailed
static System::Void Rx::Net::ApiLF::RxResizeImage ( Rx::Net::Image^ %  xDstImage,
Rx::Net::Image^ %  xSrcImage,
System::Int32  iDivider 
)
static

Resize an image.

Parameters
[out]xDstImageThe target image to store the result.
[in]xSrcImageThe image that is to be resized.
[in]iDividerThe image size divider. For example, if iDivder = 2, then the resultant image size is half the original size.
static System::Void Rx::Net::ApiLF::RxSaveDepth3dMesh ( System::String^  sFilename,
System::Double  dMaxEdgeLength,
System::Double  dCropLeftPerc,
System::Double  dCropRightPerc,
System::Double  dCropTopPerc,
System::Double  dCropBottomPerc 
)
static

Saves the 3D mesh provided by image 'Depth3D' to binary STL format. This requires a valid image computed by Rx::Net::ApiLF::RxDepth3D. Triangles with a depth-variation larger than 'dMaxEdgeLength' for at least one vertex pair are not added to the mesh.

Parameters
[in]sFilenameThe file name.
dMaxEdgeLengthLimit for depth-variation in vertices. -1 = infinity.
dCropLeftPercThe crop left perc.
dCropRightPercThe crop right perc.
dCropTopPercThe crop top perc.
dCropBottomPercThe crop bottom perc.
static System::Void Rx::Net::ApiLF::RxSaveDepth3dPointList ( System::String^  sFilename)
static

Saves the depth values of the current Depth3D image to the given file as a point list.

The formats available are:

ASCII:

  • .txt – one point per row as plain text (default when no other extension matches, .txt is appended to filename)
  • .xyz – conform to the 'xyz' file standard (augments txt format with small header)

Binary:

Parameters
[in]sFilenameThe filename.
static System::Void Rx::Net::ApiLF::RxSetImage ( Rx::Net::ApiLF::EImgID  eImgID,
Rx::Net::Image xImage 
)
static

Set an internal image.

The available internal image IDs are listed in Rx::Net::ApiLF::EImgID::ID.

A new ray image can be set with eImgID set to Rx::Net::ApiLF::EImgID::Raw and a new white image with Rx::Net::ApiLF::EImgID::White. Rx::Net::ApiLF::RxSetImage copies the image data into the currently bound ray image and to the CUDA device. For the new ray image to be used in calculations you must call Rx::Net::ApiLF::RxPreProcess after setting the ray and the white image.

You can also circumvent the internal preprocessing of the ray image by writing directly the processed ray image to the CUDA device with Rx::Net::ApiLF::EImgID::Processed_Normalized. However, this will not change the Rx::Net::ApiLF::EImgID::Raw or Rx::Net::ApiLF::EImgID::White images currently bound.

Parameters
eImgIDInternal image ID. This is not a ray image handle.
[in]xImageThe image to copy into the specified internal image.
static System::Void Rx::Net::ApiLF::RxSetImage ( Rx::Net::ApiLF::EImgID  eImgID,
Rx::InteropNet::Runtime28::IImage xImageIfc 
)
static

Set an internal image.

The available internal image IDs are listed in Rx::Net::ApiLF::EImgID.

A new ray image can be set with eImgID set to Rx::Net::ApiLF::EImgID::Raw and a new white image with Rx::Net::ApiLF::EImgID::White. Rx::Net::ApiLF::RxSetImage copies the image data into the currently bound ray image and to the CUDA device. For the new ray image to be used in calculations you must call Rx::Net::ApiLF::RxPreProcess after setting the ray and the white image.

You can also circumvent the internal preprocessing of the ray image by writing directly the processed ray image to the CUDA device with Rx::Net::ApiLF::EImgID::Processed_Normalized. However, this will not change the Rx::Net::ApiLF::EImgID::Raw or Rx::Net::ApiLF::EImgID::White images currently bound.

Parameters
eImgIDInternal image ID. This is not a ray image handle.
[in]xImageIfcThe image to copy into the specified internal image.
static System::Void Rx::Net::ApiLF::RxStereo ( )
static
static System::Void Rx::Net::ApiLF::RxTotalFocus ( )
static

Focus on a depth surface.

Precondition
This function is only available if the feature Rx::Dongle::RuntimeFeature::FocusOnSurface is enabled.

In principle, each pixel of the result image can be focused individually. The function Rx::Net::ApiLF::RxTotalFocus makes this property available by focusing the ray image to the depth surface given in the internal depth image related to the target space that is selected (Set Rx::Net::ApiLF::EPar::Proj_CurrentTargetView to one of the spaces in Rx::Projection::ESpace). To calculate the depth image you have to call Rx::Net::ApiLF::RxDepthRay first and next Rx::Net::ApiLF::RxDepthMap, or by a user defined image set with Rx::Net::ApiLF::RxSetImage.

When setting a depth image with Rx::Net::ApiLF::RxSetImage it need not have the same dimensions as the resultant image. The given depth map is implicitly scaled to the size of the resultant refocused image.

If the size of the given depth map image is 1x1 pixel, the depth encoded for that pixel is applied to all focused pixel. The depth image has to be of pixel type Rx::Interop::Runtime28::EPixelType::Lum and data type Rx::Interop::Runtime28::EDataType::UByte. The pixel value range of [0,255] is mapped to [0,1] for the interpretation as depth.

Attention
The result is written to the internal image related to the Rx::Net::ApiLF::EPar::Proj_CurrentTargetView that is selected The size of this resultant image is set in relation to the ray image size via the parameter Rx::Net::ApiLF::EPar::Focus_ResImgDiv.

The following Parameter affect the computation of Rx::Net::ApiLF::RxTotalFocus:

Halcon Plugin - Function Name:
rx_total_focus
See also
Raytrix's Projection System - Target View
Using the Rayrix Light Field API
Raytrix Light Field API Computation - Detailed
static System::Void Rx::Net::ApiLF::RxUnlockCudaMutex ( )
static

Unlocks the CUDA Mutex.