Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Image sequence matcher

Finds the image matches between two sequences of images given a similarity (cost) matrix.

Particularly suited for image sequences matching in context of visual place recognition in changing environments.

πŸ”΄ (Red) - found image correspondences. πŸ”΅ (Blue) - skipped image correspondences.


To run you need:


How to run?

Have a look to a demo.


To run the code you need to specify non_matching_cost and fanout parameters. For detailed explanation of the parameters, please see Relevant publication.

Warning. This code makes the following assumptions:

* the better two images match, the smaller the cost should be.
* all the costs (matrix elements) should be positive.


fanout specifies speed of your camera in images. In terms of matrix pattern is the maximum possible inclination of the path. Typical value is 5.

non_matching_cost is a threshold after which the cost of matching two images is too high for images to be considered as match. For example non_matching_cost = 3.4 means that every image pair within the shortest path that has a matching cost more than 3.4 is not considered as match (hidden), all that have cost less than 3.4 are considered as match.

Relevant publication πŸ‘‡

This framework builds a graph structure given a cost matrix. Afterwards it searches for the shortest path in the graph using a topological sorting approach. The resulting path gives the image associations between the sequences.

For more details how to build the graph please see the paper Efficient and Effective Matching of Image Sequences Under Substantial Appearance Change. This code only partially implements the paper though. It will only find the continuous path.

If you have loops in the sequences consider this project.