Ask Your Question
0

Feature detection-based localization using OpenCV

asked 2016-04-21 14:22:33 -0600

dpwicaksa gravatar image

Is there any algorithm recommendation to do this? My project is using single-channel image (BW), consist of 2 images. First image is user defined which is a "map" of an area (let says room) and second image is sensor result (using RpLIDAR 360 degree laser scanner). The second image only contain some parts of the first one. The goal is find corresponding position on the first image.

I'm using OpenCV2.4.11 and work on raspberry-pi2

Raw RpLIDAR input

Raw RpLIDAR result image

By using erode and dilate function for filter, HoughLinesPrediction to improve line result, SURF feature detection (I already try using ORB), and FLANN matcher, here's the result so far:

image description

mismatched feature reading

image description

one of expected result example

Is there any way to improve feature detection or matching method? i'm using C++ compiler for OpenCV but also open for any suggestion.

Thanks in advance. Hope i make my question clear enough.

edit retag flag offensive close merge delete

Comments

1

most feature2d thingies work on gradients, thus fail on "binary" images.

berak gravatar imageberak ( 2016-04-21 14:41:04 -0600 )edit

1 answer

Sort by ยป oldest newest most voted
2

answered 2016-04-22 02:08:24 -0600

Siegfried gravatar image

Hi, you problem is called scan matching or point cloud registration and is a well known problem in robotics. In applications as yours typically an initial guess at which location the laser scan was located is available (the pose from the last time step, odometry data, ...) . So you can also use the most used algorithm, ICP or variants of it (see here, here and here ).

An implementation of ICP (GICP) from pointcloud library can be found here and a full scan matching component from ROS here.

If you have no initial guess the problem is much harder, one solution then be the algorithm presented in this video

edit flag offensive delete link more

Comments

thanks Siegfried. it seems that have to use about the video you linked, because my project had no initial guess. Sorry if this is out of topic, is the Point Cloud Library work same as OpenCV (because as far as i know OpenCV is a library too)? Sorry for asking this here since i had no idea where to ask about Point Cloud Library you mentioned.

dpwicaksa gravatar imagedpwicaksa ( 2016-04-22 11:35:53 -0600 )edit

Hi, Point Cloud Library is a library quite similar to OpenCV. Or in other words, what OpenCV for computer vision is, is Point Cloud Library for point cloud processing. It's also an Open Source project released under BSD license. So you can use it in commercial applications. Do you really have not initial guess about the scan position? My experience says that scan robust scan matching with not initial guess and noisy data (as in your example) is very very hard.

Siegfried gravatar imageSiegfried ( 2016-04-22 16:01:59 -0600 )edit

Thanks for your suggestion, now I'm trying to work on PCL. Yep, i had re-think about my project, and yes, it do not have any initial guess since the only input is environment reading by RpLIDAR. But for now, I try to focus on the "feature matching" itself, not the localization.

dpwicaksa gravatar imagedpwicaksa ( 2016-04-22 22:57:45 -0600 )edit

Question Tools

1 follower

Stats

Asked: 2016-04-21 14:22:33 -0600

Seen: 1,722 times

Last updated: Apr 22 '16