0

I have a set of videos that were captured by a lidar. My data is raw, meaning that each video file contains range and intensity (gray scale) data. Now, I want to create 3D point cloud from range data. Based on what I read, the Lidar data that I have looks pretty much the same as Kinect data (depth + intensity). But, while there are codes and equations that let you convert Kinect depth to 3D point cloud, I haven't found any such equation for the Lidar data. I hope someone could help me with an equation or a sample code (preferably in Matlab) that does the conversion from Lidar range data to 3D point cloud.

Edit: The videos that I have contain human targets both indoors and outdoors. Unfortunately, I cannot share any data. The lidar camera that was used for video recording is TigerCub 3D flash Lidar. I don't have any access to the camera, only have the data. Also, I checked the manual of the camera, but couldn't find any information that would be helpful. Just like Kinect, I thought there must be a relation between range (depth) data and 3D point cloud, and all I need is such an equation to help me generate 3D point cloud.

Miranda
  • 565
  • 1
  • 10
  • 27
  • You should really give [more information](https://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/47593/versions/9/previews/documentation/examples/PointCloud/html/PointCloudExample.html) about your LiDAR system. An example would also be very helpful. Please post what you tried so far. – m7913d Mar 13 '17 at 15:04
  • @ m7913d please check the edit. – Miranda Mar 13 '17 at 15:32
  • An equation which we are not able to give, because we get not enough information. The best we can do is give a very general equation, which is not the [goal of stackoverflow](http://stackoverflow.com/help/how-to-ask). Please use your favorite search engine to find more information. – m7913d Mar 13 '17 at 18:52
  • There is a general equation for extracting point cloud (x,y,z) from depth (in the case of Lidar range) data in Kinect. There are some constants that will change value based on the type of your Kinect camera. I guess there is a general equation for Lidar as well, which might be different only in terms of the value of some constants that depend on the type of your camera (I also added the type of Lidar!). I don't think someone would down vote just because they cannot answer a question! – Miranda Mar 13 '17 at 19:10
  • If another person disagrees with me, he can always upvote your question. – m7913d Mar 13 '17 at 19:21

1 Answers1

2

This might be useful for another person who has the same question. Basically, 3D flash Lidar camera operate (even look) pretty much like the 2D digital camera. The focal plane array of a 3D flash lidar camera has pixels in rows and columns, but it also captures a 3rd dimension data which is depth or range of the object, where the latter is called range data. This means a 3D flash Lidar camera generates intensity as well as range data.

The similarity between 3D flash lidar and 2D digital camera let us apply the same pinhole camera analogy for the 2D digital camera, to 3D flash lidar cameras. So, the 3D point cloud from Lidar range data can be calculated by the following equations:

x(pointCloud)= x(image)*range/f 
y(pointCloud)= y(image)*range/f 
z(pointcloud)= range

You just need to multiply by a constant to get the data in the unit you want (depending on the unit of f which is focal length of the camera). x,y(image), and range are the x, y and range at each point (extracted from the range data) and x,y, and z(pointCloud) are the corresponding coordinates in the point cloud. For a through explanation see this paper.

Miranda
  • 565
  • 1
  • 10
  • 27