Categorygithub.com/rivo/duplo
modulepackage
0.0.0-20220703183130-751e882e6b83
Repository: https://github.com/rivo/duplo.git
Documentation: pkg.go.dev

# README

Duplo - Detect Similar or Duplicate Images

Godoc Reference Go Report

This Go library allows you to perform a visual query on a set of images, returning the results in the order of similarity. This allows you to effectively detect duplicates with minor modifications (e.g. some colour correction or watermarks).

It is an implementation of Fast Multiresolution Image Querying by Jacobs et al. which uses truncated Haar wavelet transforms to create visual hashes of the images. The same method has previously been used in the imgSeek software and the retrievr website.

Installation

go get github.com/rivo/duplo

Usage

import "github.com/rivo/duplo"

// Create an empty store.
store := duplo.New()

// Add image "img" to the store.
hash, _ := duplo.CreateHash(img)
store.Add("myimage", hash)

// Query the store based on image "query".
hash, _ = duplo.CreateHash(query)
matches := store.Query(hash)
sort.Sort(matches)
// matches[0] is the best match.

Documentation

http://godoc.org/github.com/rivo/duplo

Possible Applications

  • Identify copyright violations
  • Save disk space by detecting and removing duplicate images
  • Search for images by similarity

Projects Using This Package

  • imgdup2go: A visual image duplicate finder.

More Information

For more information, please go to http://rentafounder.com/find-similar-images-with-duplo/ or get in touch.

# Packages

Package haar provides a Haar wavelet function for bitmap images.

# Functions

CreateHash calculates and returns the visual hash of the provided image as well as a resized version of it (ImageScale x ImageScale) which may be ignored if not needed anymore.
New returns a new, empty image store.

# Constants

ImageScale is the width and height to which images are resized before they are being processed.

# Variables

TopCoefs is the number of top coefficients (per colour channel), ordered by absolute value, that will be kept.

# Structs

Hash represents the visual hash of an image.
Match represents an image matched by a similarity query.
Store is a data structure that holds references to images.

# Type aliases

Matches is a slice of match results.