Functions to perform computations with ray images. More...
Functions | |
static void | Rx::Net::ApiLF::RxAutoDepthPlanes () |
Do an automatic adaption of the depth planes. More... | |
static 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 void | Rx::Net::ApiLF::RxDepth3D () |
Object space depth 3D. More... | |
static void | Rx::Net::ApiLF::RxDepthColorCode () |
Colorizes the depth map created by Rx::Net::ApiLF::RxDepthMap. More... | |
static void | Rx::Net::ApiLF::RxDepthMap () |
Creates a depth map from the ray depth image created by Rx::Net::ApiLF::RxDepthRay. More... | |
static 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 void | Rx::Net::ApiLF::RxFreeImage (Rx::Net::ApiLF::EImgID eImgID) |
Frees memory used by image defined by eImgID. This invalidates the image. More... | |
static void | Rx::Net::ApiLF::RxGetImage (Rx::Net::ApiLF::EImgID eImgID, [Out] Rx::Net::Image^ %xImage) |
Get an internal image. More... | |
static void | Rx::Net::ApiLF::RxGetImage (Rx::Net::ApiLF::EImgID eImgID, Rx::InteropNet::Runtime28::IImage^ xImageIfc, bool bCreate) |
Get an internal image. More... | |
static void | Rx::Net::ApiLF::RxGetImageDevicePointer (Rx::Net::ApiLF::EImgID eImgID, System::IntPtr% pDevicePtr) |
Get the device pointer of an internal image. More... | |
static void | Rx::Net::ApiLF::RxGetImageFormat (Rx::Net::ApiLF::EImgID eImgID, [Out] Rx::Net::ImageFormat^ %xF) |
Get the image format of an internal image. More... | |
static void | Rx::Net::ApiLF::RxGetImageHistogram (Rx::Net::ApiLF::EImgID eImgID, array< unsigned >^%xHistogram, [Out] unsigned% 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 void | Rx::Net::ApiLF::RxGetImageMinMax (Rx::Net::ApiLF::EImgID eImgID, unsigned uChannel, [Out] float% fMin, [Out] float% fMax) |
Finds the minimum and maximum value of the given image ID. More... | |
static void | Rx::Net::ApiLF::RxGrid () |
Show a lens grid overlay on the raw ray image. More... | |
static void | Rx::Net::ApiLF::RxGridDataImage () |
Pre Process a ray image with a minimal Set of preprocessing parameter. More... | |
static bool | Rx::Net::ApiLF::RxIsImageValid (Rx::Net::ApiLF::EImgID eImgID) |
Test whether an internal image is valid. More... | |
static bool | Rx::Net::ApiLF::RxLockCudaMutex (int iTimeout) |
Locks the CUDA Mutex. More... | |
static void | Rx::Net::ApiLF::RxMapValue ([Out] double% dTrg, double dSrc, Rx::Net::ApiLF::EValueMapping eValueMapping) |
Map a given source value via the EValueMapping::ID eValueMapping. More... | |
static void | Rx::Net::ApiLF::RxMultiview () |
Creates a multi view image and stores the result in the image with the ID Rx::Net::ApiLF::EImgID::Multiview_ViewCamera. More... | |
static void | Rx::Net::ApiLF::RxPreProcess () |
Pre-Process a ray image. More... | |
static bool | Rx::Net::ApiLF::RxProject ([Out] array< double >^%adTargetPoint, array< double >^adSourcePoint, Rx::Net::ApiLF::ESpace eTarget, Rx::Net::ApiLF::ESpace eSource) |
Projects an array of points from the given source space into the given target space. More... | |
static void | Rx::Net::ApiLF::RxRefocusBasic () |
Focus image to a plane perpendicular to the optical axis, i.e. parallel to the image plane. More... | |
static void | Rx::Net::ApiLF::RxRemoveComputationFilterMask () |
Removes the computation filter mask image set by Rx::Net::ApiLF::RxSetComputationFilterMask. More... | |
static void | Rx::Net::ApiLF::RxResizeImage (Rx::Net::Image^ %xDstImage, Rx::Net::Image^ %xSrcImage, int iDivider) |
Resize an image. More... | |
static void | Rx::Net::ApiLF::RxSaveDepth3dMesh (System::String^ sFilename, double dMaxEdgeLength) |
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 void | Rx::Net::ApiLF::RxSaveDepth3dMesh (System::String^ sFilename, double dMaxEdgeLength, double dCropLeftPerc, double dCropRightPerc, double dCropTopPerc, 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 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 void | Rx::Net::ApiLF::RxSaveDepth3dPointList (System::String^ sFilename, double dCropLeftPerc, double dCropRightPerc, double dCropTopPerc, double dCropBottomPerc) |
Saves the depth values of the current Depth3D image to the given file as a point list. More... | |
static void | Rx::Net::ApiLF::RxSetComputationFilterMask (Rx::Net::Image^ xImage) |
Sets the computation filter mask image. More... | |
static void | Rx::Net::ApiLF::RxSetComputationFilterMask (System::String^ sFilename) |
Sets the computation filter mask image. More... | |
static void | Rx::Net::ApiLF::RxSetImage (Rx::Net::ApiLF::EImgID eImgID, Rx::Net::Image^ xImage) |
Set an internal image. More... | |
static void | Rx::Net::ApiLF::RxSetImage (Rx::Net::ApiLF::EImgID eImgID, Rx::InteropNet::Runtime28::IImage^ xImageIfc) |
Set an internal image. More... | |
static void | Rx::Net::ApiLF::RxTotalFocus () |
Focus on a depth surface. More... | |
static 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.
\see \ref page_ApiProjectionTargetView \see \ref page_UsingRaytrixSDK \see \ref page_ApiComputationDetailed.
|
static |
Colorizes the depth map created by Rx::Net::ApiLF::RxDepthMap.
\see \ref page_ApiProjectionTargetView \see \ref page_UsingRaytrixSDK \see \ref page_ApiComputationDetailed.
|
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:
\see \ref page_ApiProjectionTargetView \see \ref page_UsingRaytrixSDK \see \ref page_ApiComputationDetailed.
|
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. |
pDevicePtr | [out] 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. |
xF | [out] 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. |
xHistogram | [out] A reference of unsigned array where the histogram will be stored. |
uChannels | [in] The number of channels. |
|
static |
Finds the minimum and maximum value of the given image ID.
eImgID | The image ID. |
uChannel | The channel. |
fMin | [out] The minimum value. |
fMax | [out] 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. |
|
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.
dTrg | [out] Target value. |
dSrc | Source value. |
eValueMapping | The value mapping. |
|
static |
Creates a multi view image and stores the result in the image with the ID Rx::Net::ApiLF::EImgID::Multiview_ViewCamera.
The following Parameter affect the computation of Rx::Net::ApiLF::RxMultiview:
\see \ref page_UsingRaytrixSDK \see \ref page_ApiComputationDetailed.
|
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:
\see \ref page_ProgRaytrixMain \see \ref page_ApiComputationDetailed.
|
static |
Projects an array of points from the given source space into the given target space.
adTargetPoint | [out] The array of projected points. |
adSourcePoint | [in] The array of points to project. |
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:
\see \ref page_UsingRaytrixSDK \see \ref page_ApiComputationDetailed.
|
static |
Removes the computation filter mask image set by Rx::Net::ApiLF::RxSetComputationFilterMask.
|
static |
Resize an image.
xDstImage | [out] The target image to store the result. |
xSrcImage | [in] The image that is to be resized. |
iDivider | [in] 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.
sFilename | [in] The file name. |
dMaxEdgeLength | Limit for depth-variation in vertices. -1 = infinity. |
|
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.
sFilename | [in] 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:
sFilename | [in] The filename. |
|
static |
Saves the depth values of the current Depth3D image to the given file as a point list.
The formats available are:
ASCII:
Binary:
sFilename | [in,out] If non-null, filename of the file. |
dCropLeftPerc | The crop left perc. |
dCropRightPerc | The crop right perc. |
dCropTopPerc | The crop top perc. |
dCropBottomPerc | The crop bottom perc. |
|
static |
Sets the computation filter mask image.
This image is used to reduce the number of lenses used for depth estimation (Rx::Net::ApiLF::RxDepthRay).
It must have the same dimension as the raw image and a pixel type of Rx::InteropNet::Runtime28::EPixelType::Lum and a data type of Rx::InteropNet::Runtime28::EDataType::UByte.
Each lens of the raw image has a lens center that can be rounded to a pixel. If this pixel has the value 255 in the filter mask image, the corresponding lens is used. If this pixel has another value, the lens is not used.
xImage | [in] The computation filter mask image. |
|
static |
Sets the computation filter mask image.
This image is used to reduce the number of lenses used for depth estimation (Rx::Net::ApiLF::RxDepthRay).
It must have the same dimension as the raw image and a pixel type of Rx::InteropNet::Runtime28::EPixelType::Lum and a data type of Rx::InteropNet::Runtime28::EDataType::UByte.
Each lens of the raw image has a lens center that can be rounded to a pixel. If this pixel has the value 255 in the filter mask image, the corresponding lens is used. If this pixel has another value, the lens is not used.
sFilename | [in] The filename of the computation filter mask image to load. |
|
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 |
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:
\see \ref page_ApiProjectionTargetView \see \ref page_UsingRaytrixSDK \see \ref page_ApiComputationDetailed.
|
static |
Unlocks the CUDA Mutex.