I was wondering if you had any recommendations for how to detect objects in this scene:
I have a time-of-flight camera (basically generates a gray scale image where "brightness" represents depth). It will be mounted on a slow-moving machine on uneven terrain. (outside on rocky ground) The camera will be pointed at the ground (45 degree angle) and will look for objects that are at least x ft tall. I can convert this all to 3D points and try to solve it in 3D space, but from a computational requirements perspective, we'd like to try and solve it in 2D space.
I've attached three images. "Input.png" shows the raw sensor data. Obviously there's a lot of noise in the image, so the first thing I did was clean it up. I cropped the image, used a bilateral filter, and then a max filter and then a min filter. As can be seen in "Filtered.png," this seemed to clean up the image nicely. Now the question is, where do I go from there?
I tried two approaches that can be seen in "COG-Thresh.png."
Approach 1: (COG-Thresh.png, left image) Sobel Edge -> Threshold -> ConnectPoints -> CenterOfGravity. This seems to work pretty well, but each module has to be carefully tuned. I haven't tried it, but it seems that it won't handle scene variation very well.
Approach 2: (COG-Thresh.png, right image) I don't have this fully scripted, but here's the idea: When you ramp the "Threshold minimum" parameter from 0-255, the tops of objects will "pop-out" of the scene. At first, the ground is the only visible object. As you ramp the parameter, the top of an object will appear as a blob. As you continue to ramp the parameter, the blob will grow and eventually meet the ground. If you track objects that "pops out" in the scene and when the blob meets the ground, you can determine the size of each object. This approach seems to be fairly immune to scene variation, but computationally, it's rather intensive.
Do you have any suggestions for how I might proceed? There are several characteristics I've identified:
-We're only looking for relatively tall objects. Consequently, the top and side edges of the object will be clearly defined. However, the bottom will always "fade" into the ground plane. (assuming the object is sitting on the ground)
-The ground plane can only be so steep. Consequently, the "average" ground plane will always fall within a maximum/minimum gradient.