Coder Social home page Coder Social logo

enft's Introduction

ENFT

ENFT (Efficient Non-consecutive Feature Tracking) is a method to find feature point correspondences among one or multiple video sequences. Our framework consists of steps of solving the feature ‘dropout’ problem when indistinctive structures, noise or even large image distortion exist, and of rapidly recognizing and joining common features located in different subsequences or even in different videos. We provide our GPU implementation.

###Related Publications:

Guofeng Zhang, Haomin Liu, Zilong Dong, Jiaya Jia, Tien-Tsin Wong, and Hujun Bao. Efficient Non-Consecutive Feature Tracking for Robust Structure-from-Motion. Submitted to IEEE Transactions on Image Processing. [arXiv report][video]

This source only provides feature tracking. The whole executable SfM system can be found at http://www.zjucvg.net/ls-acts/ls-acts.html.

##1. License

ENFT is released under a GPLv3 license. It is for non-commercial research and educational use ONLY. Not for reproduction, distribution or commercial use. If you use this executable for your academic publication, please acknowledge our work.

##2. Dependencies

##3. Installation & usage

The project is built by VS2010. All the dependent libraries must be built and linked. We also provide the x64 libraries built by VS2010 in lib/.

The entry to the program is in ENFT/ENFT.cpp. Here is an example:

int _tmain(int argc, _TCHAR* argv[])
{
	std::vector<Video> videos(2);
	videos[0].imgFileName = "../data/0/0000.jpg";
	videos[0].start = 10;
	videos[0].step = 2;
	videos[0].end = 150;
	videos[1].imgFileName = "../data/1/0000.jpg";
	videos[1].start = 0;
	videos[1].step = 2;
	videos[1].end = 100;
	RunENFT(videos, "./param/", "../data/result.txt");
	return 0;
}

Video is a struct specifying the input video sequence.

struct Video
{
	char *imgFileName;
	int start, step, stop;
} Video;

In this example, inputs are two video sequences. The first video sequence consists of ../data/0/0010.jpg, ../data/0/0012.jpg, ..., ../data/0/0150.jpg and the second consists of ../data/1/0000.jpg, ../data/1/0002.jpg, ..., ../data/1/0100.jpg. We call RunENFT to run the algorithm:

void RunENFT(const std::vector<Video> &videos, const char *paramDir, const char *outputFileName);

The first argument is a vector of input video sequences. The second argument paramDir specifies a directory containing the files of all the parameters the algorithm needs. The third argument outputFileName specifies the output file saving the feature tracking result. The output file containts multiple lines, one feature track for each line. Each line starts with an integer N, followed by N feature correspondences. Each correspondence is defined by iSeq iFrm x y. The two integers iSeq and iFrm are respectively the index of video sequence and image frame in the sequence, and the two floats (x, y) is the feature location in the image.

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.