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... | |
Functions to perform computations with ray images.
|
static |
Do an automatic adaption of the depth planes.
|
static |
Convert a Rx::CRxImage to a new pixel and data type.
[out] | xDstImage | Destination image. |
[in] | xSrcImage | Reference to the image. |
eDstImageType | Pixel type of the converted image. | |
eDstDataType | Data type of the converted image. |
|
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.
|
static |
Colorizes the depth map created by Rx::Net::ApiLF::RxDepthMap.
|
static |
Creates a depth map from the ray depth image created by Rx::Net::ApiLF::RxDepthRay.
The following Parameter affect the computation of Rx::Net::ApiLF::RxDepthMap:
|
static |
Estimates the depth of the bound ray image and stores the result in the image with the ID Rx::Net::ApiLF::EImgID::DepthRay.
The following Parameter affect the computation of Rx::Net::ApiLF::RxDepthRay:
|
static |
Frees memory used by image defined by eImgID. This invalidates the image.
eImgID | Identifier for the image. |
|
static |
Get an internal image.
The available internal image IDs are listed in Rx::Net::ApiLF::EImgID
.
eImgID | Internal image ID. This is not a ray image handle. | |
[out] | xImage | On return contains a copy of the specified internal image. |
|
static |
Get an internal image.
The available internal image IDs are listed in Rx::Net::ApiLF::EImgID
.
eImgID | Internal image ID. This is not a ray image handle. | |
[out] | xImageIfc | On return contains a copy of the specified internal image. |
bCreate | If 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 |
Get the device pointer of an internal image.
eImgID | Internal image ID. This is not a ray image handle. | |
[out] | pDevicePtr | On return contains the internal image's device pointer. |
|
static |
Get the image format of an internal image.
The available internal image IDs are listed in Rx::Net::ApiLF::EImgID.
eImgID | Internal image ID. This is not a ray image handle. | |
[out] | xF | On return contains the internal image's format. |
|
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.
eImgID | The image ID. | |
[out] | xHistogram | A reference of array<System::UInt32> where the histogram will be stored. |
[in] | uChannels | The number of channels. |
|
static |
Finds the minimum and maximum value of the given image ID.
eImgID | The image ID. | |
uChannel | The channel. | |
[out] | fMin | The minimum value. |
[out] | fMax | The maximum value. |
|
static |
Finds the minimum and maximum value of the given image ID.
eImgID | The image ID. | |
uChannel | The channel. | |
[out] | fMin | The minimum value. |
[out] | fMax | The maximum value. |
|
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 |
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 |
Test whether an internal image is valid.
eImgID | Internal image ID. This is not a ray image handle. |
true
if the image is valid, false
otherwise.
|
static |
Locks the CUDA Mutex.
iTimeout | If the mutex is locked, the timeout defines the time in ms until a Rx::Net::RxException is thrown. |
|
static |
Map a given source value via the EValueMapping::ID
eValueMapping.
[out] | dTrg | Target value. |
dSrc | Source value. | |
eValueMapping | The value mapping. |
|
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:
|
static |
Projects a point or a set of points in a given source space into a given target space.
[out] | bTargetPointValid | Target point valid. |
[out] | adTargetPoint | Target point. |
[in] | adSourcePoint | Source point. |
eTarget | The target space. | |
eSource | the source space. |
|
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:
|
static |
Resize an image.
[out] | xDstImage | The target image to store the result. |
[in] | xSrcImage | The image that is to be resized. |
[in] | iDivider | The image size divider. For example, if iDivder = 2, then the resultant image size is half the original size. |
|
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.
[in] | sFilename | The file name. |
dMaxEdgeLength | Limit for depth-variation in vertices. -1 = infinity. | |
dCropLeftPerc | The crop left perc. | |
dCropRightPerc | The crop right perc. | |
dCropTopPerc | The crop top perc. | |
dCropBottomPerc | The crop bottom perc. |
|
static |
Saves the depth values of the current Depth3D image to the given file as a point list.
The formats available are:
ASCII:
Binary:
[in] | sFilename | The filename. |
|
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.
eImgID | Internal image ID. This is not a ray image handle. | |
[in] | xImage | The image to copy into the specified internal image. |
|
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.
eImgID | Internal image ID. This is not a ray image handle. | |
[in] | xImageIfc | The image to copy into the specified internal image. |
|
static |
Creates a stereo image and stores the result in the image with the ID Rx::Net::ApiLF::EImgID::Stereo_ViewCamera
.
The following Parameter affect the computation of Rx::Net::ApiLF::RxStereo:
|
static |
Focus on a depth surface.
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.
The following Parameter affect the computation of Rx::Net::ApiLF::RxTotalFocus:
|
static |
Unlocks the CUDA Mutex.