Detection of static and dynamic pedestrians from sparse 3D point clouds - machine-learning

I want to use point clouds to detect static and dynamic people. However, I use VLP-16 and it is obvious the point clouds will be very sparse in the vertical direction.
I have study related literatures such as use deep learning (PointNet, PointPillar, SECOND, PointRCNN...) or machine learning (SVM), but most methods not fit my need.
Are there some methods that take my need (detect static and dynamic people use lidar only)?
If so, could you possibly tell me how to achieve that?
Any help is much appreciated. Thanks:)

I think these repositories will help you to solve your problem.
https://github.com/tusimple/LiDAR_RCNN
https://github.com/trinhkle07/pedestrians-3d-detection
https://github.com/praveen-palanisamy/multiple-object-tracking-lidar

Related

from heatmap, calculate discrete points

Sorry if this question might sound like another I'm too lazy to google one, but I couldn't find what I'm looking for.
This question is for avoiding to reinvent the wheel. I think that what I'm looking for might exist, so I dont want to start out implementing it on my own:
I want to turn a heat map into a list of discrete points. I'm sure that an algorithm can be used which first thresholds the heatmap and then, for every "island" which was created by the thresholding, finds the gravitational center. This center would be a point. I want to get the list of these points:
Step 0:
Step 1:
Step 2:
I wonder if such an algorithm already exists, or if there is a better approach to this than my idea. Moreover, it would be perfect if there is a ready to use implementation, of course. E.g. computer vision libraries like OpenCV have the thresholding included. I just couldn't find the next step.
My target platform is iOS, so for implementations, Objective-C, C or C++ is preferred.
You could do
Apply Threshold binary on source.
Find contour.
Finally calculate contour mass center using Image Moment.
There are a lot of ways to reach what you are looking for. This is one of them:
By applying cv::threshold(); you should get something like this:
Now it's time for cv::distanceTransform();and cv::normalize();
You can see it better by appling cv::applyColorMap();
Next step, cv::connectedComponents(); to make sure there won't be anything connected:
And finally cv::approxPolyDP(); and cv::minEnclosingCircle(); to find centers:
I hope this was helpful!
Keep up the good work and have fun :)
You can look at my post for the question whose link is mentioned below. Basically, after thresholding you can get some circles or elipses. Then you can fit a gaussian mixture model on them to estimate the exact centers. There are many existing libraries to fit GMMs
Robust tracking of blobs

Histogram comparision

Is it possible to compare two intensity histograms (derived from gray-scale images) and obtain a likeness factor? In other words, I'm trying to detect the presence or absence of an soccer ball in an image. I've tried feature detection algorithms (such as SIFT/SURF) but they are not reliable enough for my application. I need something very reliable and robust.
Many thanks for your thoughts everyone.
This answer (Comparing two histograms) might help you. Generally, intensity comparisons are quite sensitive as e.g. white during day time is different from white during night time.
I think you should be able to derive something from compareHist() in openCV (http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.html) to suit your needs if compareHist() does fit your purpose.
If not, this paper http://www.researchgate.net/publication/222417618_Tracking_the_soccer_ball_using_multiple_fixed_cameras/file/32bfe512f7e5c13133.pdf
tracks the ball from multiple cameras and you might get some more ideas from that even though you might not be using multiple cameras.
As kkuilla have mentioned, there is an available method to compare histogram, such as compareHist() in opencv
But I am not certain if it's really applicable for your program. I think you will like to use HoughTransfrom to detect circles.
More details can be seen in this paper:
https://files.nyu.edu/jb4457/public/files/research/bristol/hough-report.pdf
Look for the part with coins for the circle detection in the paper. I did recall reading up somewhere before of how to do ball detection using Hough Transform too. Can't find it now. But it should be similar to your soccer ball.
This method should work. Hope this helps. Good luck(:

Hand sign detection

I am trying to identify static hand signs. Confused with the libraries and algorithms I can use for the project.
What need to it identify hand signs and convert in to text. I managed to get the hand contour.
Can you please tell me what is the best method to classify hand signs.
Is it haar classifier, adaboost classifier, convex hull, orientation histograms, SVM, shift algorithm, or any thing else.
And also pls give me some examples as well.
I tried opencv and emugcv both for image processing. what is best c++ or c# for a real time system.
Any help is highly appreciated.
Thanks
I have implemented a handtracking for web applications in my master deggree. Basically, you should follow those steps:
1 - Detect features of skin color in a Region of Interest. Basically, put a frame in the screen and ask for the user put the hand.
2 - You should have a implementation of a lucas kanade tracker method. Basically, this alghorithm will ensure that your features are not lost through the frames.
3 - Try get more features for each 3 frames interval.
The people use many approaches, so I cannot give a unique. You could make some research using Google Scholar and use the keywords "hand sign", "recognition" and "detection".
Maybe you find some code with the help of Google. An example, the HandVu: http://www.movesinstitute.org/~kolsch/HandVu/HandVu.html
The haar classifier (method of Viola-Jones) help to detect hand, not to recognize them.
Good luck in your research!
I have made the following with OpenCV. Algorithm:
Skin detection made in HSV
Thinning (if pixel has zero neighbor than set zero)
Thicking (if pixel has neighbor nonzero then set it nonzero)
See this Wikipedia page for the details of these.
You can find the best trained cascade to detect hand using OpenCV from the GitHub...
https://github.com/Aravindlivewire/Opencv/blob/master/haarcascade/aGest.xml
Good luck...

Optical Flow vs. Haar Cascade

intend to programme navigating an iPad App with head motions (originally hand motions, but hands seem to difficult to detect at the moment): left, right, up and down. So I plan to use openCV and either detect the optical flow of the head area, or detect the ears and head of the user with haar cascades (openCV is delivered with quite precise head and ear xmls). Can anyone offer some advice on which solution to use? Will one of the mentioned need more power? Ear and head detection might be easier to programme? I would like to avoid to much effort in the wrong direction and don't have much expertise in my current surroundings...
thank you for any help, advice, ideas!
I would suggest to use Haar cascades because optical flow is more expensive in computing time!
Is using the native face detection in iOS 5 not an option for what you want?
I'm thinking outside the box here, but I've been with OpenCV before and it still hurts..
http://maniacdev.com/2011/11/tutorial-easy-face-detection-with-core-image-in-ios-5/
*The idea of course, being that you apply this to live input somehow
One way could be using Hidden Markov Models. There is a lot of research material(working prototypes) on how to use HMMs to recognize head gestures.
I believe ear haar classifiers are not that effective with cluttered background. Please let us know if you've got it to work!

"Object placed on top" detection with OpenCV

I'm new to the field of computer vision and I want to solve the following task (preferrably with OpenCV and C#, but other solutions like with Scilab? are also gratefully welcome):
There is some reference object like a hand (more or less static) in the scene - the camera is looking down on the object. Now I want to recognize if there is something on my hand (whether it changes the overall shape of my hand or if its just as small as sitting in my palm).
This task is for demonstration purposes only hence I want to use as less effort as possible. I'd like to train it with a static picture and use it in a real environment.
Any help, hint or steps how to tackle this problem are deeply appreciated.
Thank you in advance!
If it's largely static, then I'd recommend background subtraction. It will be very robust and blazingly fast.
You can run a Gaussian filter + thresholding (fixed threshold/Otsu-type adjusting global thresholds/adaptive local threshold) to grab blobs in the difference image. The blobs will denote change and likely something new.
You can then intersect that with the original detected palm region to figure out if there's an intersection.

Resources