6

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.

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
Mehul Joisar
  • 15,348
  • 6
  • 48
  • 57
  • I'm not sure you'll get better performance with something else than OpenCV. You may want to check the algorithm you use. But just remember that mobile phones aren't really fitted for extensive CPU tasks. Not talking about battery consumption, cpu heat ... – Michael Laffargue Mar 20 '15 at 07:23
  • @MichaelLaffargue: I don't have expertise in image processing as I have been working on mobile apps only.And on other hand, I don't want to compromise with efficiency that is why I am open to use 3rd party SDK. – Mehul Joisar Mar 20 '15 at 09:29
  • I think OpenCV can do this for you, i've seen a pretty decent "eye detecting" feature that was used on camera output (many time per seconds). Take a look at this, I think it's looking the same as your request :http://docs.opencv.org/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.html – Michael Laffargue Mar 20 '15 at 10:02
  • 2
    [Software Recommendations](http://softwarerecs.stackexchange.com/) would probably be a better place for this question. That being said, you can give [Moodstocks](https://moodstocks.com/) a try: it works without internet. See [this answer](http://softwarerecs.stackexchange.com/questions/11539/solutions-for-object-recognition-on-mobile-devices/11569#11569) on Software Recommendations! – mbrenon Mar 20 '15 at 10:05
  • @mbrenon: thanks for the suggestion. can u plz post your comment as answer with some more details so that I can mark it as answer which can be helpful to others as well. – Mehul Joisar Mar 20 '15 at 12:00
  • @mbrenon: according to your disclaimer, you are working for Moodstocks. I am little scared about the future as I am going to build very large scale project for industry and scanning is its core feature.May I know the reliability of this SDK? please `frankly` tell me whether it is fine to rely upon this SDK while making a long term big project? – Mehul Joisar Mar 25 '15 at 06:27
  • The Moodstocks SDK in its current form has been live for more than 2 years, with regular updates improving its scalability and reliability, and a major refactoring in between. We don't plan on disappearing anytime soon! – mbrenon Mar 25 '15 at 09:46

4 Answers4

4

[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!

mbrenon
  • 4,851
  • 23
  • 25
3

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.

Traian
  • 2,915
  • 1
  • 24
  • 32
0

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.

David S.
  • 41
  • 5
0

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

j.r
  • 27
  • 1
  • 4