From 996ad26b2c1edbe3e8f21dd8988ce8d05faf400e Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Wed, 3 Apr 2019 08:30:42 +0300
Subject: [PATCH] Remove experiments

---
 .../feature_match/CMakeLists.txt              |  30 ---
 opencv-experiments/feature_match/src/main.cpp |  98 ---------
 opencv-experiments/sfm/CMakeLists.txt         |  31 ---
 opencv-experiments/sfm/src/main.cpp           | 195 ------------------
 4 files changed, 354 deletions(-)
 delete mode 100644 opencv-experiments/feature_match/CMakeLists.txt
 delete mode 100644 opencv-experiments/feature_match/src/main.cpp
 delete mode 100644 opencv-experiments/sfm/CMakeLists.txt
 delete mode 100644 opencv-experiments/sfm/src/main.cpp

diff --git a/opencv-experiments/feature_match/CMakeLists.txt b/opencv-experiments/feature_match/CMakeLists.txt
deleted file mode 100644
index 236cd0b90..000000000
--- a/opencv-experiments/feature_match/CMakeLists.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-cmake_minimum_required (VERSION 2.8.11)
-project (ftl-exp)
-
-find_package( OpenCV REQUIRED )
-#find_package(PkgConfig)
-#pkg_check_modules(GTKMM gtkmm-3.0)
-
-# Need to include staged files and libs
-include_directories(${PROJECT_SOURCE_DIR}/includes)
-include_directories(${PROJECT_BINARY_DIR})
-
-set(ftl_VERSION_MAJOR "1")
-set(ftl_VERSION_MINOR "0")
-set(ftl_VERSION_PATCH "0")
-
-set(CMAKE_CXX_FLAGS "-pthread -std=c++14 -Wall -Wno-deprecated -Werror -Wno-psabi")
-set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -pg -Wall -Werror")
-set(CMAKE_CXX_FLAGS_RELEASE "-O3")
-
-SET(CMAKE_USE_RELATIVE_PATHS ON)
-
-set(FTLSOURCE
-	src/main.cpp
-)
-
-add_executable(ftl-exp ${FTLSOURCE})
-target_include_directories(ftl-exp PUBLIC ${PROJECT_SOURCE_DIR}/include)
-target_link_libraries(ftl-exp pthread ${OpenCV_LIBS})
-
-
diff --git a/opencv-experiments/feature_match/src/main.cpp b/opencv-experiments/feature_match/src/main.cpp
deleted file mode 100644
index 75a5dd900..000000000
--- a/opencv-experiments/feature_match/src/main.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-//Uncomment the following line if you are compiling this code in Visual Studio
-//#include "stdafx.h"
-
-#include <opencv2/opencv.hpp>
-#include <opencv2/features2d.hpp>
-#include <opencv2/xfeatures2d.hpp>
-#include <opencv2/highgui.hpp>
-#include <iostream>
-#include <vector>
-
-using namespace cv;
-using namespace cv::xfeatures2d;
-using namespace std;
-
-int main(int argc, char* argv[])
-{
-	bool cam = argc <= 1;
-	Mat frame, gray, img;
-	
-    //vector<vector<Point> > cnts;
-    VideoCapture *camA = NULL;
-    VideoCapture *camB = NULL;
-    
-    if (!cam) camA = new VideoCapture(argv[1]);
-    else {
-    	camA = new VideoCapture(0); //open camera
-    	camB = new VideoCapture(1);
-    }
-
-	auto sift = xfeatures2d::SiftFeatureDetector::create();
-	vector<KeyPoint> kp;
-	
-	Mat left, right;
-	int minHessian = 400;
-	Ptr<SURF> detector = SURF::create();
-	detector->setHessianThreshold(minHessian);
-
-    while(camA->read(frame)) {
-    	if (!cam) {
-    		// Stereo
-    		left = Mat(frame, Rect(0,0,frame.cols/2,frame.rows));
-    		right = Mat(frame, Rect(0,0,frame.cols/2,frame.rows));
-    	} else {
-    		left = frame;
-    		camB->read(right);
-    	}
-    	
-    	//convert to grayscale
-	    cvtColor(left, left, COLOR_BGR2GRAY);
-	    cvtColor(right, right, COLOR_BGR2GRAY);
-	    
-		//-- Step 1: Detect the keypoints using SURF Detector, compute the descriptors
-		std::vector<KeyPoint> keypoints_1, keypoints_2;
-		Mat descriptors_1, descriptors_2;
-		detector->detectAndCompute( left, Mat(), keypoints_1, descriptors_1 );
-		detector->detectAndCompute( right, Mat(), keypoints_2, descriptors_2 );
-		//-- Step 2: Matching descriptor vectors using FLANN matcher
-		FlannBasedMatcher matcher;
-		std::vector< DMatch > matches;
-		matcher.match( descriptors_1, descriptors_2, matches );
-		double max_dist = 0; double min_dist = 100;
-		//-- Quick calculation of max and min distances between keypoints
-		for( int i = 0; i < descriptors_1.rows; i++ )
-		{
-			double dist = matches[i].distance;
-			if( dist < min_dist ) min_dist = dist;
-			if( dist > max_dist ) max_dist = dist;
-		}
-		
-		std::vector< DMatch > good_matches;
-		for( int i = 0; i < descriptors_1.rows; i++ )
-		{ if( matches[i].distance <= max(2*min_dist, 0.02) )
-		{ good_matches.push_back( matches[i]); }
-		}
-		//-- Draw only "good" matches
-		Mat img_matches;
-		drawMatches( left, keypoints_1, right, keypoints_2,
-				   good_matches, img_matches, Scalar::all(-1), Scalar::all(-1),
-				   vector<char>(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );
-		//-- Show detected matches
-		imshow( "Good Matches", img_matches );
-        
-        if(waitKey(1) == 27){
-            //exit if ESC is pressed
-            break;
-        }
-
-		//firstFrame = gray.clone();
-		//GaussianBlur(gray, firstFrame, Size(21, 21), 0);
-    
-    }
-
-	if (camA) delete camA;
-	if (camB) delete camB;
-    return 0;
-
-}
-
diff --git a/opencv-experiments/sfm/CMakeLists.txt b/opencv-experiments/sfm/CMakeLists.txt
deleted file mode 100644
index 0641531e7..000000000
--- a/opencv-experiments/sfm/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-cmake_minimum_required (VERSION 2.8.11)
-project (ftl-exp)
-
-find_package( OpenCV REQUIRED )
-find_package(gflags REQUIRED)
-#find_package(PkgConfig)
-#pkg_check_modules(GTKMM gtkmm-3.0)
-
-# Need to include staged files and libs
-include_directories(${PROJECT_SOURCE_DIR}/includes)
-include_directories(${PROJECT_BINARY_DIR})
-
-set(ftl_VERSION_MAJOR "1")
-set(ftl_VERSION_MINOR "0")
-set(ftl_VERSION_PATCH "0")
-
-set(CMAKE_CXX_FLAGS "-pthread -std=c++14 -Wall -Wno-deprecated -Werror -Wno-psabi")
-set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -pg -Wall -Werror")
-set(CMAKE_CXX_FLAGS_RELEASE "-O3")
-
-SET(CMAKE_USE_RELATIVE_PATHS ON)
-
-set(FTLSOURCE
-	src/main.cpp
-)
-
-add_executable(ftl-exp ${FTLSOURCE})
-target_include_directories(ftl-exp PUBLIC ${PROJECT_SOURCE_DIR}/include)
-target_link_libraries(ftl-exp pthread ${OpenCV_LIBS} gflags::gflags)
-
-
diff --git a/opencv-experiments/sfm/src/main.cpp b/opencv-experiments/sfm/src/main.cpp
deleted file mode 100644
index 010e65e2e..000000000
--- a/opencv-experiments/sfm/src/main.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-//Uncomment the following line if you are compiling this code in Visual Studio
-//#include "stdafx.h"
-
-#include <gflags/gflags.h>
-
-DEFINE_int32(grid_x, 1, "Horizontal video grid size");
-DEFINE_int32(grid_y, 1, "Vertical video grid size");
-DEFINE_int32(count, 1, "Number of video feeds");
-
-#include <opencv2/sfm.hpp>
-#include <opencv2/viz.hpp>
-#include <opencv2/calib3d.hpp>
-#include <opencv2/core.hpp>
-#include <opencv2/opencv.hpp>
-#include <opencv2/features2d.hpp>
-#include <opencv2/xfeatures2d.hpp>
-#include <iostream>
-#include <vector>
-
-using namespace cv;
-using namespace cv::sfm;
-using namespace cv::xfeatures2d;
-using namespace std;
-
-void get_tracks(const vector<DMatch> &matches, const vector<KeyPoint> &kp1,
-		const vector<KeyPoint> &kp2, vector<vector<Vec2d>> &tracks) {
-		
-	for (size_t i=0; i<matches.size(); i++) {
-		// TODO Generalise to any number of keypoint frames
-		Point2f point1 = kp1[matches[i].queryIdx].pt;
-    	Point2f point2 = kp2[matches[i].trainIdx].pt;
-    	
-    	vector<Vec2d> track;
-    	track.push_back(Vec2d(point1.x,point1.y));
-    	track.push_back(Vec2d(point2.x,point2.y));
-    	tracks.push_back(track);
-    }
-}
-
-void convert_tracks(const vector<vector<Vec2d>> &tracks, vector<Mat> &points2d) {
-	int n_frames = 2;
-	int n_tracks = tracks.size();
-	
-	for (int i = 0; i < n_frames; ++i)
-	{
-		Mat_<double> frame(2, n_tracks);
-		for (int j = 0; j < n_tracks; ++j)
-		{
-			frame(0,j) = tracks[j][i][0];
-			frame(1,j) = tracks[j][i][1];
-		}
-		points2d.push_back(Mat(frame));
-	}
-}
-
-int main(int argc, char* argv[])
-{
-	gflags::ParseCommandLineFlags(&argc, &argv, true);
-	
-	auto gridX = FLAGS_grid_x;
-	auto gridY = FLAGS_grid_y;
-	auto count = FLAGS_count;
-
-	bool cam = argc <= 1;
-	Mat frame, gray, img;
-	
-    //vector<vector<Point> > cnts;
-    VideoCapture *camA = NULL;
-    VideoCapture *camB = NULL;
-    Mat left,right;
-    
-    int minHessian = 400;
-	Ptr<SURF> detector = SURF::create();
-	detector->setHessianThreshold(minHessian);
-    
-    if (!cam) camA = new VideoCapture(argv[1]);
-    else {
-    	//camA = new VideoCapture(0); //open camera
-    	//camB = new VideoCapture(1);
-    }
-
-	viz::Viz3d window("Coordinate Frame");
-             window.setWindowSize(Size(500,500));
-             window.setWindowPosition(Point(150,150));
-             window.setBackgroundColor(); // black by default
-
-    while(camA->read(frame)) {
-    	vector<Mat> frames;
-    	int resX = frame.cols / gridX;
-    	int resY = frame.rows / gridY;
-    	
-    	// Split the video grid into individual feeds
-    	if (!cam) {
-    		int tcount = 0;
-    		for (int x=0; x<gridX; x++) {
-				for (int y=0; y<gridY; y++) {
-					tcount++;
-					Mat f(frame, Rect(x*resX,y*resY,(x+1)*resX,(y+1)*resY));
-					cvtColor(f, f, COLOR_BGR2GRAY);
-					frames.push_back(f);
-					if (tcount == count) break;
-				}
-    			if (tcount == count) break;
-    		}
-    	} else {
-    		//left = frame;
-    		//camB->read(right);
-    	}
-
-    	// --- Features ---
-	    
-		//-- Step 1: Detect the keypoints using SURF Detector, compute the descriptors
-		vector<vector<KeyPoint>> keypoints;
-		vector<Mat> descriptors;
-		
-		for (auto x : frames) {
-			vector<KeyPoint> kps;
-			Mat desc;
-			detector->detectAndCompute(x, Mat(), kps, desc);
-			keypoints.push_back(kps);
-			descriptors.push_back(desc);
-		}
-		
-		// TODO This can be done on node machines...
-		
-		//-- Step 2: Matching descriptor vectors using FLANN matcher
-		// Match between each sequential pair of images in the feed.
-		FlannBasedMatcher matcher;
-		std::vector< DMatch > matches;
-		matcher.match( descriptors_1, descriptors_2, matches );
-		double max_dist = 0; double min_dist = 100;
-		//-- Quick calculation of max and min distances between keypoints
-		for( int i = 0; i < descriptors_1.rows; i++ )
-		{
-			double dist = matches[i].distance;
-			if( dist < min_dist ) min_dist = dist;
-			if( dist > max_dist ) max_dist = dist;
-		}
-		
-		std::vector< DMatch > good_matches;
-		for( int i = 0; i < descriptors_1.rows; i++ )
-		{ if( matches[i].distance <= max(2*min_dist, 0.02) )
-		{ good_matches.push_back( matches[i]); }
-		}
-    	
-    	// --- SFM ---
-    	
-    	std::vector<Mat> points2d;
-    	vector<vector<Vec2d>> tracks;
-    	get_tracks(good_matches, keypoints_1, keypoints_2, tracks);
-    	convert_tracks(tracks, points2d);
-    	
-    	cout << "Tracks: " << tracks.size() << endl;
-    	
-    	 // Build instrinsics
-		float f  = 5,
-				cx = 200, cy = 200;
-		Matx33d K = Matx33d( f, 0, cx,
-				               0, f, cy,
-				               0, 0,  1);
-		
-		bool is_projective = true;
-		vector<Mat> Rs_est, ts_est, points3d_estimated;
-		cv::sfm::reconstruct(points2d, Rs_est, ts_est, K, points3d_estimated, is_projective);
-        
-        vector<Vec3f> point_cloud_est;
-		for (unsigned int i = 0; i < points3d_estimated.size(); ++i)
-			point_cloud_est.push_back(Vec3f(points3d_estimated[i]));
-        
-        if ( point_cloud_est.size() > 0 )
-		{
-		viz::WCloud cloud_widget(point_cloud_est, viz::Color::green());
-		window.showWidget("point_cloud", cloud_widget);
-		} else {
-		cout << "No points" << std::endl;
-		}
-        
-        if(waitKey(1) == 27){
-            //exit if ESC is pressed
-            break;
-        }
-
-		//firstFrame = gray.clone();
-		//GaussianBlur(gray, firstFrame, Size(21, 21), 0);
-    	break;
-    }
-    
-    window.spin();
-
-	if (camA) delete camA;
-	if (camB) delete camB;
-    return 0;
-
-}
-
-- 
GitLab