Skip to content

An implementation of Google Goggles using open source technologies. Forked by Jopes.

License

Notifications You must be signed in to change notification settings

jofell/Goggles-FLOSS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction
============

Goggles FLOSS is a service that allow compare thousand of images very
fast. This project is similar to Google Goggles but with FLOSS
technologies. This projects uses the next FLOSS technologies:

 * openCV: Use SURF extractors to obtain the interesting points of the
   images.
 * Twisted: is an event-driven networking engine written in Python and
   licensed under the MIT license.
 * FLANN: is a library for performing fast approximate nearest
   neighbor searches in high dimensional spaces. It contains a
   collection of algorithms we found to work best for nearest neighbor
   search and a system for automatically choosing the best algorithm
   and optimum parameters depending on the dataset.
 * Lemur: The Lemur Project develops search engines, browser toolbars,
   text analysis tools, and data resources that support research and
   development of information retrieval and text mining software
   

Use Case: Android
=================

Thanks to twisted, GogglesFLOSS can execute as web service and, for
example, we can develope a simple application to send photos taken
with the mobile and search in all images database. You can see this
use case in the next video:

http://www.youtube.com/watch?v=dlWViWgKUcY
 

Manual:

1. Start the server

rocapal@vega:~$ cd workspace/gogglesFLOSS/src 
rocapal@vega:~/workspace/gogglesFLOSS/src$ twistd -n -y gogglesFLOSSd.py 
Removing stale pidfile /home/rocapal/workspace/gogglesFLOSS/src/twistd.pid 
Initializing gogglesFLOSSd ... 
[gogglesFLOSSd] - Initializing 
SOAP service [gogglesFLOSSd] -  SOAP service initialized 
<2010-10-23 18:59:19+0200 [-]  Log opened. 
>2010-10-23 18:59:19+0200 [-] twistd 10.1.0 (/usr/bin/python 2.6.6) starting up.
2010-10-23 18:59:19+0200 [-] reactor class: twisted.internet.selectreactor.SelectReactor. 
2010-10-23 18:59:19+0200 [-] twisted.web.server.Site starting on 9085 
2010-10-23 18:59:19+0200 [-] Starting factory

 

2. Explore the client options:

rocapal@vega:~/workspace/gogglesFLOSS/client$ ./gogglesFLOSS-client.py 
Usage: ./gogglesFLOSS-client.py

Options:
-a add photos:
   -f specified the JSON file
   -d specified the images directory

-q send query file
-g generate the image index
 

3. Load images from directory

rocapal@vega:~/client$ ./gogglesFLOSS-client.py http://0.0.0.0:9085 -a -d /tmp/images/photos/
Sending photo 'c3938d4492935519d5a58238f805d58c[thumb].jpeg' ... 
Sending photo 'c3938d4492935519d5a58238f805d58c' ... 
[....]

 

4. Image query

First, it's neccesary build a JSON file to make the query. The JSON file is simple:

{ 
  "command": { 
     "id": "2", 
     "name": "query_photo", 
     "params": { 
        "path_photo" : "/tmp/093e81245f99de65285df424bc153d87" 
     } 
  }
}

And later, launch the query:

rocapal@vega:~/client$ ./gogglesFLOSS-client.py http://0.0.0.0:9085 -q query_photo.json 

{ "code" : "200" , 
    "results": 
       [{"id": "1057", "range" : "1550.25" },
        {"id": "1058", "range" : "562.689" },
        {"id": "1067", "range" : "311.051" },
        {"id": "1054", "range" : "310.265" },
        {"id": "1066", "range" : "280.508" },
        {"id": "1062", "range" : "250.856" },
        {"id": "1055", "range" : "245.079" },
        {"id": "1049", "range" : "239.380" },
        {"id": "1053", "range" : "239.357" },
        {"id": "1056", "range" : "217.369" }]
}

 

As you seen, the query returns a list of ten images more similar to
query. The first field 'id' means the image identifier, remember that
it's necessary that you assign an id to each image when you added
it. So, you are the responsible to do the matching to obtain the image
file. The second field, 'range', means the similitude in numeric
terms, as a bigger number better results!.

 

Developers
==========

If you can see or collaborate with the source code, you can download it from our git repository:

Git: http://git.libresoft.es/gogglesFLOSS/
 

Bugs & Problems
===============

Lemur does't seem to work very well in some situations. If there are
several images with a high different of keypoints number (for example
image with 200 keypoints and other images with 3500 keypoints). It's
possible that results may be incorrects.

About

An implementation of Google Goggles using open source technologies. Forked by Jopes.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages