Image recognition without using internet

3.8k Views Asked by At

I want to scan image from camera and compare it with preloaded images. I want to recognize the scanned image.

Example: I will save this image within my app and when I scan such image, I want to recognize it.

enter image description here
(source: iconarchive.com)

Is there any library or SDK available to achieve above feature without using Internet while recognition process?

I have tried with but I am not getting promising result and performance. I don't mind to use any paid SDK also.

Note : I want to achieve it when user don't have internet.Everything should be working in offline mode.

4

There are 4 best solutions below

0
On BEST ANSWER

[EDIT: Moodstocks has been acquired by Google and no longer offers these services]

[Disclaimer: I work for Moodstocks]

You should have a look at the Moodstocks SDK: it offers the ability to perform image recognition directly on-device.

In practice, your part of the work will consist in:

  • uploading the images you intend to recognize on the Moodstocks API,
  • integrating the Moodstocks SDK into your Android app.

From your users' point of view now: they will need to connect to the internet at most [1] one time. The first time they open the app, the Moodstocks SDK will take care of synchronizing the image signatures required for recognition from our servers directly onto the device. Once this is done, the Moodstocks SDK will be able to instantly recognize any of the image, completely offline!

You can refer to our documentation for more additional details.


[1]: if you need your app to work completely offline, the image signatures can be bundled directly within the application. This removes the need for an initial internet connection!

0
On

You also can use Wikitude SDK to do that by creating a target collection using the Wikitude Target Manager tool and downloading it as a WTC file.

Maybe you could have some problems to recognize this image due to their low complexity. I think you should test it to clear up any doubts.

0
On

Another solution is Vuforia. They provide a recognition library that you can integrate in your application. The only downside is that you have to upload the images that you want to recognize on their website in order to obtain the 2 files (XML and DAT - where the image descriptors are stored). The DAT file is used by the library to compare against the images you provide (camera frames for example) and the XML file contains the name and the size of each target image that you upload on their website; when an image is recognized the library returns the name of the image that has been stored in the XML file. So once you have the files everything is performed locally (on the device = offline). I've tested the library and as you might already heard, the solution is very fast and robust. They also provide the transformation matrix in case you want to track the recognized target image.

0
On

Idea I made few years ago, on a small Linux I scan my image from the camera and convert it to information with ImageMagic for Linux. The information is a text file. Then I do the same for the next image , taken few seconds after. Investigating the information from the two images I found few parameters changed radically when the new image is changing. For example if a person is suddenly entering the room. This trigger my software the save those images for longer time. It’s kind of movement detection. Those days ML was not so popular. My motivation was to just save space of my camera history.

See this command:

identify –verbose image.jpg

Eli