Unit of Measurement for LiDAR Point Clouds - point-clouds

I am interested in determining the unit of measurement from my point cloud.
I researched and found this where it says it is based on your device of gathering data.
I have a 64e Velodyne LiDAR system. However, I can't find anywhere that it mentions what units it gathers data in (I might just be overlooking it).
Here is a link to their user manual: manual

The 64e Velodyne LiDAR system's manual mentions the range of the sensor in meters (see page 2, second paragraph):
The HDL-64E is rated to provide usable returns up to 120 meters.
The manual's C appendix brings information about their software for reading and visualizing lidar data: Digital Sensor Recorder (DSR). It says on page 14, last paragraph:
Note: In live display mode, click on the double arrow button to begin display. The concentric gray circles and grid lines represent 10 meter increments from the sensor, which is depicted on the screen by a white circle.
You can use the sample data, which comes together with the DSR software CD, to extract descriptive information and statistics from this cloud and check the units by yourself.
Few months ago, I posted a tutorial about how one could do that using Fusion; the US Forest Service's software for lidar processing. See here:
Extracting descriptive information from a LiDAR cloud (.las files)

Related

How to design a mission to visit several locations and in each location process some computer vision tasks on the mobile platform?

I would need to make my dron Mavic2 Pro to visit approx 10 locations in relatively low altitude 1.7 m. In each location the camera should look at right direction and the mission paused to let the mobile application process some CV tasks. I am not sure what is the best approach to make a mission that is partially processed on mobile platform? What to use in DJI mobile sdk api to pause mission when the location is reached?
I am going to use a time line mission composed from sequence of GoToAction. I wonder if this is a good way to do it. Is there a better solution?
Is MissionControl.Listener right place to interrupt a mission when a TimeLineElement finish or should I use WaypointReachedTrigger?
I wasn't able to find any suitable example.
Please add specific programming question. Otherwise, all answer is primarily opinion-based see https://stackoverflow.com/help/dont-ask for detail
DJI method allows you to control the drones gimbal and gps navigation through MissionAction. The gotoaction is a subclass of the Missionaction class. the gotoaction only goes to some GPS location . So you need other things in the mission action such as gimbalattiudeaction and camera capture action to perform camera pointing and capturing. See the Fig below.
For CV tasks, it is easy to link DJI app to OpenCV. But I highly not recommend you to do so as the task such as dection using CNN system takes too much resources. The popular approach is to upload the image taken in local buffer to a local server with GPU for processing in near real-time manner. See the Fig below, I`m using WSDK with windows online OCR for detection. Video at https://youtu.be/CcndnHkriyA . I tried with local phone based approch, but result is limited by the model accuracy. And I could not apply high accuracy model because of the processing demand for such model is high. You can see my demo in the Fig below
What you want is pretty ez to implement but hard to perfect. Flying in low altitude(1.7m) requires you to have some degree of obstacle avoidance and GPSless path planning. The one implemented in Mavic hardware is only simple avoidance or slip through. For a bit more complex like go around a wall or maze-like environment, it better to add your own global path planer and local path planner. For the feedback you can use the SVO method to get odometry and map the local sparse obstacle map for inflated radius calculation. See Fig below.
Fig taken from video https://www.youtube.com/watch?v=2YnIMfw6bJY.
The feedback code is available at https://github.com/uzh-rpg/rpg_svo.
The path planning code you can try with ETH`s https://github.com/ethz-asl/mav_voxblox_planning as well.
Good luck with your work.

How to read Google Tango area learned tracking success, confidence, accuracy via Tango API?

I have a Google Tango application where position repeat accuracy of a learned area description is critical.
https://www.youtube.com/watch?v=jMbNykdPDRo
When area description tracking is activated, the repeat accuracy normally is high. However, if finding learned feature points in a learned area description fails after a certain time (e.g. after lighting conditions changed or the device entered a not yet learned area), repeat accuracy decreases (due to starting missing area description).
How could we get some feedback from the area tracking success to detect such as case?
Examples: how many feature points/frames were successfully tracked against some ADF, or how confident/accurate the pose position actually is for a certain area description?
I cannot find anything useful in the API.
I know such a that field is existing in the Tango Core as you can clearly see in the Tango Debug Overlay App ('Tracking Success').
http://grauonline.de/alexwww/tmp/tango_debug_overlay_app.jpg
The tracking data is not available through API, the tool you saw from the picture is developed by Tango team, and it can be downloaded here.
On top of API, the best way to identify pose quality is to check pose status returned from callbacks, and check TangoEvent data.

