Skip to content
/ alike Public

An implementation of perceptual hash in Nim language

License

Notifications You must be signed in to change notification settings

cmd410/alike

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Alike

A nim implementation of preceptual image hash. Useful when searching for duplicate or similar pictures.

How it works

Simple algorithm:

  1. Get a small grayscale square image from original by scaling it
  2. Compute average image brightness
  3. Compare each pixel against average image brightness
  4. Write the result into bit array where 1 is 'brighter' and 0 is 'darker'
  5. Voila! We got the hash.

RGBA is basically simple algoritm x 4 for each channel.

Computing the difference is basically counting different bits in two hashes.

Installation

  1. Get source code by cloning this repository or downloading as zip
  2. Open directory where the source code is in terminal and run nimble build (yeah, you'll need to have nimble installed first)
  3. After successful build the binaries will be in ./bin folder, you can run them

Usage

CLI

alike

Usage:
   [options] COMMAND

Commands:

  compare2         Compare 2 image files
  hash             Compute hash for image file

Options:
  -h, --help
  -a, --algorithm=ALGORITHM  Algorithm to use for hash computation Possible values: [simple, rgba] (default: rgba)

Embeding

Alike can be used as a library. See full API reference.

Example usage:

import pixie
import alike

let
  img1 = readImage("img1.png")
  img2 = readImage("img2.png")

echo img1.getRGBAImgHash.diff(img2.getRGBAImgHash)

About

An implementation of perceptual hash in Nim language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published