Detection of a real object using a camera. The ability to search for real objects using the camera

I am developing a project in robotics using an Android camera. The robot can move and clean the surface if any objects are in the way. I am stuck in detecting objects on the way, I do not use any sensors to find the distance between the camera and objects. I use only the camera to search for objects on the way. I do not want to determine the shape, type, color of the object in the path. small objects along the way can be ignored, such as sand, grass, etc. There should not be any large objects in the path (in the marked part of the figure below)

enter image description here

When objects using images in cameras are detected, shadows are defined as objects. From the above figure, a musical symbol is defined as an object. Is there any open source paid library for detecting a real object using a camera (this will be more useful if it will be used in Java or C ++). I tried opencv, javacv, jhlabs, jjil, aviary sdk, jiu, imagemagic etc. But no, where can I find the exact solution for my need. If anyone who works with this image processing, suggest me what I can do when real objects are detected using the Android camera. If this is not possible, explain why this is not possible.

Features I have tried:

  • Face recognition algorithm (function detection): - Face recognition algorithm based on pattern matching. This is not applicable in this case. those. here the object can be any or any form. There is no template to match.

  • Object recognition: Object recognition also does the same as with patten. I did not want to recognize the object, I just wanted to know that this is an object in the marked part of the image, and it is a real object (i.e. No sex pictures, shadows, etc.).

  • Edge Detection: I tried different edge detection algorithms, but this is also not an exact solution for me. those. paintings and shadows with edges, so we can’t assume that the edges we found are real objects.

+6
source share
6 answers

If anyone is working with this image processing, please suggest me what I can do when real objects are detected using the Android camera. If this is not possible, explain to me why this is not possible.

Real-time detection of objects on the fly is an area of ​​intensive research.

Currently, our existing algorithms have only capable pattern matching and search for predefined images in the camera frame.

The problem with finding the real world is that the real world is also ... real. You have many options for any object or subject, and it is not possible for one library to detect them. Real-world detection is plausible only through extensive data collection and training through machine learning, which requires more processing and battery power than most mobile devices can provide.

+4
source

You may want to familiarize yourself with methods called structure from motion. If you have a series of images from a single camera taken at short intervals, you can get some 3D information about the scene in the pictures. Unfortunately, I don’t know a single library that would do this for you out of the box, but this is a fairly popular problem, so some searches can give you a ready-made solution.

+2
source

Much has not been analyzed under video surveillance. First you need to determine what level of success you need. If you try all this in one image, you probably know that this will not work :). In video analysis, you can find some good motion detection algorithms that will give you all moving objects against some background. You have a more complicated case when you move. You somehow need to simulate this background. If you want your robot to move to some bright background, for example, how to draw, how you will know what an object is without perceiving depth. Maybe try something with shadows, but no. And in the end, these algorithms are so intense, the better the result you need. Android is not intended for this. You can do simple processing, but you want it to be much larger than it is currently.

The bottom line is that you need to adjust your needs / resources a bit.

PS. If you manage to do this, as you first said, we will see you on some yacht with great models.

Hope this helps and enjoy your work.

+1
source

If the camera is parallel to the ground, and the ground is usually flat, you can estimate the distance of objects by counting your position on the video frame. Hogher object distance, more to the top of the image it will be. In fact, you can appreciate the value in meters with some noise, like we humans.

I think that your problem of recognizing "real objects" can be translated into: "Find non-flat (to the ground) visual elements, in other words, find objects with a certain height."

Do you consider a stereotypical approach? Using two cameras, you can more effectively deal with three-dimensional problems.

+1
source

I think you should use more than one camera ..... give a two-dimensional view of the image ..... hope this helps ....

0
source

You can train or use the pre-training model A deep learning model using Tensorflow, and first Keras needs to collect as much data as possible about the object, make sure that they are collected from the field, and then try to train the model with a different architecture to suit your needs. Set up hyperparameters and convert the model in Tensorflow Lite to packaging mode in the Android application.

for more information you can visit tenserflow .

This is the easiest way I've found to solve the problem of computer vision.

0
source

Source: https://habr.com/ru/post/945396/


All Articles