KVLD open source library implements Virtual Line Descriptor and Semi-Local Matching Method for Reliable Feature Correspondence in BMVC 2012
C C++ Objective-C

readme.txt

                      KVLD Library
               Zhe Liu and Pierre Moulon

ABOUT
  The KVLD open source library implements the Kth virtual line descriptor matching method introduced in the paper with minor modifications: 

Z,Liu and R,Marlet. Virtual Line Descriptor and Semi-Local Matching Method for Reliable Feature Correspondence in BMVC 2012

  KVLD is distributed under the BSD license (see the COPYING file).

PERFORMANCE WARMING:
  1. Some Linux setup may suffer performance degradation, one way to test is to use provided image pair 2, the algorithm should generate 358 matches. The best way is to compare result under windows.
  2. If you use openCV library, please download the last version from GitHub, for openCV of version earlier than 2.4, descriptors' orientation may be reversed! (Bug in openCV 2.3) An easy way to test is to process an image with its rotated projection.
  3. We use integral image instead of Gaussian blurring process to calculate gradients, which is less discriminant but is easier and faster in practice 

INSTALLING
  This implementation is on C++ and depends on openCV library, whose installation guild is available online. You will need Cmake 2.6 or later to compile the program.
  However the kvld library is independent of openCV, and if you develop your own applications using kvld, please 
  *include folders as OrsaHomography and kvld 
  *modify the CMakeLists.txt file to remove openCV library (see CMakeLists.txt)
  *include kvld in your code by adding #include "kvld/kvld.h"

FOLDERS:
  Kvld: containing all KVLD algorithm, some structures depend on
   OrsaHomography library, so please include both of them to make KVLD running.
  OrsaHomography: containing ORSA algorithm implemented by Pierre Moulon. It also offers basic structures for KVLD algorithm.
  demo_image: some illustrating pairs of images for different applications.
  demo_output: results of demos are sent here, including 
    (? means the index)
    * IMG_?_Detectors1: detectors in the first image
    * IMG_?_Detectors2: detectors in the second image
    * IMG_?_initial_matches: input matches of KVLD(pairs of indices)
    * IMG_?_kvld_matches: output matches of KVLD(pairs of indices)
    * IMG_?_kvld_filtered: visual output matches of KVLD
    * IMG_?_initial: visual input matches of KVLD
    * (optional)IMG_?_matrix: fundametal or homography matrix

APPLICATIONS

NOTE: two images shold have the same width to be illustrated, otherwise, please desactivate the illustration part.

  The code contains three main applications (KVLD_Deformable, KVLD_Calibrate and KVLD_Interface). They come with demonstration using images in demo_image folder. All the outputs are sent to the demo_output folder.

KVLD_Deformable: 
  To establish correspondence of points in a deformable object, KVLD can efficiently retrieve correct matches among a large number of false matches.

KVLD_Calibration: 
  For image calibration, KVLD generates filtered matches, then ORSA (Ransac variant) estimate homography or fundamental matrix using those (less contaminated) matches.

KVLD_Interface:
  This allow you to feed KVLD with your own detectors and initial matches with the original images and let KVLD generates filtered matches. You need to provide the following three files.
 * IMG_?_Detectors1: detectors in the first image
 * IMG_?_Detectors2: detectors in the second image
 * IMG_?_initial_matches: input matches of KVLD(pairs of indices)

For more information, please contact zhe.liu@enpc.fr