libvisiontransfer
6.5.0
|
Transforms a disparity map into a set of 3D points. More...
#include <visiontransfer/reconstruct3d.h>
Classes | |
class | Pimpl |
Public Member Functions | |
Reconstruct3D () | |
Constructs a new object for 3D reconstructing. More... | |
float * | createPointMap (const unsigned short *dispMap, int width, int height, int rowStride, const float *q, unsigned short minDisparity=1) |
Reconstructs the 3D location of each pixel in the given disparity map. More... | |
float * | createPointMap (const ImagePair &imagePair, unsigned short minDisparity=1) |
Reconstructs the 3D location of each pixel in the given disparity map. More... | |
void | projectSinglePoint (int imageX, int imageY, unsigned short disparity, const float *q, float &pointX, float &pointY, float &pointZ) |
Reconstructs the 3D location of one individual point. More... | |
void | writePlyFile (const char *file, const unsigned short *dispMap, const unsigned char *image, int width, int height, ImagePair::ImageFormat format, int dispRowStride, int imageRowStride, const float *q, double maxZ=std::numeric_limits< double >::max(), bool binary=false) |
Projects the given disparity map to 3D points and exports the result to a PLY file. More... | |
void | writePlyFile (const char *file, const ImagePair &imagePair, double maxZ=std::numeric_limits< double >::max(), bool binary=false) |
Projects the given disparity map to 3D points and exports the result to a PLY file. More... | |
pcl::PointCloud< pcl::PointXYZ >::Ptr | createXYZCloud (const ImagePair &imagePair, const char *frameId, unsigned short minDisparity=0) |
Projects the given disparity map to a PCL point cloud without pixel intensities. More... | |
pcl::PointCloud< pcl::PointXYZI >::Ptr | createXYZICloud (const ImagePair &imagePair, const char *frameId, unsigned short minDisparity=0) |
Projects the given disparity map to a PCL point cloud, including pixel intensities. More... | |
pcl::PointCloud< pcl::PointXYZRGB >::Ptr | createXYZRGBCloud (const ImagePair &imagePair, const char *frameId, unsigned short minDisparity=0) |
Projects the given disparity map to a PCL point cloud, including pixel RGB data. More... | |
Transforms a disparity map into a set of 3D points.
Use this class for reconstructing the 3D location for each valid point in a disparity map.
Definition at line 31 of file reconstruct3d.h.
visiontransfer::Reconstruct3D::Reconstruct3D | ( | ) |
Constructs a new object for 3D reconstructing.
Definition at line 74 of file reconstruct3d.cpp.
float * visiontransfer::Reconstruct3D::createPointMap | ( | const unsigned short * | dispMap, |
int | width, | ||
int | height, | ||
int | rowStride, | ||
const float * | q, | ||
unsigned short | minDisparity = 1 |
||
) |
Reconstructs the 3D location of each pixel in the given disparity map.
dispMap | Pointer to the data of the disparity map. The disparity map is assumed to have a 4-bit subpixel resolution. This means that each value needs to be divided by 16 to receive the true disparity. |
width | Width of the disparity map. |
height | Height of the disparity map. |
rowStride | Row stride (i.e. distance between two rows in bytes) of the disparity map. |
q | Disparity-to-depth mapping matrix of size 4x4. The matrix is stored in a row-wise alignment. Obtain this matrix from your camera calibration data. |
minDisparity | The minimum disparity, again with 4-bit subpixel resolution. Lower disparities will be clamped to this value before computing the 3D location. |
The output map will have a size of exactly 4*width*height float values. For each point the x, y and z coordinates are stored consecutively, plus one additional float (four bytes) as padding. Invalid disparities will be set to the given minimum disparity.
If the minimum disparity is set to 0, points with a disparity of 0 or an invalid disparity will receive a z coordinate of +inf. If a larger minimum disparity is given, points with a lower disparity will be at a fix depth that corresponds to this disparity.
The returned point map is valid until the next call of createPointMap() or writePlyFile().
Definition at line 82 of file reconstruct3d.cpp.
float * visiontransfer::Reconstruct3D::createPointMap | ( | const ImagePair & | imagePair, |
unsigned short | minDisparity = 1 |
||
) |
Reconstructs the 3D location of each pixel in the given disparity map.
imagePair | Image pair containing the disparity map. |
minDisparity | The minimum disparity with 4-bit subpixel resolution. |
The second image in imagePair
is interpreted as the disparity map.
Please see createPointMap(const unsigned short*, int, int, int, const float*, unsigned short) for further details.
Definition at line 87 of file reconstruct3d.cpp.
|
inline |
Projects the given disparity map to a PCL point cloud without pixel intensities.
imagePair | Image pair containing the disparity map. |
frameId | Frame ID that will be assigned to the created point cloud. |
minDisparity | The minimum disparity with 4-bit subpixel resolution. |
For this method to be available, the PCL headers must be included before the libvisiontransfer headers!
If the minimum disparity is set to 0, points with a disparity of 0 or an invalid disparity will receive a z coordinate of +inf. If a larger minimum disparity is given, points with a lower disparity will be at a fix depth that corresponds to this disparity.
Definition at line 44 of file reconstruct3d-pcl.h.
|
inline |
Projects the given disparity map to a PCL point cloud, including pixel intensities.
See createXYZCloud() for details.
Definition at line 52 of file reconstruct3d-pcl.h.
|
inline |
Projects the given disparity map to a PCL point cloud, including pixel RGB data.
See createXYZCloud() for details.
Definition at line 93 of file reconstruct3d-pcl.h.
void visiontransfer::Reconstruct3D::projectSinglePoint | ( | int | imageX, |
int | imageY, | ||
unsigned short | disparity, | ||
const float * | q, | ||
float & | pointX, | ||
float & | pointY, | ||
float & | pointZ | ||
) |
Reconstructs the 3D location of one individual point.
imageX | X component of the image location. |
imageY | Y component of the image location. |
disparity | Value of the disparity map at the image location. It is assumed that the lower 4 bits are the fractional component. This means that each value needs to be divided by 16 to receive the true disparity. |
q | Disparity-to-depth mapping matrix of size 4x4. The matrix is stored in a row-wise alignment. Obtain this matrix from your camera calibration data. |
pointX | Destination variable for the 3D point X component. |
pointY | Destination variable for the 3D point Y component. |
pointZ | Destination variable for the 3D point Z component. |
This method projects a single point from a disparity map to a 3D location. If the 3D coordinates of multiple points are of interest, createPointMap() should be used for best performance.
Definition at line 91 of file reconstruct3d.cpp.
void visiontransfer::Reconstruct3D::writePlyFile | ( | const char * | file, |
const unsigned short * | dispMap, | ||
const unsigned char * | image, | ||
int | width, | ||
int | height, | ||
ImagePair::ImageFormat | format, | ||
int | dispRowStride, | ||
int | imageRowStride, | ||
const float * | q, | ||
double | maxZ = std::numeric_limits<double>::max() , |
||
bool | binary = false |
||
) |
Projects the given disparity map to 3D points and exports the result to a PLY file.
file | The output file |
dispMap | Pointer to the data of the disparity map. The disparity map is assumed to have a 4-bit subpixel resolution. This means that each value needs to be divided by 16 to receive the true disparity. |
image | Rectified left input image in 8-bit gray scale format. |
width | Width of the disparity map and left image. |
height | Height of the disparity map and left image. |
format | Pixel format for the left image. |
dispRowStride | Row stride (i.e. distance between two rows in bytes) of the disparity map. |
imageRowStride | Row stride (i.e. distance between two rows in bytes) of the left image. |
q | Disparity-to-depth mapping matrix of size 4x4. The matrix is stored in a row-wise alignment. Obtain this matrix from your camera calibration data. |
maxZ | Maximum allowed z-coordinate. Points with a higher z-coordinate are not exported. |
binary | Specifies whether the ASCII or binary PLY-format should be used. |
The left image has to be provided for assigning a color to each point.
Definition at line 96 of file reconstruct3d.cpp.
void visiontransfer::Reconstruct3D::writePlyFile | ( | const char * | file, |
const ImagePair & | imagePair, | ||
double | maxZ = std::numeric_limits<double>::max() , |
||
bool | binary = false |
||
) |
Projects the given disparity map to 3D points and exports the result to a PLY file.
imagePair | Image pair containing camera image and disparity map. |
maxZ | Maximum allowed z-coordinate. |
binary | Specifies whether the ASCII or binary PLY-format should be used. |
The first image in imagePair
is interpreted as camera image and the second image as disparity map.
Please see writePlyFile(const char*, const unsigned short*, const unsigned char*, int, int, bool, int, int, const float*, double) for further details.
Definition at line 103 of file reconstruct3d.cpp.