Code Monkey home page Code Monkey logo

local-reverse-image-search's Introduction

Local Reverse Image Search

Description: This program searches a set of directories for instances of some query image. Akaze keypoints are detected in each image using the akaze crate, nearest neighbors are found using the kdtree crate, "matching" keypoints are determined using Lowe's ratio test (described in section 7.1 of this paper), and finally images with an "outlier" number of keypoint matches (currently determined by z-score) are reported to the user as overall matches to the query image.

Extracted keypoints and descriptors are cached on disk using the sled crate and recalled in subsequent program executions.

I also view this as a fun playground for Rust stuff, though, so feel free to add any feature you think could be cool!

Dependencies

All dependencies should be automagically downloaded by Cargo while building.

Installation

  1. Install Rust (guide here)
  2. Clone this repository git clone https://github.com/benhamlen/local-reverse-image-search.git

Configuration

config.toml is the main configuration document for this program.

The most important configuration is the search directory paths.

Usage

  1. Run the program with cargo run --release
  2. Select a query image

How to test the software

No tests for now, perhaps will add some in the future. Was thinking about characterizing the program's performance by randomly selecting many query images and seeing what images it has trouble with, what images it detects well, etc.

Known issues

None for now, certainly some exist.

If you have questions, concerns, bug reports, etc, please file an issue in this repository's Issue Tracker.

Open source licensing info

Credits and references

This project was inspired by work from the University of Minnesota's CSCI 5561 Computer Vision course, taught by Junaed Sattar. The concepts implemented here in Rust are reflected in Python in the course's homework assignments. Thanks to him for teaching the concepts so well!

local-reverse-image-search's People

Contributors

benhamlen avatar natstandridge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

natstandridge

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.