-
Notifications
You must be signed in to change notification settings - Fork 189
MultiDetection
Find-Object 0.4.2 required
This tutorial shows how enabling multiple detection of the same object. To enable multiple detection, the parameter General->multiDetection
should be checked. The approach is as following:
- As usual, we match all features between the objects and the scene.
- For an object which is in the scene two times (or more), it should have twice of matched features. We apply a RANSAC algorithm to find a homography. The inliers should belong to only one occurrence of the object, all others considered as outliers. We redo the homography process on the outliers, then find another homography… we do this process until no homography can be computed.
- It may happens that a homography can be found superposed on a previous one using the outliers. You could set
Homography/ransacReprojThr
(in pixels) higher to accept more inliers in the homographies computed, which would decrease the chance of superposed detections. Another way is to ignore superposed homographies on a specified radius with the parameterGeneral/multiDetectionRadius
(in pixels).
- To try with same data used here, download the following objects and scene:
- 38.bmp
- 39.bmp
- multi-scene.jpg
- Open Find-Object
- "Edit->Add objects from files…" and select 38.bmp and 39.bmp.
- "Edit->Camera from single file…" and select multi-scene.jpg.
General/mirrorView = false
General/multiDetection = true
General/multiDetectionRadius = 30 pixels
You should see something like this:
With the ROS package:
$ rosrun find_object_2d print_objects_detected
As you can see, the object 38 is detected two times:
- If you set
General/multiDetectionRadius = 0
, there are multiple detections superposed (on the left we can see that object 38 is detected 4 times and object 39 is detected 2 times):
On ROS, we can see that some homographies are mostly the same:
The parameter General/multiDetectionRadius
is helpful in these cases to ignore detection of the same object in a specified radius. You could set Homography/ransacReprojThr
higher than 1.00 to accept more inliers in the homographies computed, which would decrease the chance of superposed detections and improve time computation performance (less homographies should be tested).