Pixels Per Foot (PPF) required for various image processing algorithms?

I'm working on a project in which images/video will need to be processed in order to detect certain objects within the frame. For this project, I'm in charge of selecting hardware (image sensor, lens, processor, etc), and I'd like to select the lowest cost image sensor possible for cost-constraint reasons. For the application, the camera will adhere to the following two requirements:
The camera will be at a fixed position
The distance to the object of interest is known
So, I'm wondering if there is any data/recommendations like the following:
"Based on algorithm X (e.g. face detection), select an image sensor / lens combination so that the object of interest is covered by a pixel-density of at least 40 pixels-per-foot."
For a few use cases, such as face detection or face recognition, I've found some materials available online that have recommended minimum PPF requirements to ensure acceptable data is fed to the algorithm (Pixel Density Reqs for Face Detection). Obviously, any detection requirements are heavily algorithm dependent, but I was hoping maybe someone could provide some insight or resources they've come across to address this.
Some (slightly) more specific information - if possible, I'd like to be able to perform the following:
Perform facial detection (not necessarily recognition)
Discern/detect a human from the front, back, and top
Also, I'm aware that there are image processing libraries available for computer/machine vision (such as OpenCV), could this library (or similar ones) contain this information? I'll look into it, but if someone has a specific library to reference that would be very helpful.
Thanks!

Image Cropping - Region of Interest Query

I have a set of videos of someone talking, I'm building a lip recognition system therefore I need to perform some image processing on specific region of the image (the lower chin and lips).
I have over 200 videos, each containing a sentence. It is natural conversation therefore the head constantly moves so the lips aren't in a fixed place. I'm having difficulty specifying my region of interest in the image as it is very tiresome having to watch through every video and mark out how big my box to ensure the lips are cropped within the ROI.
I was wondering if there would be an easier way to check this, perhaps using MATLAB? I was thinking I could crop the video frame by frame and output an image for each frame. And then physically go through the images to see if the lips go out of frame?
I had to solve a similar problem dealing with tracking the heads and limbs of students participating in class discussions on video. We experimented with using state of the art optical flow tracking, from Thomas Brox ( link, see the part about large-displacement optical flow.) In our case, we had nearly 20 terabytes of videos to work through, so we had no choice but to use a C++ and GPU implementation of optical flow code; I think you will discover too that Matlab is impossibly slow for doing video analysis.
Optical flow returns to you detailed motion vectors. Then, if you can just mark the original bounding box for the mouth and chin in the first frame of the video, you can follow the tracks given by the optical flow of those pixels and this will usually give you a good sequence of bounding boxes. You will probably have errors that you have to clean up, though. You could write a Python script that plays back the sequence of bounding boxes for you to quickly check for errors though.
The code I wrote for this is in Python, and it's probably not easy to adapt to your data set-up or your problem, but you can find my affine-transformation based optical flow tracking code linked here, in the part called 'Object tracker using dense optical flow.'
The short answer is that this is a very difficult and annoying problem for vision researchers. Most people "solve" it by placing their videos, frame by frame, onto Mechanical Turk, and paying human workers about 2 cents per frame that they analyze. This gives you pretty good results (you'll still have to clean them after collecting it from the Mechanical Turkers), but it's not very helpful when you have tons o' videos and you cannot wait for enough of them to randomly get analyzed on Mechanical Turk.
There definitely isn't any 'out of the box' solution to region-of-interest annotation, though. You'd probably have to pay quite a lot for third-party software that did this automatically. My best guess for that is to check out what face.com would charge you and how well it would perform. Be careful that you don't violate any researcher confidentiality agreements with your data set though, for this or Mechanical Turk.

How do I scale to real-world units when generating printed output from a Cocoa app?

I am writing a specialized CAD tool in Cocoa. The tool reads "Gerber" files that contain precise dimension information and very fine details, and it needs to produce printed output that exactly corresponds to the specifications (assuming they're within the capabilities of the print device).
I can easily scale my drawing to any resolution, but how do I get accurate resolution info for the print destination device inside my -drawRect: method?
Digging around in the docs, I see where I could get at some of the resolution info presented in the Print Setup dialogs; however, I don't believe that info is detailed enough. For example, it will typically say that an inkjet printer is 600 DPI, when the actual device does not produce square dots (e.g. the "real-world" resolution might be something like 620x400 DPI).
[There is an interesting article that explains in detail why knowing the hardware resolution is critical to avoiding rasterization artifacts in printed output.]

Resources