From f293765280fa60e4df7fb009edbe881dc6bca627 Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Wed, 21 May 2014 15:44:31 +0200 Subject: [PATCH 01/67] Original code + comments --- modules/line_descriptor/CMakeLists.txt | 64 + .../opencv2/line_descriptor/EDLineDetector.hh | 434 ++++++ .../opencv2/line_descriptor/LineDescriptor.hh | 133 ++ .../opencv2/line_descriptor/LineStructure.hh | 110 ++ .../line_descriptor/src/EDLineDetector.cpp | 1285 ++++++++++++++++ .../line_descriptor/src/LineDescriptor.cpp | 1342 +++++++++++++++++ 6 files changed, 3368 insertions(+) create mode 100644 modules/line_descriptor/CMakeLists.txt create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hh create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hh create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hh create mode 100644 modules/line_descriptor/src/EDLineDetector.cpp create mode 100644 modules/line_descriptor/src/LineDescriptor.cpp diff --git a/modules/line_descriptor/CMakeLists.txt b/modules/line_descriptor/CMakeLists.txt new file mode 100644 index 000000000..b21a10bd4 --- /dev/null +++ b/modules/line_descriptor/CMakeLists.txt @@ -0,0 +1,64 @@ +#INCLUDE_DIRECTORIES(/data1/lz/LilianTests/ARPACKLAB/arpack++/include/) +#INCLUDE_DIRECTORIES(/data1/lz/LilianTests/ARPACKLAB/arpack++) +INCLUDE_DIRECTORIES(/usr/include/arpack++/include/) +INCLUDE_DIRECTORIES(/usr/include/arpack++) + +#project name +PROJECT(LILIANTESTS) + +cmake_minimum_required(VERSION 2.8) + +if(COMMAND cmake_policy) + cmake_policy(SET CMP0003 NEW) +endif(COMMAND cmake_policy) + +SET(BUILD_SHARED_LIBS ON) + +## where are user-specific cmake modules +SET(CMAKE_MODULE_PATH $ENV{CMAKE_MODULE_PATH}) + +OPTION(USE_BIAS OFF) + +#IF(USE_BIAS) +#FIND_PACKAGE(BIAS) +#IF(BIAS_FOUND) +# INCLUDE(${BIAS_USE_FILE}) +#ELSE(BIAS_FOUND) +# MESSAGE(SEND_ERROR "BIAS lib not found.") +#ENDIF(BIAS_FOUND) +#ENDIF(USE_BIAS) + + +IF(USE_BIAS) +INCLUDE_DIRECTORIES(${BIAS_INCLUDE_DIR} /usr/local/include/BIAS /usr/include/ImageMagick /usr/local/include/opencv2 ${WXWIDGETS_INCLUDE_DIR}) +LINK_DIRECTORIES( ${BIAS_LINK_DIRECTORIES}) +ENDIF(USE_BIAS) + +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${BIAS_CXX_FLAGS} -std=c++0x") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${BIAS_C_FLAGS}") + +# source files of library "LineMatchingLib" to be created +SET(LineMatchingLib_SRCS + #src/PairwiseLineMatching.cpp + src/LineDescriptor.cpp + src/EDLineDetector.cpp +) +# header files to be installed +SET(LineMatchingLib_HEADER + #include/PairwiseLineMatching.hh + include/LineDescriptor.hh + include/EDLineDetector.hh + include/LineStructure.hh +) + + +ADD_LIBRARY(LineMatchingLib + ${LineMatchingLib_SRCS} + ${LineMatchingLib_HEADER}) +TARGET_LINK_LIBRARIES(LineMatchingLib /usr/lib/libsuperlu.so opencv_core opencv_highgui opencv_imgproc) + + +#ADD_EXECUTABLE(TestLineMatchingAlgorithm src/TestLineMatchingAlgorithm.cpp) +#TARGET_LINK_LIBRARIES(TestLineMatchingAlgorithm LineMatchingLib ) + + diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hh b/modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hh new file mode 100644 index 000000000..40b991058 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hh @@ -0,0 +1,434 @@ +/*IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + + By downloading, copying, installing or using the software you agree to this license. + If you do not agree to this license, do not download, install, + copy or use the software. + + + License Agreement + For Open Source Computer Vision Library + +Copyright (C) 2011-2012, Lilian Zhang, all rights reserved. +Copyright (C) 2013, Manuele Tamburrano, Stefano Fabri, all rights reserved. +Third party copyrights are property of their respective owners. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * The name of the copyright holders may not be used to endorse or promote products + derived from this software without specific prior written permission. + +This software is provided by the copyright holders and contributors "as is" and +any express or implied warranties, including, but not limited to, the implied +warranties of merchantability and fitness for a particular purpose are disclaimed. +In no event shall the Intel Corporation or contributors be liable for any direct, +indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused +and on any theory of liability, whether in contract, strict liability, +or tort (including negligence or otherwise) arising in any way out of +the use of this software, even if advised of the possibility of such damage. +*/ + +#ifndef EDLINEDETECTOR_HH_ +#define EDLINEDETECTOR_HH_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +struct Pixel{ + unsigned int x;//X coordinate + unsigned int y;//Y coordinate +}; +struct EdgeChains{ + std::vector xCors;//all the x coordinates of edge points + std::vector yCors;//all the y coordinates of edge points + std::vector sId; //the start index of each edge in the coordinate arrays + unsigned int numOfEdges;//the number of edges whose length are larger than minLineLen; numOfEdges < sId.size; +}; +struct LineChains{ + std::vector xCors;//all the x coordinates of line points + std::vector yCors;//all the y coordinates of line points + std::vector sId; //the start index of each line in the coordinate arrays + unsigned int numOfLines;//the number of lines whose length are larger than minLineLen; numOfLines < sId.size; +}; + +typedef std::list PixelChain;//each edge is a pixel chain + + +struct EDLineParam{ + int ksize; + float sigma; + float gradientThreshold; + float anchorThreshold; + int scanIntervals; + int minLineLen; + double lineFitErrThreshold; +}; + +#define RELATIVE_ERROR_FACTOR 100.0 +#define M_LN10 2.30258509299404568402 +#define log_gamma(x) ((x)>15.0?log_gamma_windschitl(x):log_gamma_lanczos(x)) + + +inline void writeMat(cv::Mat m, std::string name, int n) +{ + std::stringstream ss; + std::string s; + ss << n; + ss >> s; + std::string fileNameConf = name + s; + cv::FileStorage fsConf(fileNameConf, cv::FileStorage::WRITE); + fsConf << "m" << m; + + fsConf.release(); +} + +/* This class is used to detect lines from input image. + * First, edges are extracted from input image following the method presented in Cihan Topal and + * Cuneyt Akinlar's paper:"Edge Drawing: A Heuristic Approach to Robust Real-Time Edge Detection", 2010. + * Then, lines are extracted from the edge image following the method presented in Cuneyt Akinlar and + * Cihan Topal's paper:"EDLines: A real-time line segment detector with a false detection control", 2011 + * PS: The linking step of edge detection has a little bit difference with the Edge drawing algorithm + * described in the paper. The edge chain doesn't stop when the pixel direction is changed. + */ +class EDLineDetector +{ +public: + EDLineDetector(); + EDLineDetector(EDLineParam param); + ~EDLineDetector(); + + /*extract edges from image + *image: In, gray image; + *edges: Out, store the edges, each edge is a pixel chain + *smoothed: In, flag to mark whether the image has already been smoothed by Gaussian filter. + *return -1: error happen + */ + int EdgeDrawing(cv::Mat &image, EdgeChains &edgeChains, bool smoothed=false); + /*extract lines from image + *image: In, gray image; + *lines: Out, store the extracted lines, + *smoothed: In, flag to mark whether the image has already been smoothed by Gaussian filter. + *return -1: error happen + */ + int EDline(cv::Mat &image, LineChains &lines, bool smoothed=false); + /*extract line from image, and store them*/ + int EDline(cv::Mat &image, bool smoothed=false); + + cv::Mat dxImg_;//store the dxImg; + cv::Mat dyImg_;//store the dyImg; + cv::Mat gImgWO_;//store the gradient image without threshold; + LineChains lines_; //store the detected line chains; + //store the line Equation coefficients, vec3=[w1,w2,w3] for line w1*x + w2*y + w3=0; + std::vector > lineEquations_; + //store the line endpoints, [x1,y1,x2,y3] + std::vector > lineEndpoints_; + //store the line direction + std::vector lineDirection_; + //store the line salience, which is the summation of gradients of pixels on line + std::vector lineSalience_; + unsigned int imageWidth; + unsigned int imageHeight; + + + /*The threshold of line fit error; + *If lineFitErr is large than this threshold, then + *the pixel chain is not accepted as a single line segment.*/ + double lineFitErrThreshold_; + /*the threshold of pixel gradient magnitude. + *Only those pixel whose gradient magnitude are larger than this threshold will be + *taken as possible edge points. Default value is 36*/ + short gradienThreshold_; + /*If the pixel's gradient value is bigger than both of its neighbors by a + *certain threshold (ANCHOR_THRESHOLD), the pixel is marked to be an anchor. + *Default value is 8*/ + unsigned char anchorThreshold_; + /*anchor testing can be performed at different scan intervals, i.e., + *every row/column, every second row/column etc. + *Default value is 2*/ + unsigned int scanIntervals_; + int minLineLen_;//minimal acceptable line length + +private: + void InitEDLine_(); + /*For an input edge chain, find the best fit line, the default chain length is minLineLen_ + *xCors: In, pointer to the X coordinates of pixel chain; + *yCors: In, pointer to the Y coordinates of pixel chain; + *offsetS:In, start index of this chain in array; + *lineEquation: Out, [a,b] which are the coefficient of lines y=ax+b(horizontal) or x=ay+b(vertical); + *return: line fit error; -1:error happens; + */ + double LeastSquaresLineFit_(unsigned int *xCors, unsigned int *yCors, + unsigned int offsetS, std::array &lineEquation); + /*For an input pixel chain, find the best fit line. Only do the update based on new points. + *For A*x=v, Least square estimation of x = Inv(A^T * A) * (A^T * v); + *If some new observations are added, i.e, [A; A'] * x = [v; v'], + *then x' = Inv(A^T * A + (A')^T * A') * (A^T * v + (A')^T * v'); + *xCors: In, pointer to the X coordinates of pixel chain; + *yCors: In, pointer to the Y coordinates of pixel chain; + *offsetS:In, start index of this chain in array; + *newOffsetS: In, start index of extended part; + *offsetE:In, end index of this chain in array; + *lineEquation: Out, [a,b] which are the coefficient of lines y=ax+b(horizontal) or x=ay+b(vertical); + *return: line fit error; -1:error happens; + */ + double LeastSquaresLineFit_(unsigned int *xCors, unsigned int *yCors, + unsigned int offsetS, unsigned int newOffsetS, + unsigned int offsetE, std::array &lineEquation); + /* Validate line based on the Helmholtz principle, which basically states that + * for a structure to be perceptually meaningful, the expectation of this structure + * by chance must be very low. + */ + bool LineValidation_(unsigned int *xCors, unsigned int *yCors, + unsigned int offsetS, unsigned int offsetE, + std::array &lineEquation, float &direction); + bool bValidate_;//flag to decide whether line will be validated + int ksize_; //the size of Gaussian kernel: ksize X ksize, default value is 5. + float sigma_;//the sigma of Gaussian kernal, default value is 1.0. + + /*For example, there two edges in the image: + *edge1 = [(7,4), (8,5), (9,6),| (10,7)|, (11, 8), (12,9)] and + *edge2 = [(14,9), (15,10), (16,11), (17,12),| (18, 13)|, (19,14)] ; then we store them as following: + *pFirstPartEdgeX_ = [10, 11, 12, 18, 19];//store the first part of each edge[from middle to end] + *pFirstPartEdgeY_ = [7, 8, 9, 13, 14]; + *pFirstPartEdgeS_ = [0,3,5];// the index of start point of first part of each edge + *pSecondPartEdgeX_ = [10, 9, 8, 7, 18, 17, 16, 15, 14];//store the second part of each edge[from middle to front] + *pSecondPartEdgeY_ = [7, 6, 5, 4, 13, 12, 11, 10, 9];//anchor points(10, 7) and (18, 13) are stored again + *pSecondPartEdgeS_ = [0, 4, 9];// the index of start point of second part of each edge + *This type of storage order is because of the order of edge detection process. + *For each edge, start from one anchor point, first go right, then go left or first go down, then go up*/ + unsigned int *pFirstPartEdgeX_;//store the X coordinates of the first part of the pixels for chains + unsigned int *pFirstPartEdgeY_;//store the Y coordinates of the first part of the pixels for chains + unsigned int *pFirstPartEdgeS_;//store the start index of every edge chain in the first part arrays + unsigned int *pSecondPartEdgeX_;//store the X coordinates of the second part of the pixels for chains + unsigned int *pSecondPartEdgeY_;//store the Y coordinates of the second part of the pixels for chains + unsigned int *pSecondPartEdgeS_;//store the start index of every edge chain in the second part arrays + unsigned int *pAnchorX_;//store the X coordinates of anchors + unsigned int *pAnchorY_;//store the Y coordinates of anchors + cv::Mat edgeImage_; + + + + cv::Mat gImg_;//store the gradient image; + cv::Mat dirImg_;//store the direction image + double logNT_; + cv::Mat_ ATA; //the previous matrix of A^T * A; + cv::Mat_ ATV; //the previous vector of A^T * V; + cv::Mat_ fitMatT; //the matrix used in line fit function; + cv::Mat_ fitVec; //the vector used in line fit function; + cv::Mat_ tempMatLineFit; //the matrix used in line fit function; + cv::Mat_ tempVecLineFit; //the vector used in line fit function; + + + /** Compare doubles by relative error. + The resulting rounding error after floating point computations + depend on the specific operations done. The same number computed by + different algorithms could present different rounding errors. For a + useful comparison, an estimation of the relative rounding error + should be considered and compared to a factor times EPS. The factor + should be related to the accumulated rounding error in the chain of + computation. Here, as a simplification, a fixed factor is used. + */ + static int double_equal(double a, double b) + { + double abs_diff,aa,bb,abs_max; + /* trivial case */ + if( a == b ) return true; + abs_diff = fabs(a-b); + aa = fabs(a); + bb = fabs(b); + abs_max = aa > bb ? aa : bb; + /* DBL_MIN is the smallest normalized number, thus, the smallest + number whose relative error is bounded by DBL_EPSILON. For + smaller numbers, the same quantization steps as for DBL_MIN + are used. Then, for smaller numbers, a meaningful "relative" + error should be computed by dividing the difference by DBL_MIN. */ + if( abs_max < DBL_MIN ) abs_max = DBL_MIN; + /* equal if relative error <= factor x eps */ + return (abs_diff / abs_max) <= (RELATIVE_ERROR_FACTOR * DBL_EPSILON); + } + /** Computes the natural logarithm of the absolute value of + the gamma function of x using the Lanczos approximation. + See http://www.rskey.org/gamma.htm + The formula used is + @f[ + \Gamma(x) = \frac{ \sum_{n=0}^{N} q_n x^n }{ \Pi_{n=0}^{N} (x+n) } + (x+5.5)^{x+0.5} e^{-(x+5.5)} + @f] + so + @f[ + \log\Gamma(x) = \log\left( \sum_{n=0}^{N} q_n x^n \right) + + (x+0.5) \log(x+5.5) - (x+5.5) - \sum_{n=0}^{N} \log(x+n) + @f] + and + q0 = 75122.6331530, + q1 = 80916.6278952, + q2 = 36308.2951477, + q3 = 8687.24529705, + q4 = 1168.92649479, + q5 = 83.8676043424, + q6 = 2.50662827511. + */ + static double log_gamma_lanczos(double x) + { + static double q[7] = { 75122.6331530, 80916.6278952, 36308.2951477, + 8687.24529705, 1168.92649479, 83.8676043424, + 2.50662827511 }; + double a = (x+0.5) * log(x+5.5) - (x+5.5); + double b = 0.0; + int n; + for(n=0;n<7;n++){ + a -= log( x + (double) n ); + b += q[n] * pow( x, (double) n ); + } + return a + log(b); + } + /** Computes the natural logarithm of the absolute value of + the gamma function of x using Windschitl method. + See http://www.rskey.org/gamma.htm + The formula used is + @f[ + \Gamma(x) = \sqrt{\frac{2\pi}{x}} \left( \frac{x}{e} + \sqrt{ x\sinh(1/x) + \frac{1}{810x^6} } \right)^x + @f] + so + @f[ + \log\Gamma(x) = 0.5\log(2\pi) + (x-0.5)\log(x) - x + + 0.5x\log\left( x\sinh(1/x) + \frac{1}{810x^6} \right). + @f] + This formula is a good approximation when x > 15. + */ + static double log_gamma_windschitl(double x) + { + return 0.918938533204673 + (x-0.5)*log(x) - x + + 0.5*x*log( x*sinh(1/x) + 1/(810.0*pow(x,6.0)) ); + } + /** Computes -log10(NFA). + NFA stands for Number of False Alarms: + @f[ + \mathrm{NFA} = NT \cdot B(n,k,p) + @f] + - NT - number of tests + - B(n,k,p) - tail of binomial distribution with parameters n,k and p: + @f[ + B(n,k,p) = \sum_{j=k}^n + \left(\begin{array}{c}n\\j\end{array}\right) + p^{j} (1-p)^{n-j} + @f] + The value -log10(NFA) is equivalent but more intuitive than NFA: + - -1 corresponds to 10 mean false alarms + - 0 corresponds to 1 mean false alarm + - 1 corresponds to 0.1 mean false alarms + - 2 corresponds to 0.01 mean false alarms + - ... + Used this way, the bigger the value, better the detection, + and a logarithmic scale is used. + @param n,k,p binomial parameters. + @param logNT logarithm of Number of Tests + The computation is based in the gamma function by the following + relation: + @f[ + \left(\begin{array}{c}n\\k\end{array}\right) + = \frac{ \Gamma(n+1) }{ \Gamma(k+1) \cdot \Gamma(n-k+1) }. + @f] + We use efficient algorithms to compute the logarithm of + the gamma function. + To make the computation faster, not all the sum is computed, part + of the terms are neglected based on a bound to the error obtained + (an error of 10% in the result is accepted). + */ + static double nfa(int n, int k, double p, double logNT) + { + double tolerance = 0.1; /* an error of 10% in the result is accepted */ + double log1term,term,bin_term,mult_term,bin_tail,err,p_term; + int i; + + /* check parameters */ + if( n<0 || k<0 || k>n || p<=0.0 || p>=1.0 ){ + std::cout<<"nfa: wrong n, k or p values."< (double) n * p ) /* at begin or end of the tail? */ + return -log1term / M_LN10 - logNT; /* end: use just the first term */ + else + return -logNT; /* begin: the tail is roughly 1 */ + } + + /* compute more terms if needed */ + bin_tail = term; + for(i=k+1;i<=n;i++){ + /* As + term_i = bincoef(n,i) * p^i * (1-p)^(n-i) + and + bincoef(n,i)/bincoef(n,i-1) = n-i+1 / i, + then, + term_i / term_i-1 = (n-i+1)/i * p/(1-p) + and + term_i = term_i-1 * (n-i+1)/i * p/(1-p). + p/(1-p) is computed only once and stored in 'p_term'. + */ + bin_term = (double) (n-i+1) / (double) i; + mult_term = bin_term * p_term; + term *= mult_term; + bin_tail += term; + if(bin_term<1.0){ + /* When bin_term<1 then mult_term_ji. + Then, the error on the binomial tail when truncated at + the i term can be bounded by a geometric series of form + term_i * sum mult_term_i^j. */ + err = term * ( ( 1.0 - pow( mult_term, (double) (n-i+1) ) ) / + (1.0-mult_term) - 1.0 ); + /* One wants an error at most of tolerance*final_result, or: + tolerance * abs(-log10(bin_tail)-logNT). + Now, the error that can be accepted on bin_tail is + given by tolerance*final_result divided by the derivative + of -log10(x) when x=bin_tail. that is: + tolerance * abs(-log10(bin_tail)-logNT) / (1/bin_tail) + Finally, we truncate the tail if the error is less than: + tolerance * abs(-log10(bin_tail)-logNT) * bin_tail */ + if( err < tolerance * fabs(-log10(bin_tail)-logNT) * bin_tail ) break; + } + } + return -log10(bin_tail) - logNT; + } +}; + +#endif /* EDLINEDETECTOR_HH_ */ diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hh b/modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hh new file mode 100644 index 000000000..04aecd13b --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hh @@ -0,0 +1,133 @@ +/*IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + + By downloading, copying, installing or using the software you agree to this license. + If you do not agree to this license, do not download, install, + copy or use the software. + + + License Agreement + For Open Source Computer Vision Library + +Copyright (C) 2011-2012, Lilian Zhang, all rights reserved. +Copyright (C) 2013, Manuele Tamburrano, Stefano Fabri, all rights reserved. +Third party copyrights are property of their respective owners. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * The name of the copyright holders may not be used to endorse or promote products + derived from this software without specific prior written permission. + +This software is provided by the copyright holders and contributors "as is" and +any express or implied warranties, including, but not limited to, the implied +warranties of merchantability and fitness for a particular purpose are disclaimed. +In no event shall the Intel Corporation or contributors be liable for any direct, +indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused +and on any theory of liability, whether in contract, strict liability, +or tort (including negligence or otherwise) arising in any way out of +the use of this software, even if advised of the possibility of such damage. +*/ + +#ifndef LINEDESCRIPTOR_HH_ +#define LINEDESCRIPTOR_HH_ + + +#include "EDLineDetector.hh" +#include "LineStructure.hh" + + +#include +struct OctaveLine{ + unsigned int octaveCount;//the octave which this line is detected + unsigned int lineIDInOctave;//the line ID in that octave image + unsigned int lineIDInScaleLineVec;//the line ID in Scale line vector + float lineLength; //the length of line in original image scale +}; + + +/* This class is used to generate the line descriptors from multi-scale images */ +class LineDescriptor +{ +public: + LineDescriptor(int n_octave); + LineDescriptor(unsigned int numOfBand, unsigned int widthOfBand, int n_octave); + ~LineDescriptor(); + enum{ + NearestNeighbor=0, //the nearest neighbor is taken as matching + NNDR=1//nearest/next ratio + }; + /*This function is used to detect lines from multi-scale images.*/ + int OctaveKeyLines(cv::Mat & image, ScaleLines &keyLines); + int GetLineDescriptor(cv::Mat & image, + ScaleLines &keyLines); + int GetLineDescriptor(cv::Mat & image, + ScaleLines &keyLines, bool lsd); + + void findNearestParallelLines(ScaleLines & keyLines); + + void GetLineBinaryDescriptor(std::vector & oct_binaryDescMat, ScaleLines & keyLines); + int MatchLineByDescriptor(ScaleLines &keyLinesLeft, ScaleLines &keyLinesRight, + std::vector &matchLeft, std::vector &matchRight, + int criteria=NNDR); + float LowestThreshold;//global threshold for line descriptor distance, default is 0.35 + float NNDRThreshold;//the NNDR threshold for line descriptor distance, default is 0.6 + + int ksize_; //the size of Gaussian kernel: ksize X ksize, default value is 5. + unsigned int numOfOctave_;//the number of image octave + unsigned int numOfBand_;//the number of band used to compute line descriptor + unsigned int widthOfBand_;//the width of band; + std::vector gaussCoefL_;//the local gaussian coefficient apply to the orthogonal line direction within each band; + std::vector gaussCoefG_;//the global gaussian coefficient apply to each Row within line support region + + +private: + + void sample(float *igray,float *ogray, float factor, int width, int height) + { + + int swidth = (int)((float) width / factor); + int sheight = (int)((float) height / factor); + + for(int j=0; j < sheight; j++) + for(int i=0; i < swidth; i++) + ogray[j*swidth + i] = igray[(int)((float) j * factor) * width + (int) ((float) i*factor)]; + + } + void sampleUchar(uchar *igray,uchar *ogray, float factor, int width, int height) + { + + int swidth = (int)((float) width / factor); + int sheight = (int)((float) height / factor); + + for(int j=0; j < sheight; j++) + for(int i=0; i < swidth; i++) + ogray[j*swidth + i] = igray[(int)((float) j * factor) * width + (int) ((float) i*factor)]; + + } + /*Compute the line descriptor of input line set. This function should be called + *after OctaveKeyLines() function; */ + int ComputeLBD_(ScaleLines &keyLines); + /*For each octave of image, we define an EDLineDetector, because we can get gradient images (dxImg, dyImg, gImg) + *from the EDLineDetector class without extra computation cost. Another reason is that, if we use + *a single EDLineDetector to detect lines in different octave of images, then we need to allocate and release + *memory for gradient images (dxImg, dyImg, gImg) repeatedly for their varying size*/ + std::vector edLineVec_; + + +}; + + + + + + +#endif /* LINEDESCRIPTOR_HH_ */ diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hh b/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hh new file mode 100644 index 000000000..8ee19fdc6 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hh @@ -0,0 +1,110 @@ +/*IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + + By downloading, copying, installing or using the software you agree to this license. + If you do not agree to this license, do not download, install, + copy or use the software. + + + License Agreement + For Open Source Computer Vision Library + +Copyright (C) 2011-2012, Lilian Zhang, all rights reserved. +Copyright (C) 2013, Manuele Tamburrano, Stefano Fabri, all rights reserved. +Third party copyrights are property of their respective owners. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * The name of the copyright holders may not be used to endorse or promote products + derived from this software without specific prior written permission. + +This software is provided by the copyright holders and contributors "as is" and +any express or implied warranties, including, but not limited to, the implied +warranties of merchantability and fitness for a particular purpose are disclaimed. +In no event shall the Intel Corporation or contributors be liable for any direct, +indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused +and on any theory of liability, whether in contract, strict liability, +or tort (including negligence or otherwise) arising in any way out of +the use of this software, even if advised of the possibility of such damage. +*/ + +#ifndef LINESTRUCTURE_HH_ +#define LINESTRUCTURE_HH_ + +#include +// A 2D line (normal equation parameters). +struct SingleLine +{ + //note: rho and theta are based on coordinate origin, i.e. the top-left corner of image + double rho;//unit: pixel length + double theta;//unit: rad + double linePointX;// = rho * cos(theta); + double linePointY;// = rho * sin(theta); + //for EndPoints, the coordinate origin is the top-left corner of image. + double startPointX; + double startPointY; + double endPointX; + double endPointY; + //direction of a line, the angle between positive line direction (dark side is in the left) and positive X axis. + double direction; + //mean gradient magnitude + double gradientMagnitude; + //mean gray value of pixels in dark side of line + double darkSideGrayValue; + //mean gray value of pixels in light side of line + double lightSideGrayValue; + //the length of line + double lineLength; + //the width of line; + double width; + //number of pixels + int numOfPixels; + //the decriptor of line + std::vector descriptor; +}; + +// Specifies a vector of lines. +typedef std::vector Lines_list; + +struct OctaveSingleLine +{ + /*endPoints, the coordinate origin is the top-left corner of the original image. + *startPointX = sPointInOctaveX * (factor)^octaveCount; */ + float startPointX; + float startPointY; + float endPointX; + float endPointY; + //endPoints, the coordinate origin is the top-left corner of the octave image. + float sPointInOctaveX; + float sPointInOctaveY; + float ePointInOctaveX; + float ePointInOctaveY; + //direction of a line, the angle between positive line direction (dark side is in the left) and positive X axis. + float direction; + //the summation of gradient magnitudes of pixels on lines + float salience; + //the length of line + float lineLength; + //number of pixels + unsigned int numOfPixels; + //the octave which this line is detected + unsigned int octaveCount; + //the decriptor of line + std::vector descriptor; +}; + +// Specifies a vector of lines. +typedef std::vector LinesVec; + +typedef std::vector ScaleLines;//each element in ScaleLines is a vector of lines which corresponds the same line detected in different octave images. + +#endif /* LINESTRUCTURE_HH_ */ diff --git a/modules/line_descriptor/src/EDLineDetector.cpp b/modules/line_descriptor/src/EDLineDetector.cpp new file mode 100644 index 000000000..67a2a7347 --- /dev/null +++ b/modules/line_descriptor/src/EDLineDetector.cpp @@ -0,0 +1,1285 @@ +/*IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + + By downloading, copying, installing or using the software you agree to this license. + If you do not agree to this license, do not download, install, + copy or use the software. + + + License Agreement + For Open Source Computer Vision Library + +Copyright (C) 2011-2012, Lilian Zhang, all rights reserved. +Copyright (C) 2013, Manuele Tamburrano, Stefano Fabri, all rights reserved. +Third party copyrights are property of their respective owners. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * The name of the copyright holders may not be used to endorse or promote products + derived from this software without specific prior written permission. + +This software is provided by the copyright holders and contributors "as is" and +any express or implied warranties, including, but not limited to, the implied +warranties of merchantability and fitness for a particular purpose are disclaimed. +In no event shall the Intel Corporation or contributors be liable for any direct, +indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused +and on any theory of liability, whether in contract, strict liability, +or tort (including negligence or otherwise) arising in any way out of +the use of this software, even if advised of the possibility of such damage. +*/ + + +#include "../include/EDLineDetector.hh" + +#define Horizontal 255//if |dx|<|dy|; +#define Vertical 0//if |dy|<=|dx|; +#define UpDir 1 +#define RightDir 2 +#define DownDir 3 +#define LeftDir 4 +#define TryTime 6 +#define SkipEdgePoint 2 + +//#define DEBUGEdgeDrawing +//#define DEBUGEDLine + +using namespace std; +EDLineDetector::EDLineDetector() +{ + // cout<<"Call EDLineDetector constructor function"<(2,2); + ATV = cv::Mat_(1,2); + tempMatLineFit = cv::Mat_(2,2); + tempVecLineFit = cv::Mat_(1,2); + fitMatT = cv::Mat_(2,minLineLen_); + fitVec = cv::Mat_(1,minLineLen_); + for(int i=0; idata.ptr, pImage, pixelNum*sizeof(unsigned char)); +// } + + unsigned int edgePixelArraySize = pixelNum/5; + unsigned int maxNumOfEdge = edgePixelArraySize/20; + //compute dx, dy images + if(gImg_.cols!= imageWidth||gImg_.rows!= imageHeight){ + if(pFirstPartEdgeX_!= NULL){ + delete [] pFirstPartEdgeX_; + delete [] pFirstPartEdgeY_; + delete [] pSecondPartEdgeX_; + delete [] pSecondPartEdgeY_; + delete [] pFirstPartEdgeS_; + delete [] pSecondPartEdgeS_; + delete [] pAnchorX_; + delete [] pAnchorY_; + } + dxImg_.create(imageHeight, imageWidth, CV_16SC1); + dyImg_.create(imageHeight, imageWidth, CV_16SC1 ); + gImgWO_.create(imageHeight, imageWidth, CV_16SC1 ); + gImg_.create(imageHeight, imageWidth, CV_16SC1 ); + dirImg_.create(imageHeight, imageWidth, CV_8UC1 ); + edgeImage_.create(imageHeight, imageWidth, CV_8UC1 ); + pFirstPartEdgeX_ = new unsigned int[edgePixelArraySize]; + pFirstPartEdgeY_ = new unsigned int[edgePixelArraySize]; + pSecondPartEdgeX_ = new unsigned int[edgePixelArraySize]; + pSecondPartEdgeY_ = new unsigned int[edgePixelArraySize]; + pFirstPartEdgeS_ = new unsigned int[maxNumOfEdge]; + pSecondPartEdgeS_ = new unsigned int[maxNumOfEdge]; + pAnchorX_ = new unsigned int[edgePixelArraySize]; + pAnchorY_ = new unsigned int[edgePixelArraySize]; + } + cv::Sobel( image, dxImg_, CV_16SC1, 1, 0, 3); + cv::Sobel( image, dyImg_, CV_16SC1, 0, 1, 3); + + + #ifdef DEBUGEdgeDrawing + cv::imshow("dxImg_", dxImg_); + cv::imshow("dyImg_", dyImg_); + cv::waitKey(); + #endif + + //compute gradient and direction images + +// double t = (double)cv::getTickCount(); + cv::Mat dxABS_m = cv::abs(dxImg_); + cv::Mat dyABS_m = cv::abs(dyImg_); + cv::Mat sumDxDy; + cv::add(dyABS_m, dxABS_m, sumDxDy); + + + cv::threshold(sumDxDy,gImg_, gradienThreshold_+1, 255, cv::THRESH_TOZERO); + gImg_ = gImg_/4; + gImgWO_ = sumDxDy/4; + cv::compare(dxABS_m, dyABS_m, dirImg_, cv::CMP_LT); + +// t = ((double)cv::getTickCount() - t)/cv::getTickFrequency(); +// std::cout<<"FOR ABS: "<(); + short *pdyImg = dyImg_.ptr(); + short *pgImg = gImg_.ptr(); + unsigned char *pdirImg = dirImg_.ptr(); + + //extract the anchors in the gradient image, store into a vector + memset(pAnchorX_, 0, edgePixelArraySize*sizeof(unsigned int));//initialization + memset(pAnchorY_, 0, edgePixelArraySize*sizeof(unsigned int)); + unsigned int anchorsSize = 0; + int indexInArray; + unsigned char gValue1, gValue2, gValue3; + for(unsigned int w=1; w=pgImg[indexInArray-imageWidth]+anchorThreshold_ + &&pgImg[indexInArray]>=pgImg[indexInArray+imageWidth]+anchorThreshold_){// (w,h) is accepted as an anchor + pAnchorX_[anchorsSize] = w; + pAnchorY_[anchorsSize++] = h; + } + }else{// if(pdirImg[indexInArray]==Vertical){//it is vertical edge, should be compared with left and right + //gValue2 = pgImg[indexInArray]; + if(pgImg[indexInArray]>=pgImg[indexInArray-1]+anchorThreshold_ + &&pgImg[indexInArray]>=pgImg[indexInArray+1]+anchorThreshold_){// (w,h) is accepted as an anchor + pAnchorX_[anchorsSize] = w; + pAnchorY_[anchorsSize++] = h; + } + } + } + } + if(anchorsSize>edgePixelArraySize){ + cout<<"anchor size is larger than its maximal size. anchorsSize="< lineEquation; + lineEquations_.clear(); + lineEndpoints_.clear(); + lineDirection_.clear(); + unsigned char *pdirImg = dirImg_.data; + unsigned int numOfLines = 0; + unsigned int offsetInEdgeArrayS, offsetInEdgeArrayE, newOffsetS;//start index and end index + unsigned int offsetInLineArray=0; + float direction;//line direction + + for(unsigned int edgeID=0; edgeID offsetInEdgeArrayS+minLineLen_){//extract line segments from an edge, may find more than one segments + //find an initial line segment + while(offsetInEdgeArrayE > offsetInEdgeArrayS+minLineLen_){ + lineFitErr = LeastSquaresLineFit_(pEdgeXCors,pEdgeYCors, + offsetInEdgeArrayS,lineEquation); + if(lineFitErr<=lineFitErrThreshold_) break;//ok, an initial line segment detected + offsetInEdgeArrayS +=SkipEdgePoint; //skip the first two pixel in the chain and try with the remaining pixels + } + if(lineFitErr>lineFitErrThreshold_) break; //no line is detected + //An initial line segment is detected. Try to extend this line segment + pLineSID[numOfLines] = offsetInLineArray; + double coef1;//for a line ax+by+c=0, coef1 = 1/sqrt(a^2+b^2); + double pointToLineDis;//for a line ax+by+c=0 and a point(xi, yi), pointToLineDis = coef1*|a*xi+b*yi+c| + bool bExtended=true; + bool bFirstTry = true; + int numOfOutlier;//to against noise, we accept a few outlier of a line. + int tryTimes = 0; + if(pdirImg[pEdgeYCors[offsetInEdgeArrayS]*imageWidth + pEdgeXCors[offsetInEdgeArrayS]]==Horizontal){//y=ax+b, i.e. ax-y+b=0 + while(bExtended){ + tryTimes++; + if(bFirstTry){ + bFirstTry = false; + for(int i=0; i offsetInEdgeArrayS){ + pointToLineDis = fabs(lineEquation[0]*pEdgeXCors[offsetInEdgeArrayS] - + pEdgeYCors[offsetInEdgeArrayS] + lineEquation[1])*coef1; + pLineXCors[offsetInLineArray] = pEdgeXCors[offsetInEdgeArrayS]; + pLineYCors[offsetInLineArray++] = pEdgeYCors[offsetInEdgeArrayS++]; + if(pointToLineDis>lineFitErrThreshold_){ + numOfOutlier++; + if(numOfOutlier>3) break; + }else{//we count number of connective outliers. + numOfOutlier=0; + } + } + //pop back the last few outliers from lines and return them to edge chain + offsetInLineArray -=numOfOutlier; + offsetInEdgeArrayS -=numOfOutlier; + if(offsetInLineArray - newOffsetS>0&&tryTimes lineEqu = {lineEquation[0]*coef1, -1*coef1, lineEquation[1]*coef1}; + if(LineValidation_(pLineXCors,pLineYCors,pLineSID[numOfLines],offsetInLineArray,lineEqu,direction)){//check the line + //store the line equation coefficients + lineEquations_.push_back(lineEqu); + /*At last, compute the line endpoints and store them. + *we project the first and last pixels in the pixelChain onto the best fit line + *to get the line endpoints. + *xp= (w2^2*x0-w1*w2*y0-w3*w1)/(w1^2+w2^2) + *yp= (w1^2*y0-w1*w2*x0-w3*w2)/(w1^2+w2^2) */ + std::array lineEndP;//line endpoints + double a1 = lineEqu[1]*lineEqu[1]; + double a2 = lineEqu[0]*lineEqu[0]; + double a3 = lineEqu[0]*lineEqu[1]; + double a4 = lineEqu[2]*lineEqu[0]; + double a5 = lineEqu[2]*lineEqu[1]; + unsigned int Px = pLineXCors[pLineSID[numOfLines] ];//first pixel + unsigned int Py = pLineYCors[pLineSID[numOfLines] ]; + lineEndP[0] = a1*Px-a3*Py-a4;//x + lineEndP[1] = a2*Py-a3*Px-a5;//y + Px = pLineXCors[offsetInLineArray -1 ];//last pixel + Py = pLineYCors[offsetInLineArray -1 ]; + lineEndP[2] = a1*Px-a3*Py-a4;//x + lineEndP[3] = a2*Py-a3*Px-a5;//y + lineEndpoints_.push_back(lineEndP); + lineDirection_.push_back(direction); + numOfLines++; + }else{ + offsetInLineArray = pLineSID[numOfLines];// line was not accepted, the offset is set back + } + }else{//x=ay+b, i.e. x-ay-b=0 + while(bExtended){ + tryTimes++; + if(bFirstTry){ + bFirstTry = false; + for(int i=0; i offsetInEdgeArrayS){ + pointToLineDis = fabs(pEdgeXCors[offsetInEdgeArrayS] - + lineEquation[0]*pEdgeYCors[offsetInEdgeArrayS] - lineEquation[1])*coef1; + pLineXCors[offsetInLineArray] = pEdgeXCors[offsetInEdgeArrayS]; + pLineYCors[offsetInLineArray++] = pEdgeYCors[offsetInEdgeArrayS++]; + if(pointToLineDis>lineFitErrThreshold_){ + numOfOutlier++; + if(numOfOutlier>3) break; + }else{//we count number of connective outliers. + numOfOutlier=0; + } + } + //pop back the last few outliers from lines and return them to edge chain + offsetInLineArray -= numOfOutlier; + offsetInEdgeArrayS -= numOfOutlier; + if(offsetInLineArray - newOffsetS>0&&tryTimes lineEqu= {1*coef1,-lineEquation[0]*coef1, -lineEquation[1]*coef1}; + if(LineValidation_(pLineXCors,pLineYCors,pLineSID[numOfLines],offsetInLineArray,lineEqu,direction)){//check the line + //store the line equation coefficients + lineEquations_.push_back(lineEqu); + /*At last, compute the line endpoints and store them. + *we project the first and last pixels in the pixelChain onto the best fit line + *to get the line endpoints. + *xp= (w2^2*x0-w1*w2*y0-w3*w1)/(w1^2+w2^2) + *yp= (w1^2*y0-w1*w2*x0-w3*w2)/(w1^2+w2^2) */ + std::array lineEndP;//line endpoints + double a1 = lineEqu[1]*lineEqu[1]; + double a2 = lineEqu[0]*lineEqu[0]; + double a3 = lineEqu[0]*lineEqu[1]; + double a4 = lineEqu[2]*lineEqu[0]; + double a5 = lineEqu[2]*lineEqu[1]; + unsigned int Px = pLineXCors[pLineSID[numOfLines] ];//first pixel + unsigned int Py = pLineYCors[pLineSID[numOfLines] ]; + lineEndP[0] = a1*Px-a3*Py-a4;//x + lineEndP[1] = a2*Py-a3*Px-a5;//y + Px = pLineXCors[offsetInLineArray -1 ];//last pixel + Py = pLineYCors[offsetInLineArray -1 ]; + lineEndP[2] = a1*Px-a3*Py-a4;//x + lineEndP[3] = a2*Py-a3*Px-a5;//y + lineEndpoints_.push_back(lineEndP); + lineDirection_.push_back(direction); + numOfLines++; + }else{ + offsetInLineArray = pLineSID[numOfLines];// line was not accepted, the offset is set back + } + } + //Extract line segments from the remaining pixel; Current chain has been shortened already. + } + }//end for(unsigned int edgeID=0; edgeIDx,iter->y); +// // char buf[10]; +// // sprintf( buf, "%d ", i); +// // cvPutText(cvColorImg,buf,point,&font,CV_RGB(r,g,b)); +// } +// cvNamedWindow("LineColorImage", CV_WINDOW_AUTOSIZE); +// cvShowImage("LineColorImage", cvColorImg); +// cvWaitKey(0); +// cvReleaseImage(&cvColorImg); +#endif + return 1; +} + + +double EDLineDetector::LeastSquaresLineFit_( unsigned int *xCors, unsigned int *yCors, + unsigned int offsetS, std::array &lineEquation) +{ + if(lineEquation.size()!=2){ + std::cout<<"SHOULD NOT BE != 2"<();//fitMatT = [x0, x1, ... xn; 1,1,...,1]; + for(int i=0; i(); + coef = 1.0/(double(pATA[0])*double(pATA[3]) - double(pATA[1])*double(pATA[2])); + // lineEquation = svd.Invert(ATA) * matT * vec; + lineEquation[0] = coef *( double(pATA[3])*double(ATV[0][0])-double(pATA[1])*double(ATV[0][1])); + lineEquation[1] = coef *( double(pATA[0])*double(ATV[0][1])-double(pATA[2])*double(ATV[0][0])); + /*compute line fit error */ + for(int i=0; i();//fitMatT = [y0, y1, ... yn; 1,1,...,1]; + for(int i=0; i(); + coef = 1.0/(double(pATA[0])*double(pATA[3]) - double(pATA[1])*double(pATA[2])); + // lineEquation = svd.Invert(ATA) * matT * vec; + lineEquation[0] = coef *( double(pATA[3])*double(ATV[0][0])-double(pATA[1])*double(ATV[0][1])); + lineEquation[1] = coef *( double(pATA[0])*double(ATV[0][1])-double(pATA[2])*double(ATV[0][0])); + /*compute line fit error */ + for(int i=0; i &lineEquation) +{ + int length = offsetE - offsetS; + int newLength = offsetE - newOffsetS; + if(length<=0||newLength<=0){ + cout<<"EDLineDetector::LeastSquaresLineFit_ Error:" + " the expected line index is wrong...offsetE = " + < matT(2,newLength); + cv::Mat_ vec(newLength,1); + float * pMatT; + float * pATA; + // double fitError = 0; + double coef; + unsigned char *pdirImg = dirImg_.data; + /*If the first pixel in this chain is horizontal, + *then we try to find a horizontal line, y=ax+b;*/ + if(pdirImg[yCors[offsetS]*imageWidth + xCors[offsetS] ]==Horizontal){ + /*Build the new system,and solve it using least square regression: mat * [a,b]^T = vec + * [x0',1] [y0'] + * [x1',1] [a] [y1'] + * . [b] = . + * [xn',1] [yn']*/ + pMatT = matT.ptr();//matT = [x0', x1', ... xn'; 1,1,...,1] + for(int i=0; i(); + coef = 1.0/(double(pATA[0])*double(pATA[3]) - double(pATA[1])*double(pATA[2])); + lineEquation[0] = coef *( double(pATA[3])*double(ATV[0][0])-double(pATA[1])*double(ATV[0][1])); + lineEquation[1] = coef *( double(pATA[0])*double(ATV[0][1])-double(pATA[2])*double(ATV[0][0])); + /*compute line fit error */ + // for(int i=0; i();//matT = [y0', y1', ... yn'; 1,1,...,1] + for(int i=0; i(); + coef = 1.0/(double(pATA[0])*double(pATA[3]) - double(pATA[1])*double(pATA[2])); + lineEquation[0] = coef *( double(pATA[3])*double(ATV[0][0])-double(pATA[1])*double(ATV[0][1])); + lineEquation[1] = coef *( double(pATA[0])*double(ATV[0][1])-double(pATA[2])*double(ATV[0][0])); + /*compute line fit error */ + // for(int i=0; i &lineEquation, float &direction) +{ + if(bValidate_){ + int n = offsetE - offsetS; + /*first compute the direction of line, make sure that the dark side always be the + *left side of a line.*/ + int meanGradientX=0, meanGradientY=0; + short *pdxImg = dxImg_.ptr(); + short *pdyImg = dyImg_.ptr(); + double dx, dy; + std::vector pointDirection; + int index; + for(int i=0; i0&&meanGradientY>=0){//first quadrant, and positive direction of X axis. + direction = atan2(-dy,dx);//line direction is in fourth quadrant + } + if(meanGradientX<=0&&meanGradientY>0){//second quadrant, and positive direction of Y axis. + direction = atan2(dy,dx);//line direction is in first quadrant + } + if(meanGradientX<0&&meanGradientY<=0){//third quadrant, and negative direction of X axis. + direction = atan2(dy,-dx);//line direction is in second quadrant + } + if(meanGradientX>=0&&meanGradientY<0){//fourth quadrant, and negative direction of Y axis. + direction = atan2(-dy,-dx);//line direction is in third quadrant + } + /*then check whether the line is on the border of the image. We don't keep the border line.*/ + if(fabs(direction)<0.15||M_PI-fabs(direction)<0.15){//Horizontal line + if(fabs(lineEquation[2])<10||fabs(imageHeight - fabs(lineEquation[2]))<10){//upper border or lower border + return false; + } + } + if(fabs(fabs(direction)-M_PI*0.5)<0.15){//Vertical line + if(fabs(lineEquation[2])<10||fabs(imageWidth - fabs(lineEquation[2]))<10){//left border or right border + return false; + } + } + //count the aligned points on the line which have the same direction as the line. + double disDirection; + int k = 0; + for(int i=0; i0); //0 corresponds to 1 mean false alarm + }else{ + return true; + } +} + +int EDLineDetector::EDline(cv::Mat &image, bool smoothed) +{ + if((EDline(image, lines_, smoothed)) != true){ + return -1; + } + lineSalience_.clear(); + lineSalience_.resize(lines_.numOfLines); + unsigned char *pgImg = gImgWO_.ptr(); + unsigned int indexInLineArray; + unsigned int *pXCor = lines_.xCors.data(); + unsigned int *pYCor = lines_.yCors.data(); + unsigned int *pSID = lines_.sId.data(); + for(unsigned int i=0; iEDline(blur,true))!= true){ + return -1; + } + + /* update number of total extracted lines */ + numOfFinalLine += edLineVec_[octaveCount]->lines_.numOfLines; + + /* resize image for next level of pyramid */ + cv::resize(blur, image, cv::Size(), (1.f/factor), (1.f/factor)); + + /* update sigma values */ + preSigma2 = curSigma2; + curSigma2 = curSigma2*2; + + } /* end of loop over number of octaves */ + + + /*lines which correspond to the same line in the octave images will be stored + in the same element of ScaleLines.*/ + + /* prepare a vector to store octave information associated to extracted lines */ + std::vector octaveLines(numOfFinalLine); + + /* set lines' counter to 0 for reuse */ + numOfFinalLine = 0; + + /* counter to give a unique ID to lines in LineVecs */ + unsigned int lineIDInScaleLineVec = 0; + + /* floats to compute lines' lengths */ + float dx, dy; + + /* loop over lines extracted from scale 0 (original image) */ + for(unsigned int lineCurId=0;lineCurIdlines_.numOfLines;lineCurId++){ + /* FOR CURRENT LINE: */ + + /* set octave from which it was extracted */ + octaveLines[numOfFinalLine].octaveCount = 0; + /* set ID within its octave */ + octaveLines[numOfFinalLine].lineIDInOctave = lineCurId; + /* set a unique ID among all lines extracted in all octaves */ + octaveLines[numOfFinalLine].lineIDInScaleLineVec = lineIDInScaleLineVec; + + /* compute absolute value of difference between X coordinates of line's extreme points */ + dx = fabs(edLineVec_[0]->lineEndpoints_[lineCurId][0]-edLineVec_[0]->lineEndpoints_[lineCurId][2]); + /* compute absolute value of difference between Y coordinates of line's extreme points */ + dy = fabs(edLineVec_[0]->lineEndpoints_[lineCurId][1]-edLineVec_[0]->lineEndpoints_[lineCurId][3]); + /* compute line's length */ + octaveLines[numOfFinalLine].lineLength = sqrt(dx*dx+dy*dy); + + /* update counters */ + numOfFinalLine++; + lineIDInScaleLineVec++; + } + + /* create and fill an array to store scale factors */ + float *scale = new float[numOfOctave_]; + scale[0] = 1; + for(unsigned int octaveCount = 1; octaveCount1){ + /* some other variables' declarations */ + float twoPI = 2*M_PI; + unsigned int closeLineID; + float endPointDis,minEndPointDis,minLocalDis,maxLocalDis; + float lp0,lp1, lp2, lp3, np0,np1, np2, np3; + + /* loop over list of octaves */ + for(unsigned int octaveCount = 1; octaveCountlines_.numOfLines;lineCurId++){ + /* get (scaled) known term from equation of current line */ + rho1 = scale[octaveCount] * fabs(edLineVec_[octaveCount]->lineEquations_[lineCurId][2]); + + /*nearThreshold depends on the distance of the image coordinate origin to current line. + *so nearThreshold = rho1 * nearThresholdRatio, where nearThresholdRatio = 1-cos(10*pi/180) = 0.0152*/ + tempValue = rho1 * 0.0152; + float nearThreshold = (tempValue>6)?(tempValue):6; + nearThreshold = (nearThreshold<12)?nearThreshold:12; + + /* compute scaled lenght of current line */ + dx = fabs(edLineVec_[octaveCount]->lineEndpoints_[lineCurId][0]-edLineVec_[octaveCount]->lineEndpoints_[lineCurId][2]);//x1-x2 + dy = fabs(edLineVec_[octaveCount]->lineEndpoints_[lineCurId][1]-edLineVec_[octaveCount]->lineEndpoints_[lineCurId][3]);//y1-y2 + length = scale[octaveCount] * sqrt(dx*dx+dy*dy); + + minEndPointDis = 12; + /* loop over the octave representations of all lines */ + for(unsigned int lineNextId=0; lineNextIdlineDirection_[lineCurId] - + edLineVec_[octaveID]->lineDirection_[lineIDInOctave]); + + /* the angle between two lines are larger than 10degrees + (i.e. 10*pi/180=0.1745), they are not close to parallel */ + if(direction>0.1745 && (twoPI - direction>0.1745)){ + continue; + } + /*now check whether current line and next line are near to each other. + *If line1:a1*x+b1*y+c1=0 and line2:a2*x+b2*y+c2=0 are near in image, then + *rho1 = |a1*0+b1*0+c1|/sqrt(a1^2+b1^2) and rho2 = |a2*0+b2*0+c2|/sqrt(a2^2+b2^2) should close. + *In our case, rho1 = |c1| and rho2 = |c2|, because sqrt(a1^2+b1^2) = sqrt(a2^2+b2^2) = 1; + *note that, lines are in different octave images, so we define near = fabs(scale*rho1 - rho2) or + *where scale is the scale factor between to octave images*/ + + /* get known term from equation to be compared */ + rho2 = scale[octaveID] * fabs(edLineVec_[octaveID]->lineEquations_[lineIDInOctave][2]); + /* compute difference between known ters */ + near = fabs(rho1 - rho2); + + /* two lines are not close in the image */ + if(near>nearThreshold){ + continue; + } + + /*now check the end points distance between two lines, the scale of distance is in the original image size. + * find the minimal and maximal end points distance*/ + + /* get the extreme points of the two lines */ + lp0 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][0]; + lp1 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][1]; + lp2 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][2]; + lp3 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][3]; + np0 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][0]; + np1 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][1]; + np2 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][2]; + np3 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][3]; + + /* get the distance between the two leftmost extremes of lines + L1(0,1)<->L2(0,1) */ + dx = lp0 - np0; + dy = lp1 - np1; + endPointDis = sqrt(dx*dx + dy*dy); + + /* set momentaneously min and max distance between lines to + the one between left extremes */ + minLocalDis = endPointDis; + maxLocalDis = endPointDis; + + /* compute distance between right extremes + L1(2,3)<->L2(2,3) */ + dx = lp2 - np2; + dy = lp3 - np3; + endPointDis = sqrt(dx*dx + dy*dy); + + /* update (if necessary) min and max distance between lines */ + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + + + /* compute distance between left extreme of current line and + right extreme of line to be compared + L1(0,1)<->L2(2,3) */ + dx = lp0 - np2; + dy = lp1 - np3; + endPointDis = sqrt(dx*dx + dy*dy); + + /* update (if necessary) min and max distance between lines */ + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + + /* compute distance between right extreme of current line and + left extreme of line to be compared + L1(2,3)<->L2(0,1) */ + dx = lp2 - np0; + dy = lp3 - np1; + endPointDis = sqrt(dx*dx + dy*dy); + + /* update (if necessary) min and max distance between lines */ + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + + /* check whether conditions for considering line to be compared + worth to be inserted in the same LineVec are satisfied */ + if((maxLocalDis<0.8*(length+octaveLines[lineNextId].lineLength)) + &&(minLocalDis1) + + //////////////////////////////////// + //Reorganize the detected lines into keyLines + keyLines.clear(); + keyLines.resize(lineIDInScaleLineVec); + unsigned int tempID; + float s1,e1,s2,e2; + bool shouldChange; + OctaveSingleLine singleLine; + for(unsigned int lineID = 0;lineID < numOfFinalLine; lineID++){ + lineIDInOctave = octaveLines[lineID].lineIDInOctave; + octaveID = octaveLines[lineID].octaveCount; + direction = edLineVec_[octaveID]->lineDirection_[lineIDInOctave]; + singleLine.octaveCount = octaveID; + singleLine.direction = direction; + singleLine.lineLength = octaveLines[lineID].lineLength; + singleLine.salience = edLineVec_[octaveID]->lineSalience_[lineIDInOctave]; + singleLine.numOfPixels = edLineVec_[octaveID]->lines_.sId[lineIDInOctave+1]- + edLineVec_[octaveID]->lines_.sId[lineIDInOctave]; + //decide the start point and end point + shouldChange = false; + s1 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][0];//sx + s2 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][1];//sy + e1 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][2];//ex + e2 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][3];//ey + dx = e1 - s1;//ex-sx + dy = e2 - s2;//ey-sy + if(direction>=-0.75*M_PI&&direction<-0.25*M_PI){ + if(dy>0){shouldChange = true;} + } + if(direction>=-0.25*M_PI&&direction<0.25*M_PI){ + if(dx<0){shouldChange = true;} + } + if(direction>=0.25*M_PI&&direction<0.75*M_PI){ + if(dy<0){shouldChange = true;} + } + if((direction>=0.75*M_PI&&direction=-M_PI&&direction<-0.75*M_PI)){ + if(dx>0){shouldChange = true;} + } + tempValue = scale[octaveID]; + if(shouldChange){ + singleLine.sPointInOctaveX = e1; + singleLine.sPointInOctaveY = e2; + singleLine.ePointInOctaveX = s1; + singleLine.ePointInOctaveY = s2; + singleLine.startPointX = tempValue * e1; + singleLine.startPointY = tempValue * e2; + singleLine.endPointX = tempValue * s1; + singleLine.endPointY = tempValue * s2; + }else{ + singleLine.sPointInOctaveX = s1; + singleLine.sPointInOctaveY = s2; + singleLine.ePointInOctaveX = e1; + singleLine.ePointInOctaveY = e2; + singleLine.startPointX = tempValue * s1; + singleLine.startPointY = tempValue * s2; + singleLine.endPointX = tempValue * e1; + singleLine.endPointY = tempValue * e2; + } + tempID = octaveLines[lineID].lineIDInScaleLineVec; + keyLines[tempID].push_back(singleLine); + } + + //////////////////////////////////// + + delete [] scale; + return 1; +} + +/*The definitions of line descriptor,mean values of {g_dL>0},{g_dL<0},{g_dO>0},{g_dO<0} of each row in band + *and std values of sum{g_dL>0},sum{g_dL<0},sum{g_dO>0},sum{g_dO<0} of each row in band. + * With overlap region. */ +int LineDescriptor::ComputeLBD_(ScaleLines &keyLines) +{ + //the default length of the band is the line length. + short numOfFinalLine = keyLines.size(); + float *dL = new float[2];//line direction cos(dir), sin(dir) + float *dO = new float[2];//the clockwise orthogonal vector of line direction. + short heightOfLSP = widthOfBand_*numOfBand_;//the height of line support region; + short descriptorSize = numOfBand_ * 8;//each band, we compute the m( pgdL, ngdL, pgdO, ngdO) and std( pgdL, ngdL, pgdO, ngdO); + float pgdLRowSum;//the summation of {g_dL |g_dL>0 } for each row of the region; + float ngdLRowSum;//the summation of {g_dL |g_dL<0 } for each row of the region; + float pgdL2RowSum;//the summation of {g_dL^2 |g_dL>0 } for each row of the region; + float ngdL2RowSum;//the summation of {g_dL^2 |g_dL<0 } for each row of the region; + float pgdORowSum;//the summation of {g_dO |g_dO>0 } for each row of the region; + float ngdORowSum;//the summation of {g_dO |g_dO<0 } for each row of the region; + float pgdO2RowSum;//the summation of {g_dO^2 |g_dO>0 } for each row of the region; + float ngdO2RowSum;//the summation of {g_dO^2 |g_dO<0 } for each row of the region; + + float *pgdLBandSum = new float[numOfBand_];//the summation of {g_dL |g_dL>0 } for each band of the region; + float *ngdLBandSum = new float[numOfBand_];//the summation of {g_dL |g_dL<0 } for each band of the region; + float *pgdL2BandSum = new float[numOfBand_];//the summation of {g_dL^2 |g_dL>0 } for each band of the region; + float *ngdL2BandSum = new float[numOfBand_];//the summation of {g_dL^2 |g_dL<0 } for each band of the region; + float *pgdOBandSum = new float[numOfBand_];//the summation of {g_dO |g_dO>0 } for each band of the region; + float *ngdOBandSum = new float[numOfBand_];//the summation of {g_dO |g_dO<0 } for each band of the region; + float *pgdO2BandSum = new float[numOfBand_];//the summation of {g_dO^2 |g_dO>0 } for each band of the region; + float *ngdO2BandSum = new float[numOfBand_];//the summation of {g_dO^2 |g_dO<0 } for each band of the region; + + short numOfBitsBand = numOfBand_*sizeof(float); + short lengthOfLSP; //the length of line support region, varies with lines + short halfHeight = (heightOfLSP-1)/2; + short halfWidth; + short bandID; + float coefInGaussion; + float lineMiddlePointX, lineMiddlePointY; + float sCorX, sCorY,sCorX0, sCorY0; + short tempCor, xCor, yCor;//pixel coordinates in image plane + short dx, dy; + float gDL;//store the gradient projection of pixels in support region along dL vector + float gDO;//store the gradient projection of pixels in support region along dO vector + short imageWidth, imageHeight, realWidth; + short *pdxImg, *pdyImg; + float *desVec; + + short sameLineSize; + short octaveCount; + OctaveSingleLine *pSingleLine; + /* loop over list of LineVec */ + for(short lineIDInScaleVec = 0; lineIDInScaleVecoctaveCount; + + /* retrieve associated dxImg and dyImg */ + pdxImg = edLineVec_[octaveCount]->dxImg_.ptr(); + pdyImg = edLineVec_[octaveCount]->dyImg_.ptr(); + + /* get image size to work on from real one */ + realWidth = edLineVec_[octaveCount]->imageWidth; + imageWidth = realWidth -1; + imageHeight = edLineVec_[octaveCount]->imageHeight-1; + + + /* initialize memory areas */ + memset(pgdLBandSum, 0, numOfBitsBand); + memset(ngdLBandSum, 0, numOfBitsBand); + memset(pgdL2BandSum, 0, numOfBitsBand); + memset(ngdL2BandSum, 0, numOfBitsBand); + memset(pgdOBandSum, 0, numOfBitsBand); + memset(ngdOBandSum, 0, numOfBitsBand); + memset(pgdO2BandSum, 0, numOfBitsBand); + memset(ngdO2BandSum, 0, numOfBitsBand); + + /* get length of line and its half */ + lengthOfLSP = keyLines[lineIDInScaleVec][lineIDInSameLine].numOfPixels; + halfWidth = (lengthOfLSP-1)/2; + + /* get middlepoint of line */ + lineMiddlePointX = 0.5 * (pSingleLine->sPointInOctaveX + pSingleLine->ePointInOctaveX); + lineMiddlePointY = 0.5 * (pSingleLine->sPointInOctaveY + pSingleLine->ePointInOctaveY); + + /*1.rotate the local coordinate system to the line direction (direction is the angle + between positive line direction and positive X axis) + *2.compute the gradient projection of pixels in line support region*/ + + /* get the vector representing original image reference system after rotation to aligh with + line's direction */ + dL[0] = cos(pSingleLine->direction); + dL[1] = sin(pSingleLine->direction); + + /* set the clockwise orthogonal vector of line direction */ + dO[0] = -dL[1]; + dO[1] = dL[0]; + + /* get rotated reference frame */ + sCorX0= -dL[0]*halfWidth + dL[1]*halfHeight + lineMiddlePointX;//hID =0; wID = 0; + sCorY0= -dL[1]*halfWidth - dL[0]*halfHeight + lineMiddlePointY; + + + /* BIAS::Matrix gDLMat(heightOfLSP,lengthOfLSP) */ + for(short hID = 0; hID imageWidth)?imageWidth:tempCor; + tempCor = round(sCorY); + yCor = (tempCor<0)?0:(tempCor>imageHeight)?imageHeight:tempCor; + + /* To achieve rotation invariance, each simple gradient is rotated aligned with + * the line direction and clockwise orthogonal direction.*/ + dx = pdxImg[yCor*realWidth+xCor]; + dy = pdyImg[yCor*realWidth+xCor]; + gDL = dx * dL[0] + dy * dL[1]; + gDO = dx * dO[0] + dy * dO[1]; + if(gDL>0){ + pgdLRowSum += gDL; + }else{ + ngdLRowSum -= gDL; + } + if(gDO>0){ + pgdORowSum += gDO; + }else{ + ngdORowSum -= gDO; + } + sCorX +=dL[0]; + sCorY +=dL[1]; + /* gDLMat[hID][wID] = gDL; */ + } + sCorX0 -=dL[1]; + sCorY0 +=dL[0]; + coefInGaussion = gaussCoefG_[hID]; + pgdLRowSum = coefInGaussion * pgdLRowSum; + ngdLRowSum = coefInGaussion * ngdLRowSum; + pgdL2RowSum = pgdLRowSum * pgdLRowSum; + ngdL2RowSum = ngdLRowSum * ngdLRowSum; + pgdORowSum = coefInGaussion * pgdORowSum; + ngdORowSum = coefInGaussion * ngdORowSum; + pgdO2RowSum = pgdORowSum * pgdORowSum; + ngdO2RowSum = ngdORowSum * ngdORowSum; + + /* compute {g_dL |g_dL>0 }, {g_dL |g_dL<0 }, + {g_dO |g_dO>0 }, {g_dO |g_dO<0 } of each band in the line support region + first, current row belong to current band */ + bandID = hID/widthOfBand_; + coefInGaussion = gaussCoefL_[hID%widthOfBand_+widthOfBand_]; + pgdLBandSum[bandID] += coefInGaussion * pgdLRowSum; + ngdLBandSum[bandID] += coefInGaussion * ngdLRowSum; + pgdL2BandSum[bandID] += coefInGaussion * coefInGaussion * pgdL2RowSum; + ngdL2BandSum[bandID] += coefInGaussion * coefInGaussion * ngdL2RowSum; + pgdOBandSum[bandID] += coefInGaussion * pgdORowSum; + ngdOBandSum[bandID] += coefInGaussion * ngdORowSum; + pgdO2BandSum[bandID] += coefInGaussion * coefInGaussion * pgdO2RowSum; + ngdO2BandSum[bandID] += coefInGaussion * coefInGaussion * ngdO2RowSum; + + /* In order to reduce boundary effect along the line gradient direction, + * a row's gradient will contribute not only to its current band, but also + * to its nearest upper and down band with gaussCoefL_.*/ + bandID--; + if(bandID>=0){/* the band above the current band */ + coefInGaussion = gaussCoefL_[hID%widthOfBand_ + 2*widthOfBand_]; + pgdLBandSum[bandID] += coefInGaussion * pgdLRowSum; + ngdLBandSum[bandID] += coefInGaussion * ngdLRowSum; + pgdL2BandSum[bandID] += coefInGaussion * coefInGaussion * pgdL2RowSum; + ngdL2BandSum[bandID] += coefInGaussion * coefInGaussion * ngdL2RowSum; + pgdOBandSum[bandID] += coefInGaussion * pgdORowSum; + ngdOBandSum[bandID] += coefInGaussion * ngdORowSum; + pgdO2BandSum[bandID] += coefInGaussion * coefInGaussion * pgdO2RowSum; + ngdO2BandSum[bandID] += coefInGaussion * coefInGaussion * ngdO2RowSum; + } + bandID = bandID+2; + if(bandIDdescriptor.resize(descriptorSize); + desVec = pSingleLine->descriptor.data(); + + short desID; + + /*Note that the first and last bands only have (lengthOfLSP * widthOfBand_ * 2.0) pixels + * which are counted. */ + float invN2 = 1.0/(widthOfBand_ * 2.0); + float invN3 = 1.0/(widthOfBand_ * 3.0); + float invN, temp; + for(bandID = 0; bandIDdescriptor.data(); + + int base = 0; + for(short i=0; idescriptor.data(); + base = 0; + for(short i=0; idescriptor.data(); + for(short i=0; i0.4){ + desVec[i]=0.4; + } + } + + //re-normalize desVec; + temp = 0; + for(short i=0; if2[i]) + { +// std::cout<< " ------ 1 ------- "<f2[i]) +// { +//// std::cout<< " ------ 1 ------- "<& desc) +{ + uchar result=0; + for(int i = 0; i<8; i++) + { +// std::cout<<"f1[: "<desc[i+f2]) + { +// std::cout<< " ------ 1 ------- "< & oct_binaryDescMat, ScaleLines & keyLines) +{ + + /* std::cout<<"numOfOctave: "< rows_size; + for(int i = 0; i vec_binaryMat_p; + + /* loop on the number of the octaves */ + for(int i = 0; i(i, j) = (float)keyLines[i][0].descriptor[j]; +// } +// std::cout<= 3.12) + return true; + + return false; +} + + +void LineDescriptor::findNearestParallelLines(ScaleLines & keyLines) +{ + + std::cout<<"PARALLELLINES: size: "< parallels; + + /* loop over LineVecs */ + for(int j = 0; j::iterator it; + + /* scan map to searck for a line parallel to current one */ + bool foundParallel = false; + for(it = parallels.begin(); it != parallels.end(); it++) { + if(!areParallels(it->first, singleLine.direction)) + { + foundParallel = true; + break; + } + + } + + /* if a parallel line has not been found, add current line + to map, using its direction as a key */ + if(!foundParallel) + parallels[singleLine.direction] = singleLine; + + } + } + + /* create a vector of LineVecs, each one containing a line that is + not parallel to any other one inside a different LineVec */ + ScaleLines newKeyLines; + std::map::iterator it; + for(it = parallels.begin(); it != parallels.end(); it++) { + LinesVec lineScaleLs; + lineScaleLs.push_back(it->second); + newKeyLines.push_back(lineScaleLs); + } + + keyLines = newKeyLines; + +} + +int LineDescriptor::GetLineDescriptor(cv::Mat & image, ScaleLines & keyLines, bool lsd) +{ + + /*check whether image depth is different from 0 */ + if(image.depth() != 0) + { + std::cout << "Warning, depth image!= 0" << std::endl; + CV_Assert(false); + } + + /* make a clone of input image */ + cv::Mat original = image.clone(); + + /* get clock's TIC */ + double t = (double)cv::getTickCount(); + + /* compute LineVecs extraction and in case of failure, return an error code */ + if((OctaveKeyLines(image,keyLines))!=true){ + cout << "OctaveKeyLines failed" << endl; + return -1; + } + + /* get time lapse */ + t = ((double)cv::getTickCount() - t)/cv::getTickFrequency(); + std::cout << "time line extraction: " << t<< "s" < ls = cv::createLineSegmentDetector(cv::LSD_REFINE_STD); + + /* prepare a vectore to host extracted segments */ + std::vector lines_std; + + ScaleLines scaleLs; + + /* use detector to extract segments */ + ls->detect(original, lines_std); + + /* make a copy of input image */ + cv::Mat drawnLines(original); + + /* draw extracted segments on the copy of image */ + ls->drawSegments(drawnLines, lines_std); + + /* show extracted segments on image */ + cv::imshow("Standard refinement", drawnLines); + + /* get a matrix representation of segments */ + cv::Mat _lines; + _lines = ((cv::InputArray)lines_std).getMat(); + + // Draw segments + for(int i = 0; i < _lines.size().width; ++i) + { + + /* get current segments and store its extremes */ + const cv::Vec4i& v = _lines.at(i); + cv::Point b(v[0], v[1]); + cv::Point e(v[2], v[3]); + + /* create an object to store line information */ + OctaveSingleLine osl; + osl.startPointX = b.x; + osl.startPointY = b.y; + osl.endPointX = e.x; + osl.endPointY = e.y; + osl.sPointInOctaveX = b.x; + osl.sPointInOctaveY = b.y; + osl.ePointInOctaveX = e.x; + osl.ePointInOctaveY = e.y; + osl.direction = 0; + osl.salience = 0; + osl.lineLength = 0; + osl.numOfPixels = std::sqrt((b.x-e.x)*(b.x-e.x) + (b.y-e.y)*(b.y-e.y)); + osl.octaveCount = 0; + + /* store information about line */ + LinesVec lineScaleLs; + lineScaleLs.push_back(osl); + scaleLs.push_back(lineScaleLs); + + } + + + keyLines = scaleLs; + } + else + std::cout<<"GetLineDescriptor EDLINE"< &matchLeft, std::vector &matchRight, + int criteria) +{ + + /* check whether any input is void */ + int leftSize = keyLinesLeft.size(); + int rightSize = keyLinesRight.size(); + if(leftSize<1||rightSize<1){ + return -1; + } + + /* void vectors */ + matchLeft.clear(); + matchRight.clear(); + + + int desDim = keyLinesLeft[0][0].descriptor.size(); + float *desL, *desR, *desMax, *desOld; + + if(criteria==NearestNeighbor) + { + float minDis,dis,temp; + int corresId; + + /* loop over left list of LineVecs */ + for(int idL=0; idL Date: Wed, 21 May 2014 17:21:04 +0200 Subject: [PATCH 02/67] OpenCV configuration done --- modules/line_descriptor/.gitignore | 3 ++ modules/line_descriptor/CMakeLists.txt | 66 +------------------------- 2 files changed, 5 insertions(+), 64 deletions(-) create mode 100644 modules/line_descriptor/.gitignore diff --git a/modules/line_descriptor/.gitignore b/modules/line_descriptor/.gitignore new file mode 100644 index 000000000..c4819118a --- /dev/null +++ b/modules/line_descriptor/.gitignore @@ -0,0 +1,3 @@ +*.o +./bin/* +.~ diff --git a/modules/line_descriptor/CMakeLists.txt b/modules/line_descriptor/CMakeLists.txt index b21a10bd4..aa7d995b1 100644 --- a/modules/line_descriptor/CMakeLists.txt +++ b/modules/line_descriptor/CMakeLists.txt @@ -1,64 +1,2 @@ -#INCLUDE_DIRECTORIES(/data1/lz/LilianTests/ARPACKLAB/arpack++/include/) -#INCLUDE_DIRECTORIES(/data1/lz/LilianTests/ARPACKLAB/arpack++) -INCLUDE_DIRECTORIES(/usr/include/arpack++/include/) -INCLUDE_DIRECTORIES(/usr/include/arpack++) - -#project name -PROJECT(LILIANTESTS) - -cmake_minimum_required(VERSION 2.8) - -if(COMMAND cmake_policy) - cmake_policy(SET CMP0003 NEW) -endif(COMMAND cmake_policy) - -SET(BUILD_SHARED_LIBS ON) - -## where are user-specific cmake modules -SET(CMAKE_MODULE_PATH $ENV{CMAKE_MODULE_PATH}) - -OPTION(USE_BIAS OFF) - -#IF(USE_BIAS) -#FIND_PACKAGE(BIAS) -#IF(BIAS_FOUND) -# INCLUDE(${BIAS_USE_FILE}) -#ELSE(BIAS_FOUND) -# MESSAGE(SEND_ERROR "BIAS lib not found.") -#ENDIF(BIAS_FOUND) -#ENDIF(USE_BIAS) - - -IF(USE_BIAS) -INCLUDE_DIRECTORIES(${BIAS_INCLUDE_DIR} /usr/local/include/BIAS /usr/include/ImageMagick /usr/local/include/opencv2 ${WXWIDGETS_INCLUDE_DIR}) -LINK_DIRECTORIES( ${BIAS_LINK_DIRECTORIES}) -ENDIF(USE_BIAS) - -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${BIAS_CXX_FLAGS} -std=c++0x") -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${BIAS_C_FLAGS}") - -# source files of library "LineMatchingLib" to be created -SET(LineMatchingLib_SRCS - #src/PairwiseLineMatching.cpp - src/LineDescriptor.cpp - src/EDLineDetector.cpp -) -# header files to be installed -SET(LineMatchingLib_HEADER - #include/PairwiseLineMatching.hh - include/LineDescriptor.hh - include/EDLineDetector.hh - include/LineStructure.hh -) - - -ADD_LIBRARY(LineMatchingLib - ${LineMatchingLib_SRCS} - ${LineMatchingLib_HEADER}) -TARGET_LINK_LIBRARIES(LineMatchingLib /usr/lib/libsuperlu.so opencv_core opencv_highgui opencv_imgproc) - - -#ADD_EXECUTABLE(TestLineMatchingAlgorithm src/TestLineMatchingAlgorithm.cpp) -#TARGET_LINK_LIBRARIES(TestLineMatchingAlgorithm LineMatchingLib ) - - +set(the_description "Line descriptor") +ocv_define_module(line_descriptor) From d79ae76a52d3a2c83e740648c9b28f4dcec460ce Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Sun, 25 May 2014 10:26:51 +0200 Subject: [PATCH 03/67] Some compilation-time problems corrected --- modules/line_descriptor/.cproject | 49 ++ modules/line_descriptor/.project | 27 + modules/line_descriptor/CMakeLists.txt | 5 +- modules/line_descriptor/CMakeLists.txt~ | 4 + .../{EDLineDetector.hh => EDLineDetector.hpp} | 12 +- .../{LineDescriptor.hh => LineDescriptor.hpp} | 26 +- .../{LineStructure.hh => LineStructure.hpp} | 1 + .../opencv2/line_descriptor/line_detector.hpp | 46 ++ .../opencv2/line_descriptor/tracking.hpp~ | 46 ++ .../include/opencv2/line_detector.hpp | 52 ++ .../include/opencv2/tracking.hpp~ | 52 ++ .../line_descriptor/src/EDLineDetector.cpp | 5 +- .../line_descriptor/src/LineDescriptor.cpp | 529 ++++++++---------- .../src/line_descriptor_init.cpp | 61 ++ .../src/line_descriptor_init.cpp~ | 61 ++ modules/line_descriptor/src/precomp.cpp | 39 ++ modules/line_descriptor/src/precomp.hpp | 54 ++ 17 files changed, 761 insertions(+), 308 deletions(-) create mode 100644 modules/line_descriptor/.cproject create mode 100644 modules/line_descriptor/.project create mode 100644 modules/line_descriptor/CMakeLists.txt~ rename modules/line_descriptor/include/opencv2/line_descriptor/{EDLineDetector.hh => EDLineDetector.hpp} (98%) rename modules/line_descriptor/include/opencv2/line_descriptor/{LineDescriptor.hh => LineDescriptor.hpp} (89%) rename modules/line_descriptor/include/opencv2/line_descriptor/{LineStructure.hh => LineStructure.hpp} (99%) create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/line_detector.hpp create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/tracking.hpp~ create mode 100644 modules/line_descriptor/include/opencv2/line_detector.hpp create mode 100644 modules/line_descriptor/include/opencv2/tracking.hpp~ create mode 100644 modules/line_descriptor/src/line_descriptor_init.cpp create mode 100644 modules/line_descriptor/src/line_descriptor_init.cpp~ create mode 100644 modules/line_descriptor/src/precomp.cpp create mode 100644 modules/line_descriptor/src/precomp.hpp diff --git a/modules/line_descriptor/.cproject b/modules/line_descriptor/.cproject new file mode 100644 index 000000000..7e63c83ed --- /dev/null +++ b/modules/line_descriptor/.cproject @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/line_descriptor/.project b/modules/line_descriptor/.project new file mode 100644 index 000000000..2f7da2926 --- /dev/null +++ b/modules/line_descriptor/.project @@ -0,0 +1,27 @@ + + + line_descriptor + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/modules/line_descriptor/CMakeLists.txt b/modules/line_descriptor/CMakeLists.txt index aa7d995b1..8ba70ca25 100644 --- a/modules/line_descriptor/CMakeLists.txt +++ b/modules/line_descriptor/CMakeLists.txt @@ -1,2 +1,5 @@ set(the_description "Line descriptor") -ocv_define_module(line_descriptor) +ocv_define_module(line_descriptor opencv_imgproc opencv_optim) + +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${BIAS_CXX_FLAGS} -std=c++0x") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${BIAS_C_FLAGS}") diff --git a/modules/line_descriptor/CMakeLists.txt~ b/modules/line_descriptor/CMakeLists.txt~ new file mode 100644 index 000000000..d27371476 --- /dev/null +++ b/modules/line_descriptor/CMakeLists.txt~ @@ -0,0 +1,4 @@ +set(the_description "Line descriptor") +ocv_define_module(line_descriptor opencv_imgproc opencv_optim) + + diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hh b/modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hpp similarity index 98% rename from modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hh rename to modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hpp index 40b991058..ab5ad4e43 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hh +++ b/modules/line_descriptor/include/opencv2/line_descriptor/EDLineDetector.hpp @@ -44,11 +44,16 @@ the use of this software, even if advised of the possibility of such damage. #include #include #include -#include -#include -#include +//#include +#include +//#include +#include +//#include +#include #include + #include +#include struct Pixel{ @@ -94,6 +99,7 @@ inline void writeMat(cv::Mat m, std::string name, int n) ss >> s; std::string fileNameConf = name + s; cv::FileStorage fsConf(fileNameConf, cv::FileStorage::WRITE); + cv::FileStorage fsConf(); fsConf << "m" << m; fsConf.release(); diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hh b/modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hpp similarity index 89% rename from modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hh rename to modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hpp index 04aecd13b..1279ff476 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hh +++ b/modules/line_descriptor/include/opencv2/line_descriptor/LineDescriptor.hpp @@ -41,11 +41,20 @@ the use of this software, even if advised of the possibility of such damage. #define LINEDESCRIPTOR_HH_ -#include "EDLineDetector.hh" -#include "LineStructure.hh" +//#include "EDLineDetector.hh" +//#include "LineStructure.hh" +//#include "/include/opencv2/line_descriptor/EDLineDetector.hpp" +//#include "opencv2/line_descriptor/LineStructure.hpp" +//#include "opencv2/EDLineDetector.hpp" +//#include "opencv2/LineStructure.hpp" + +#include "precomp.hpp" + +#include #include + struct OctaveLine{ unsigned int octaveCount;//the octave which this line is detected unsigned int lineIDInOctave;//the line ID in that octave image @@ -65,16 +74,15 @@ public: NearestNeighbor=0, //the nearest neighbor is taken as matching NNDR=1//nearest/next ratio }; + /*This function is used to detect lines from multi-scale images.*/ - int OctaveKeyLines(cv::Mat & image, ScaleLines &keyLines); - int GetLineDescriptor(cv::Mat & image, - ScaleLines &keyLines); - int GetLineDescriptor(cv::Mat & image, - ScaleLines &keyLines, bool lsd); + int OctaveKeyLines(cv::Mat & image, ScaleLines &keyLines); + int GetLineDescriptor(cv::Mat & image, ScaleLines &keyLines); + int GetLineDescriptor(std::vector &scale_images, ScaleLines &keyLines); void findNearestParallelLines(ScaleLines & keyLines); - void GetLineBinaryDescriptor(std::vector & oct_binaryDescMat, ScaleLines & keyLines); + void GetLineBinaryDescriptor(std::vector & oct_binaryDescMat, ScaleLines &keyLines); int MatchLineByDescriptor(ScaleLines &keyLinesLeft, ScaleLines &keyLinesRight, std::vector &matchLeft, std::vector &matchRight, int criteria=NNDR); @@ -120,7 +128,7 @@ private: *from the EDLineDetector class without extra computation cost. Another reason is that, if we use *a single EDLineDetector to detect lines in different octave of images, then we need to allocate and release *memory for gradient images (dxImg, dyImg, gImg) repeatedly for their varying size*/ - std::vector edLineVec_; + std::vector edLineVec_; }; diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hh b/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp similarity index 99% rename from modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hh rename to modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp index 8ee19fdc6..af29cadf6 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hh +++ b/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp @@ -41,6 +41,7 @@ the use of this software, even if advised of the possibility of such damage. #define LINESTRUCTURE_HH_ #include + // A 2D line (normal equation parameters). struct SingleLine { diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/line_detector.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/line_detector.hpp new file mode 100644 index 000000000..454ca79cd --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/line_detector.hpp @@ -0,0 +1,46 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/line_descriptor.hpp" diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/tracking.hpp~ b/modules/line_descriptor/include/opencv2/line_descriptor/tracking.hpp~ new file mode 100644 index 000000000..eb098e27b --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/tracking.hpp~ @@ -0,0 +1,46 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library +#endif + +#include "opencv2/tracking.hpp" diff --git a/modules/line_descriptor/include/opencv2/line_detector.hpp b/modules/line_descriptor/include/opencv2/line_detector.hpp new file mode 100644 index 000000000..b0c32040f --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_detector.hpp @@ -0,0 +1,52 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +#ifndef __OPENCV_TRACKING_HPP__ +#define __OPENCV_TRACKING_HPP__ + +#include "opencv2/line_descriptor/line_descriptor.hpp" + +namespace cv +{ +CV_EXPORTS bool initModule_line_descriptor(void); +} + +#endif //__OPENCV_TRACKING_HPP__ diff --git a/modules/line_descriptor/include/opencv2/tracking.hpp~ b/modules/line_descriptor/include/opencv2/tracking.hpp~ new file mode 100644 index 000000000..55fb05d40 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/tracking.hpp~ @@ -0,0 +1,52 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +#ifndef __OPENCV_TRACKING_HPP__ +#define __OPENCV_TRACKING_HPP__ + +#include "opencv2/tracking/tracker.hpp" + +namespace cv +{ +CV_EXPORTS bool initModule_tracking(void); +} + +#endif //__OPENCV_TRACKING_HPP__ diff --git a/modules/line_descriptor/src/EDLineDetector.cpp b/modules/line_descriptor/src/EDLineDetector.cpp index 67a2a7347..19c0bbec2 100644 --- a/modules/line_descriptor/src/EDLineDetector.cpp +++ b/modules/line_descriptor/src/EDLineDetector.cpp @@ -38,7 +38,10 @@ the use of this software, even if advised of the possibility of such damage. */ -#include "../include/EDLineDetector.hh" +//#include "/include/opencv2/line_descriptor/EDLineDetector.hpp" +//#include "opencv2/EDLineDetector.hpp" + +#include "precomp.hpp" #define Horizontal 255//if |dx|<|dy|; #define Vertical 0//if |dy|<=|dx|; diff --git a/modules/line_descriptor/src/LineDescriptor.cpp b/modules/line_descriptor/src/LineDescriptor.cpp index 66e58f6e7..beb50cd64 100644 --- a/modules/line_descriptor/src/LineDescriptor.cpp +++ b/modules/line_descriptor/src/LineDescriptor.cpp @@ -37,7 +37,10 @@ or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. */ -#include "../include/LineDescriptor.hh" +//#include "/include/opencv2/line_descriptor/LineDescriptor.hpp" +//#include "opencv2/LineDescriptor.hpp" + +#include "precomp.hpp" #define SalienceScale 0.9//0.9 @@ -86,10 +89,10 @@ LineDescriptor::LineDescriptor(int n_octave) numOfOctave_ = n_octave;//5 /* create as many LineVecs as the number of octaves */ - edLineVec_.resize(numOfOctave_); - for(unsigned int i=0; iEDline(blur,true))!= true){ - return -1; - } + if((edLineVec_[octaveCount]->EDline(blur,true))!= true){ + return -1; + } /* update number of total extracted lines */ - numOfFinalLine += edLineVec_[octaveCount]->lines_.numOfLines; + numOfFinalLine += edLineVec_[octaveCount]->lines_.numOfLines; /* resize image for next level of pyramid */ - cv::resize(blur, image, cv::Size(), (1.f/factor), (1.f/factor)); + cv::resize(blur, image, cv::Size(), (1.f/factor), (1.f/factor)); /* update sigma values */ - preSigma2 = curSigma2; - curSigma2 = curSigma2*2; + preSigma2 = curSigma2; + curSigma2 = curSigma2*2; } /* end of loop over number of octaves */ @@ -266,7 +269,7 @@ int LineDescriptor::OctaveKeyLines(cv::Mat & image, ScaleLines &keyLines) unsigned int lineIDInScaleLineVec = 0; /* floats to compute lines' lengths */ - float dx, dy; + float dx, dy; /* loop over lines extracted from scale 0 (original image) */ for(unsigned int lineCurId=0;lineCurIdlines_.numOfLines;lineCurId++){ @@ -275,253 +278,253 @@ int LineDescriptor::OctaveKeyLines(cv::Mat & image, ScaleLines &keyLines) /* set octave from which it was extracted */ octaveLines[numOfFinalLine].octaveCount = 0; /* set ID within its octave */ - octaveLines[numOfFinalLine].lineIDInOctave = lineCurId; + octaveLines[numOfFinalLine].lineIDInOctave = lineCurId; /* set a unique ID among all lines extracted in all octaves */ - octaveLines[numOfFinalLine].lineIDInScaleLineVec = lineIDInScaleLineVec; + octaveLines[numOfFinalLine].lineIDInScaleLineVec = lineIDInScaleLineVec; /* compute absolute value of difference between X coordinates of line's extreme points */ dx = fabs(edLineVec_[0]->lineEndpoints_[lineCurId][0]-edLineVec_[0]->lineEndpoints_[lineCurId][2]); /* compute absolute value of difference between Y coordinates of line's extreme points */ dy = fabs(edLineVec_[0]->lineEndpoints_[lineCurId][1]-edLineVec_[0]->lineEndpoints_[lineCurId][3]); /* compute line's length */ - octaveLines[numOfFinalLine].lineLength = sqrt(dx*dx+dy*dy); + octaveLines[numOfFinalLine].lineLength = sqrt(dx*dx+dy*dy); /* update counters */ - numOfFinalLine++; - lineIDInScaleLineVec++; - } + numOfFinalLine++; + lineIDInScaleLineVec++; + } /* create and fill an array to store scale factors */ - float *scale = new float[numOfOctave_]; - scale[0] = 1; - for(unsigned int octaveCount = 1; octaveCount1){ + /*more than one octave image, organize lines in scale space. + *lines corresponding to the same line in octave images should have the same index in the ScaleLineVec */ + if(numOfOctave_>1){ /* some other variables' declarations */ - float twoPI = 2*M_PI; - unsigned int closeLineID; - float endPointDis,minEndPointDis,minLocalDis,maxLocalDis; - float lp0,lp1, lp2, lp3, np0,np1, np2, np3; + float twoPI = 2*M_PI; + unsigned int closeLineID; + float endPointDis,minEndPointDis,minLocalDis,maxLocalDis; + float lp0,lp1, lp2, lp3, np0,np1, np2, np3; /* loop over list of octaves */ - for(unsigned int octaveCount = 1; octaveCountlines_.numOfLines;lineCurId++){ + for(unsigned int lineCurId=0;lineCurIdlines_.numOfLines;lineCurId++){ /* get (scaled) known term from equation of current line */ - rho1 = scale[octaveCount] * fabs(edLineVec_[octaveCount]->lineEquations_[lineCurId][2]); + rho1 = scale[octaveCount] * fabs(edLineVec_[octaveCount]->lineEquations_[lineCurId][2]); - /*nearThreshold depends on the distance of the image coordinate origin to current line. - *so nearThreshold = rho1 * nearThresholdRatio, where nearThresholdRatio = 1-cos(10*pi/180) = 0.0152*/ - tempValue = rho1 * 0.0152; - float nearThreshold = (tempValue>6)?(tempValue):6; - nearThreshold = (nearThreshold<12)?nearThreshold:12; + /*nearThreshold depends on the distance of the image coordinate origin to current line. + *so nearThreshold = rho1 * nearThresholdRatio, where nearThresholdRatio = 1-cos(10*pi/180) = 0.0152*/ + tempValue = rho1 * 0.0152; + float nearThreshold = (tempValue>6)?(tempValue):6; + nearThreshold = (nearThreshold<12)?nearThreshold:12; /* compute scaled lenght of current line */ - dx = fabs(edLineVec_[octaveCount]->lineEndpoints_[lineCurId][0]-edLineVec_[octaveCount]->lineEndpoints_[lineCurId][2]);//x1-x2 - dy = fabs(edLineVec_[octaveCount]->lineEndpoints_[lineCurId][1]-edLineVec_[octaveCount]->lineEndpoints_[lineCurId][3]);//y1-y2 - length = scale[octaveCount] * sqrt(dx*dx+dy*dy); + dx = fabs(edLineVec_[octaveCount]->lineEndpoints_[lineCurId][0]-edLineVec_[octaveCount]->lineEndpoints_[lineCurId][2]);//x1-x2 + dy = fabs(edLineVec_[octaveCount]->lineEndpoints_[lineCurId][1]-edLineVec_[octaveCount]->lineEndpoints_[lineCurId][3]);//y1-y2 + length = scale[octaveCount] * sqrt(dx*dx+dy*dy); - minEndPointDis = 12; + minEndPointDis = 12; /* loop over the octave representations of all lines */ - for(unsigned int lineNextId=0; lineNextIdlineDirection_[lineCurId] - - edLineVec_[octaveID]->lineDirection_[lineIDInOctave]); + direction = fabs(edLineVec_[octaveCount]->lineDirection_[lineCurId] - + edLineVec_[octaveID]->lineDirection_[lineIDInOctave]); /* the angle between two lines are larger than 10degrees (i.e. 10*pi/180=0.1745), they are not close to parallel */ if(direction>0.1745 && (twoPI - direction>0.1745)){ continue; - } - /*now check whether current line and next line are near to each other. - *If line1:a1*x+b1*y+c1=0 and line2:a2*x+b2*y+c2=0 are near in image, then - *rho1 = |a1*0+b1*0+c1|/sqrt(a1^2+b1^2) and rho2 = |a2*0+b2*0+c2|/sqrt(a2^2+b2^2) should close. - *In our case, rho1 = |c1| and rho2 = |c2|, because sqrt(a1^2+b1^2) = sqrt(a2^2+b2^2) = 1; - *note that, lines are in different octave images, so we define near = fabs(scale*rho1 - rho2) or - *where scale is the scale factor between to octave images*/ + } + /*now check whether current line and next line are near to each other. + *If line1:a1*x+b1*y+c1=0 and line2:a2*x+b2*y+c2=0 are near in image, then + *rho1 = |a1*0+b1*0+c1|/sqrt(a1^2+b1^2) and rho2 = |a2*0+b2*0+c2|/sqrt(a2^2+b2^2) should close. + *In our case, rho1 = |c1| and rho2 = |c2|, because sqrt(a1^2+b1^2) = sqrt(a2^2+b2^2) = 1; + *note that, lines are in different octave images, so we define near = fabs(scale*rho1 - rho2) or + *where scale is the scale factor between to octave images*/ /* get known term from equation to be compared */ - rho2 = scale[octaveID] * fabs(edLineVec_[octaveID]->lineEquations_[lineIDInOctave][2]); + rho2 = scale[octaveID] * fabs(edLineVec_[octaveID]->lineEquations_[lineIDInOctave][2]); /* compute difference between known ters */ - near = fabs(rho1 - rho2); + near = fabs(rho1 - rho2); /* two lines are not close in the image */ - if(near>nearThreshold){ + if(near>nearThreshold){ continue; - } + } - /*now check the end points distance between two lines, the scale of distance is in the original image size. - * find the minimal and maximal end points distance*/ + /*now check the end points distance between two lines, the scale of distance is in the original image size. + * find the minimal and maximal end points distance*/ /* get the extreme points of the two lines */ - lp0 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][0]; - lp1 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][1]; - lp2 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][2]; - lp3 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][3]; - np0 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][0]; - np1 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][1]; - np2 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][2]; - np3 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][3]; + lp0 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][0]; + lp1 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][1]; + lp2 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][2]; + lp3 = scale[octaveCount] *edLineVec_[octaveCount]->lineEndpoints_[lineCurId][3]; + np0 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][0]; + np1 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][1]; + np2 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][2]; + np3 = scale[octaveID] * edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][3]; /* get the distance between the two leftmost extremes of lines L1(0,1)<->L2(0,1) */ - dx = lp0 - np0; - dy = lp1 - np1; - endPointDis = sqrt(dx*dx + dy*dy); + dx = lp0 - np0; + dy = lp1 - np1; + endPointDis = sqrt(dx*dx + dy*dy); /* set momentaneously min and max distance between lines to the one between left extremes */ - minLocalDis = endPointDis; - maxLocalDis = endPointDis; + minLocalDis = endPointDis; + maxLocalDis = endPointDis; /* compute distance between right extremes L1(2,3)<->L2(2,3) */ - dx = lp2 - np2; - dy = lp3 - np3; - endPointDis = sqrt(dx*dx + dy*dy); + dx = lp2 - np2; + dy = lp3 - np3; + endPointDis = sqrt(dx*dx + dy*dy); /* update (if necessary) min and max distance between lines */ - minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; /* compute distance between left extreme of current line and right extreme of line to be compared L1(0,1)<->L2(2,3) */ - dx = lp0 - np2; - dy = lp1 - np3; - endPointDis = sqrt(dx*dx + dy*dy); + dx = lp0 - np2; + dy = lp1 - np3; + endPointDis = sqrt(dx*dx + dy*dy); /* update (if necessary) min and max distance between lines */ - minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; /* compute distance between right extreme of current line and left extreme of line to be compared L1(2,3)<->L2(0,1) */ - dx = lp2 - np0; - dy = lp3 - np1; - endPointDis = sqrt(dx*dx + dy*dy); + dx = lp2 - np0; + dy = lp3 - np1; + endPointDis = sqrt(dx*dx + dy*dy); /* update (if necessary) min and max distance between lines */ - minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; /* check whether conditions for considering line to be compared worth to be inserted in the same LineVec are satisfied */ if((maxLocalDis<0.8*(length+octaveLines[lineNextId].lineLength)) &&(minLocalDis1) + if(minEndPointDis<12){ + octaveLines[numOfFinalLine].lineIDInScaleLineVec = octaveLines[closeLineID].lineIDInScaleLineVec; + }else{ + octaveLines[numOfFinalLine].lineIDInScaleLineVec = lineIDInScaleLineVec; + lineIDInScaleLineVec++; + } + octaveLines[numOfFinalLine].octaveCount = octaveCount; + octaveLines[numOfFinalLine].lineIDInOctave = lineCurId; + octaveLines[numOfFinalLine].lineLength = length; + numOfFinalLine++; + } + }//end for(unsigned int octaveCount = 1; octaveCount1) - //////////////////////////////////// - //Reorganize the detected lines into keyLines - keyLines.clear(); - keyLines.resize(lineIDInScaleLineVec); + //////////////////////////////////// + //Reorganize the detected lines into keyLines + keyLines.clear(); + keyLines.resize(lineIDInScaleLineVec); unsigned int tempID; - float s1,e1,s2,e2; - bool shouldChange; - OctaveSingleLine singleLine; - for(unsigned int lineID = 0;lineID < numOfFinalLine; lineID++){ - lineIDInOctave = octaveLines[lineID].lineIDInOctave; - octaveID = octaveLines[lineID].octaveCount; - direction = edLineVec_[octaveID]->lineDirection_[lineIDInOctave]; - singleLine.octaveCount = octaveID; - singleLine.direction = direction; - singleLine.lineLength = octaveLines[lineID].lineLength; - singleLine.salience = edLineVec_[octaveID]->lineSalience_[lineIDInOctave]; - singleLine.numOfPixels = edLineVec_[octaveID]->lines_.sId[lineIDInOctave+1]- - edLineVec_[octaveID]->lines_.sId[lineIDInOctave]; - //decide the start point and end point - shouldChange = false; - s1 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][0];//sx - s2 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][1];//sy - e1 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][2];//ex - e2 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][3];//ey - dx = e1 - s1;//ex-sx - dy = e2 - s2;//ey-sy - if(direction>=-0.75*M_PI&&direction<-0.25*M_PI){ - if(dy>0){shouldChange = true;} - } - if(direction>=-0.25*M_PI&&direction<0.25*M_PI){ - if(dx<0){shouldChange = true;} - } - if(direction>=0.25*M_PI&&direction<0.75*M_PI){ - if(dy<0){shouldChange = true;} - } - if((direction>=0.75*M_PI&&direction=-M_PI&&direction<-0.75*M_PI)){ - if(dx>0){shouldChange = true;} - } - tempValue = scale[octaveID]; - if(shouldChange){ - singleLine.sPointInOctaveX = e1; - singleLine.sPointInOctaveY = e2; - singleLine.ePointInOctaveX = s1; - singleLine.ePointInOctaveY = s2; - singleLine.startPointX = tempValue * e1; - singleLine.startPointY = tempValue * e2; - singleLine.endPointX = tempValue * s1; - singleLine.endPointY = tempValue * s2; - }else{ - singleLine.sPointInOctaveX = s1; - singleLine.sPointInOctaveY = s2; - singleLine.ePointInOctaveX = e1; - singleLine.ePointInOctaveY = e2; - singleLine.startPointX = tempValue * s1; - singleLine.startPointY = tempValue * s2; - singleLine.endPointX = tempValue * e1; - singleLine.endPointY = tempValue * e2; - } - tempID = octaveLines[lineID].lineIDInScaleLineVec; - keyLines[tempID].push_back(singleLine); - } + float s1,e1,s2,e2; + bool shouldChange; + OctaveSingleLine singleLine; + for(unsigned int lineID = 0;lineID < numOfFinalLine; lineID++){ + lineIDInOctave = octaveLines[lineID].lineIDInOctave; + octaveID = octaveLines[lineID].octaveCount; + direction = edLineVec_[octaveID]->lineDirection_[lineIDInOctave]; + singleLine.octaveCount = octaveID; + singleLine.direction = direction; + singleLine.lineLength = octaveLines[lineID].lineLength; + singleLine.salience = edLineVec_[octaveID]->lineSalience_[lineIDInOctave]; + singleLine.numOfPixels = edLineVec_[octaveID]->lines_.sId[lineIDInOctave+1]- + edLineVec_[octaveID]->lines_.sId[lineIDInOctave]; + //decide the start point and end point + shouldChange = false; + s1 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][0];//sx + s2 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][1];//sy + e1 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][2];//ex + e2 = edLineVec_[octaveID]->lineEndpoints_[lineIDInOctave][3];//ey + dx = e1 - s1;//ex-sx + dy = e2 - s2;//ey-sy + if(direction>=-0.75*M_PI&&direction<-0.25*M_PI){ + if(dy>0){shouldChange = true;} + } + if(direction>=-0.25*M_PI&&direction<0.25*M_PI){ + if(dx<0){shouldChange = true;} + } + if(direction>=0.25*M_PI&&direction<0.75*M_PI){ + if(dy<0){shouldChange = true;} + } + if((direction>=0.75*M_PI&&direction=-M_PI&&direction<-0.75*M_PI)){ + if(dx>0){shouldChange = true;} + } + tempValue = scale[octaveID]; + if(shouldChange){ + singleLine.sPointInOctaveX = e1; + singleLine.sPointInOctaveY = e2; + singleLine.ePointInOctaveX = s1; + singleLine.ePointInOctaveY = s2; + singleLine.startPointX = tempValue * e1; + singleLine.startPointY = tempValue * e2; + singleLine.endPointX = tempValue * s1; + singleLine.endPointY = tempValue * s2; + }else{ + singleLine.sPointInOctaveX = s1; + singleLine.sPointInOctaveY = s2; + singleLine.ePointInOctaveX = e1; + singleLine.ePointInOctaveY = e2; + singleLine.startPointX = tempValue * s1; + singleLine.startPointY = tempValue * s2; + singleLine.endPointX = tempValue * e1; + singleLine.endPointY = tempValue * e2; + } + tempID = octaveLines[lineID].lineIDInScaleLineVec; + keyLines[tempID].push_back(singleLine); + } - //////////////////////////////////// + //////////////////////////////////// delete [] scale; return 1; @@ -1122,130 +1125,68 @@ void LineDescriptor::findNearestParallelLines(ScaleLines & keyLines) } -int LineDescriptor::GetLineDescriptor(cv::Mat & image, ScaleLines & keyLines, bool lsd) +int LineDescriptor::GetLineDescriptor(std::vector &scale_images, ScaleLines &keyLines) { - /*check whether image depth is different from 0 */ + /*check whether image depth is different from 0 if(image.depth() != 0) { - std::cout << "Warning, depth image!= 0" << std::endl; + std::cout << "Warning, depth image != 0" << std::endl; CV_Assert(false); - } - - /* make a clone of input image */ - cv::Mat original = image.clone(); - - /* get clock's TIC */ - double t = (double)cv::getTickCount(); + }*/ - /* compute LineVecs extraction and in case of failure, return an error code */ - if((OctaveKeyLines(image,keyLines))!=true){ - cout << "OctaveKeyLines failed" << endl; - return -1; - } - - /* get time lapse */ - t = ((double)cv::getTickCount() - t)/cv::getTickFrequency(); - std::cout << "time line extraction: " << t<< "s" < ls = cv::createLineSegmentDetector(cv::LSD_REFINE_STD); + cv::Ptr ls = cv::createLineSegmentDetector(cv::LSD_REFINE_STD); /* prepare a vectore to host extracted segments */ - std::vector lines_std; - - ScaleLines scaleLs; + std::vector lines_std; /* use detector to extract segments */ - ls->detect(original, lines_std); - - /* make a copy of input image */ - cv::Mat drawnLines(original); - - /* draw extracted segments on the copy of image */ - ls->drawSegments(drawnLines, lines_std); + ls->detect(currentScaledImage, lines_std); - /* show extracted segments on image */ - cv::imshow("Standard refinement", drawnLines); - - /* get a matrix representation of segments */ - cv::Mat _lines; - _lines = ((cv::InputArray)lines_std).getMat(); - - // Draw segments - for(int i = 0; i < _lines.size().width; ++i) + /* store information for every extracted segment */ + for (size_t lineCounter = 0; lineCounter(i); + /* get current segment and store its extremes */ + const cv::Vec4i v = lines_std[lineCounter]; cv::Point b(v[0], v[1]); cv::Point e(v[2], v[3]); - /* create an object to store line information */ - OctaveSingleLine osl; - osl.startPointX = b.x; - osl.startPointY = b.y; - osl.endPointX = e.x; - osl.endPointY = e.y; - osl.sPointInOctaveX = b.x; - osl.sPointInOctaveY = b.y; - osl.ePointInOctaveX = e.x; - osl.ePointInOctaveY = e.y; - osl.direction = 0; - osl.salience = 0; - osl.lineLength = 0; - osl.numOfPixels = std::sqrt((b.x-e.x)*(b.x-e.x) + (b.y-e.y)*(b.y-e.y)); - osl.octaveCount = 0; - - /* store information about line */ - LinesVec lineScaleLs; - lineScaleLs.push_back(osl); - scaleLs.push_back(lineScaleLs); + /* create an object to store line information */ + OctaveSingleLine osl; + osl.startPointX = b.x; + osl.startPointY = b.y; + osl.endPointX = e.x; + osl.endPointY = e.y; + osl.sPointInOctaveX = b.x; + osl.sPointInOctaveY = b.y; + osl.ePointInOctaveX = e.x; + osl.ePointInOctaveY = e.y; + osl.direction = 0; + osl.salience = 0; + osl.lineLength = 0; + osl.numOfPixels = std::sqrt((b.x-e.x)*(b.x-e.x) + (b.y-e.y)*(b.y-e.y)); + osl.octaveCount = scaleCounter; + + /* create a new LineVec and add new line to it */ + LinesVec lineScaleLs; + lineScaleLs.push_back(osl); + + /* add current LineVec to other ones in the output list */ + keyLines.push_back(lineScaleLs); } - - keyLines = scaleLs; } - else - std::cout<<"GetLineDescriptor EDLINE"< + +#endif From d5eeb91dbc44042ae9af2b018c50ad2f7532fda5 Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Fri, 30 May 2014 09:57:44 +0200 Subject: [PATCH 04/67] New line extraction method and OpenCV standards accomplished --- modules/line_descriptor/CMakeLists.txt | 3 +- modules/line_descriptor/CMakeLists.txt~ | 3 +- .../include/opencv2/line_descriptor.hpp | 54 ++ .../opencv2/line_descriptor/descriptor.hpp | 135 +++++ .../line_descriptor/line_detector.hpp~ | 59 ++ .../include/opencv2/line_detector.hpp~ | 52 ++ .../line_descriptor/src/BinaryDescriptor.cpp | 571 ++++++++++++++++++ .../src/line_descriptor_init.cpp | 14 +- modules/line_descriptor/src/precomp.hpp | 12 +- 9 files changed, 889 insertions(+), 14 deletions(-) create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor.hpp create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/line_detector.hpp~ create mode 100644 modules/line_descriptor/include/opencv2/line_detector.hpp~ create mode 100644 modules/line_descriptor/src/BinaryDescriptor.cpp diff --git a/modules/line_descriptor/CMakeLists.txt b/modules/line_descriptor/CMakeLists.txt index 8ba70ca25..d27371476 100644 --- a/modules/line_descriptor/CMakeLists.txt +++ b/modules/line_descriptor/CMakeLists.txt @@ -1,5 +1,4 @@ set(the_description "Line descriptor") ocv_define_module(line_descriptor opencv_imgproc opencv_optim) -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${BIAS_CXX_FLAGS} -std=c++0x") -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${BIAS_C_FLAGS}") + diff --git a/modules/line_descriptor/CMakeLists.txt~ b/modules/line_descriptor/CMakeLists.txt~ index d27371476..8ba70ca25 100644 --- a/modules/line_descriptor/CMakeLists.txt~ +++ b/modules/line_descriptor/CMakeLists.txt~ @@ -1,4 +1,5 @@ set(the_description "Line descriptor") ocv_define_module(line_descriptor opencv_imgproc opencv_optim) - +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${BIAS_CXX_FLAGS} -std=c++0x") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${BIAS_C_FLAGS}") diff --git a/modules/line_descriptor/include/opencv2/line_descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor.hpp new file mode 100644 index 000000000..7fe76673f --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor.hpp @@ -0,0 +1,54 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +#ifndef __OPENCV_LINE_DESCRIPTOR_HPP__ +#define __OPENCV_LINE_DESCRIPTOR_HPP__ + +#include "opencv2/line_descriptor/descriptor.hpp" +#include "opencv2/core.hpp" + +namespace cv +{ +CV_EXPORTS bool initModule_line_descriptor(void); + +} + +#endif diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp new file mode 100644 index 000000000..96d3478dd --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -0,0 +1,135 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +//#ifdef __OPENCV_BUILD +//#error this is a compatibility header which should not be used inside the OpenCV library +//#endif + +#ifndef __OPENCV_DESCRIPTOR_HPP__ +#define __OPENCV_DESCRIPTOR_HPP__ + +#include "LineStructure.hpp" +#include "opencv2/core.hpp" + +namespace cv +{ + + class CV_EXPORTS_W LineDescriptor : public virtual Algorithm + { + public: + virtual ~LineDescriptor(); + void getLineBinaryDescriptor(std::vector & oct_binaryDescMat); + + protected: + virtual void getLineBinaryDescriptorImpl(std::vector & oct_binaryDescMat, + ScaleLines &keyLines); + + }; + + class CV_EXPORTS_W BinaryDescriptor : public LineDescriptor + { + + public: + struct CV_EXPORTS_W_SIMPLE Params{ + CV_WRAP Params(); + + /* global threshold for line descriptor distance, default is 0.35 */ + CV_PROP_RW float LowestThreshold; + + /* the NNDR threshold for line descriptor distance, default is 0.6 */ + CV_PROP_RW float NNDRThreshold; + + /* the size of Gaussian kernel: ksize X ksize, default value is 5 */ + CV_PROP_RW int ksize_; + + /* the number of image octaves (default = 5) */ + CV_PROP_RW int numOfOctave_; + + /* the number of bands used to compute line descriptor (default: 9) */ + CV_PROP_RW int numOfBand_; + + /* the width of band; (default: 7) */ + CV_PROP_RW int widthOfBand_; + + /* image's reduction ratio in construction of Gaussian pyramids */ + CV_PROP_RW int reductionRatio; + + void read( const FileNode& fn ); + void write( FileStorage& fs ) const; + + }; + + CV_WRAP BinaryDescriptor(const BinaryDescriptor::Params ¶meters = + BinaryDescriptor::Params()); + + virtual void read( const cv::FileNode& fn ); + virtual void write( cv::FileStorage& fs ) const; + void getLineBinaryDescriptor(cv::Mat & oct_binaryDescMat, ScaleLines &keyLines); + + + protected: + virtual void getLineBinaryDescriptorImpl(std::vector & oct_binaryDescMat, ScaleLines &keyLines); + AlgorithmInfo* info() const; + + Params params; + + + private: + unsigned char binaryTest(float* f1, float* f2); + int ComputeLBD_(ScaleLines &keyLines); + + /* the local gaussian coefficient apply to the orthogonal line direction within each band */ + std::vector gaussCoefL_; + + /* the global gaussian coefficient apply to each Row within line support region */ + std::vector gaussCoefG_; + + /* vector to store horizontal and vertical derivatives of octave images */ + std::vector dxImg_vector, dyImg_vector; + + /* vectot to store sizes of octave images */ + std::vector images_sizes; + + }; + +} + +#endif diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/line_detector.hpp~ b/modules/line_descriptor/include/opencv2/line_descriptor/line_detector.hpp~ new file mode 100644 index 000000000..97e5b7816 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/line_detector.hpp~ @@ -0,0 +1,59 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +//#ifdef __OPENCV_BUILD +//#error this is a compatibility header which should not be used inside the OpenCV library +//#endif + +#ifndef __OPENCV_LINE_DETECTOR_HPP__ +#define __OPENCV_LINE_DETECTOR_HPP__ + +#include +#include "opencv2/core/utility.hpp" +#include "opencv2/core/private.hpp" +#include "opencv2/imgproc/imgproc.hpp" +#include +#include + +#include "LineDescriptor.hpp" +#include "LineStructure.hpp" + +#endif diff --git a/modules/line_descriptor/include/opencv2/line_detector.hpp~ b/modules/line_descriptor/include/opencv2/line_detector.hpp~ new file mode 100644 index 000000000..a55eda8c8 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_detector.hpp~ @@ -0,0 +1,52 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +#ifndef __OPENCV_TRACKING_HPP__ +#define __OPENCV_TRACKING_HPP__ + +#include "opencv2/line_descriptor/line_detector.hpp" + +namespace cv +{ +CV_EXPORTS bool initModule_line_descriptor(void); +} + +#endif //__OPENCV_TRACKING_HPP__ diff --git a/modules/line_descriptor/src/BinaryDescriptor.cpp b/modules/line_descriptor/src/BinaryDescriptor.cpp new file mode 100644 index 000000000..5d0c3d646 --- /dev/null +++ b/modules/line_descriptor/src/BinaryDescriptor.cpp @@ -0,0 +1,571 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2013, OpenCV Foundation, all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's in binary form must reproduce the above copyright notice, + // this list of conditions and the following disclaimer in the documentation + // and/or other materials provided with the distribution. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express or implied warranties, including, but not limited to, the implied + // warranties of merchantability and fitness for a particular purpose are disclaimed. + // In no event shall the Intel Corporation or contributors be liable for any direct, + // indirect, incidental, special, exemplary, or consequential damages + // (including, but not limited to, procurement of substitute goods or services; + // loss of use, data, or profits; or business interruption) however caused + // and on any theory of liability, whether in contract, strict liability, + // or tort (including negligence or otherwise) arising in any way out of + // the use of this software, even if advised of the possibility of such damage. + // + //M*/ + +#include "precomp.hpp" +//#include "opencv2/line_descriptor/descriptor.hpp" + +using namespace cv; + +/* return default parameters */ +BinaryDescriptor::Params::Params() +{ + LowestThreshold = 0.35; + NNDRThreshold = 0.6; + ksize_ = 5; + numOfOctave_ = 5; + numOfBand_ = 9; + widthOfBand_ = 7; + reductionRatio = 2; + +} + +/* read parameters from a FileNode object and store them (struct function) */ +void BinaryDescriptor::Params::read(const cv::FileNode& fn ) +{ + LowestThreshold = fn["LowestThreshold"]; + NNDRThreshold = fn["NNDRThreshold"]; + ksize_ = fn["ksize_"]; + numOfOctave_ = fn["numOfOctave_"]; + numOfBand_ = fn["numOfBand_"]; + widthOfBand_ = fn["widthOfBand_"]; + reductionRatio = fn["reductionRatio"]; +} + +/* store parameters to a FileStorage object (struct function) */ +void BinaryDescriptor::Params::write(cv::FileStorage& fs) const +{ + fs << "LowestThreshold" << LowestThreshold; + fs << "NNDRThreshold" << NNDRThreshold; + fs << "ksize_" << ksize_; + fs << "numOfOctave_" << numOfOctave_; + fs << "numOfBand_" << numOfBand_; + fs << "widthOfBand_" << widthOfBand_; + fs << "reductionRatio" << reductionRatio; +} + +/* construct a BinaryDescrptor object and compute external private parameters */ +BinaryDescriptor::BinaryDescriptor(const BinaryDescriptor::Params ¶meters) : params(parameters) +{ + + /* prepare a vector to host local weights F_l*/ + gaussCoefL_.resize(params.widthOfBand_*3); + + /* compute center of central band (every computation involves 2-3 bands) */ + double u = (params.widthOfBand_*3-1)/2; + + /* compute exponential part of F_l */ + double sigma = (params.widthOfBand_*2+1)/2;// (widthOfBand_*2+1)/2; + double invsigma2 = -1/(2*sigma*sigma); + + /* compute all local weights */ + double dis; + for(int i=0; i matVec(params.numOfOctave_); + + /* reinitialize structures for hosting images' derivatives and sizes + (they may have been used in the past) */ + dxImg_vector.clear(); + dyImg_vector.clear(); + images_sizes.clear(); + + dxImg_vector.resize(params.numOfOctave_); + dyImg_vector.resize(params.numOfOctave_); + images_sizes.resize(params.numOfOctave_); + + /* insert input image into pyramid */ + cv::Mat currentMat = oct_binaryDescMat.clone(); + matVec.push_back(currentMat); + images_sizes.push_back(currentMat.size()); + + /* compute and store derivatives of input image */ + cv:Mat currentDx, currentDy; + cv::Sobel( currentMat, currentDx, CV_16SC1, 1, 0, 3); + cv::Sobel( currentMat, currentDy, CV_16SC1, 0, 1, 3); + + dxImg_vector.push_back(currentDx); + dyImg_vector.push_back(currentDy); + + /* fill Gaussian pyramid */ + for(int i = 1; i & oct_binaryDescMat, ScaleLines &keyLines) +{ + for(size_t scaleCounter = 0; scaleCounter ls = cv::createLineSegmentDetector(cv::LSD_REFINE_STD); + + /* prepare a vectore to host extracted segments */ + std::vector lines_std; + + /* use detector to extract segments */ + ls->detect(currentScaledImage, lines_std); + + /* store information for every extracted segment */ + for (size_t lineCounter = 0; lineCounter=0 && i<=7) + return pow(2,i); + + else + { + CV_Assert(false); + return -1; + } +} + +/* conversion of an LBD descriptor to the decimal equivalent of its binary representation */ +unsigned char BinaryDescriptor::binaryTest(float* f1, float* f2) +{ + uchar result = 0; + for(int i = 0; i<8; i++) + { + if(f1[i]>f2[i]) + result+=get2Pow(i); + } + + return result; + +} + +/* compute LBD descriptors */ +int BinaryDescriptor::ComputeLBD_(ScaleLines &keyLines) +{ + //the default length of the band is the line length. + short numOfFinalLine = keyLines.size(); + float *dL = new float[2];//line direction cos(dir), sin(dir) + float *dO = new float[2];//the clockwise orthogonal vector of line direction. + short heightOfLSP = params.widthOfBand_*params.numOfBand_;//the height of line support region; + short descriptorSize = params.numOfBand_ * 8;//each band, we compute the m( pgdL, ngdL, pgdO, ngdO) and std( pgdL, ngdL, pgdO, ngdO); + float pgdLRowSum;//the summation of {g_dL |g_dL>0 } for each row of the region; + float ngdLRowSum;//the summation of {g_dL |g_dL<0 } for each row of the region; + float pgdL2RowSum;//the summation of {g_dL^2 |g_dL>0 } for each row of the region; + float ngdL2RowSum;//the summation of {g_dL^2 |g_dL<0 } for each row of the region; + float pgdORowSum;//the summation of {g_dO |g_dO>0 } for each row of the region; + float ngdORowSum;//the summation of {g_dO |g_dO<0 } for each row of the region; + float pgdO2RowSum;//the summation of {g_dO^2 |g_dO>0 } for each row of the region; + float ngdO2RowSum;//the summation of {g_dO^2 |g_dO<0 } for each row of the region; + + float *pgdLBandSum = new float[params.numOfBand_];//the summation of {g_dL |g_dL>0 } for each band of the region; + float *ngdLBandSum = new float[params.numOfBand_];//the summation of {g_dL |g_dL<0 } for each band of the region; + float *pgdL2BandSum = new float[params.numOfBand_];//the summation of {g_dL^2 |g_dL>0 } for each band of the region; + float *ngdL2BandSum = new float[params.numOfBand_];//the summation of {g_dL^2 |g_dL<0 } for each band of the region; + float *pgdOBandSum = new float[params.numOfBand_];//the summation of {g_dO |g_dO>0 } for each band of the region; + float *ngdOBandSum = new float[params.numOfBand_];//the summation of {g_dO |g_dO<0 } for each band of the region; + float *pgdO2BandSum = new float[params.numOfBand_];//the summation of {g_dO^2 |g_dO>0 } for each band of the region; + float *ngdO2BandSum = new float[params.numOfBand_];//the summation of {g_dO^2 |g_dO<0 } for each band of the region; + + short numOfBitsBand = params.numOfBand_*sizeof(float); + short lengthOfLSP; //the length of line support region, varies with lines + short halfHeight = (heightOfLSP-1)/2; + short halfWidth; + short bandID; + float coefInGaussion; + float lineMiddlePointX, lineMiddlePointY; + float sCorX, sCorY,sCorX0, sCorY0; + short tempCor, xCor, yCor;//pixel coordinates in image plane + short dx, dy; + float gDL;//store the gradient projection of pixels in support region along dL vector + float gDO;//store the gradient projection of pixels in support region along dO vector + short imageWidth, imageHeight, realWidth; + short *pdxImg, *pdyImg; + float *desVec; + + short sameLineSize; + short octaveCount; + OctaveSingleLine *pSingleLine; + /* loop over list of LineVec */ + for(short lineIDInScaleVec = 0; lineIDInScaleVecoctaveCount; + + /* retrieve associated dxImg and dyImg + pdxImg = edLineVec_[octaveCount]->dxImg_.ptr(); + pdyImg = edLineVec_[octaveCount]->dyImg_.ptr(); */ + pdxImg = dxImg_vector[octaveCount].ptr(); + pdyImg = dyImg_vector[octaveCount].ptr(); + + /* get image size to work on from real one + realWidth = edLineVec_[octaveCount]->imageWidth; + imageWidth = realWidth -1; + imageHeight = edLineVec_[octaveCount]->imageHeight-1; */ + realWidth = images_sizes[octaveCount].width; + imageWidth = realWidth - 1; + imageHeight = images_sizes[octaveCount].height - 1; + + + /* initialize memory areas */ + memset(pgdLBandSum, 0, numOfBitsBand); + memset(ngdLBandSum, 0, numOfBitsBand); + memset(pgdL2BandSum, 0, numOfBitsBand); + memset(ngdL2BandSum, 0, numOfBitsBand); + memset(pgdOBandSum, 0, numOfBitsBand); + memset(ngdOBandSum, 0, numOfBitsBand); + memset(pgdO2BandSum, 0, numOfBitsBand); + memset(ngdO2BandSum, 0, numOfBitsBand); + + /* get length of line and its half */ + lengthOfLSP = keyLines[lineIDInScaleVec][lineIDInSameLine].numOfPixels; + halfWidth = (lengthOfLSP-1)/2; + + /* get middlepoint of line */ + lineMiddlePointX = 0.5 * (pSingleLine->sPointInOctaveX + pSingleLine->ePointInOctaveX); + lineMiddlePointY = 0.5 * (pSingleLine->sPointInOctaveY + pSingleLine->ePointInOctaveY); + + /*1.rotate the local coordinate system to the line direction (direction is the angle + between positive line direction and positive X axis) + *2.compute the gradient projection of pixels in line support region*/ + + /* get the vector representing original image reference system after rotation to aligh with + line's direction */ + dL[0] = cos(pSingleLine->direction); + dL[1] = sin(pSingleLine->direction); + + /* set the clockwise orthogonal vector of line direction */ + dO[0] = -dL[1]; + dO[1] = dL[0]; + + /* get rotated reference frame */ + sCorX0= -dL[0]*halfWidth + dL[1]*halfHeight + lineMiddlePointX;//hID =0; wID = 0; + sCorY0= -dL[1]*halfWidth - dL[0]*halfHeight + lineMiddlePointY; + + + /* BIAS::Matrix gDLMat(heightOfLSP,lengthOfLSP) */ + for(short hID = 0; hID imageWidth)?imageWidth:tempCor; + tempCor = round(sCorY); + yCor = (tempCor<0)?0:(tempCor>imageHeight)?imageHeight:tempCor; + + /* To achieve rotation invariance, each simple gradient is rotated aligned with + * the line direction and clockwise orthogonal direction.*/ + dx = pdxImg[yCor*realWidth+xCor]; + dy = pdyImg[yCor*realWidth+xCor]; + gDL = dx * dL[0] + dy * dL[1]; + gDO = dx * dO[0] + dy * dO[1]; + if(gDL>0){ + pgdLRowSum += gDL; + }else{ + ngdLRowSum -= gDL; + } + if(gDO>0){ + pgdORowSum += gDO; + }else{ + ngdORowSum -= gDO; + } + sCorX +=dL[0]; + sCorY +=dL[1]; + /* gDLMat[hID][wID] = gDL; */ + } + sCorX0 -=dL[1]; + sCorY0 +=dL[0]; + coefInGaussion = gaussCoefG_[hID]; + pgdLRowSum = coefInGaussion * pgdLRowSum; + ngdLRowSum = coefInGaussion * ngdLRowSum; + pgdL2RowSum = pgdLRowSum * pgdLRowSum; + ngdL2RowSum = ngdLRowSum * ngdLRowSum; + pgdORowSum = coefInGaussion * pgdORowSum; + ngdORowSum = coefInGaussion * ngdORowSum; + pgdO2RowSum = pgdORowSum * pgdORowSum; + ngdO2RowSum = ngdORowSum * ngdORowSum; + + /* compute {g_dL |g_dL>0 }, {g_dL |g_dL<0 }, + {g_dO |g_dO>0 }, {g_dO |g_dO<0 } of each band in the line support region + first, current row belong to current band */ + bandID = hID/params.widthOfBand_; + coefInGaussion = gaussCoefL_[hID%params.widthOfBand_+params.widthOfBand_]; + pgdLBandSum[bandID] += coefInGaussion * pgdLRowSum; + ngdLBandSum[bandID] += coefInGaussion * ngdLRowSum; + pgdL2BandSum[bandID] += coefInGaussion * coefInGaussion * pgdL2RowSum; + ngdL2BandSum[bandID] += coefInGaussion * coefInGaussion * ngdL2RowSum; + pgdOBandSum[bandID] += coefInGaussion * pgdORowSum; + ngdOBandSum[bandID] += coefInGaussion * ngdORowSum; + pgdO2BandSum[bandID] += coefInGaussion * coefInGaussion * pgdO2RowSum; + ngdO2BandSum[bandID] += coefInGaussion * coefInGaussion * ngdO2RowSum; + + /* In order to reduce boundary effect along the line gradient direction, + * a row's gradient will contribute not only to its current band, but also + * to its nearest upper and down band with gaussCoefL_.*/ + bandID--; + if(bandID>=0){/* the band above the current band */ + coefInGaussion = gaussCoefL_[hID%params.widthOfBand_ + 2*params.widthOfBand_]; + pgdLBandSum[bandID] += coefInGaussion * pgdLRowSum; + ngdLBandSum[bandID] += coefInGaussion * ngdLRowSum; + pgdL2BandSum[bandID] += coefInGaussion * coefInGaussion * pgdL2RowSum; + ngdL2BandSum[bandID] += coefInGaussion * coefInGaussion * ngdL2RowSum; + pgdOBandSum[bandID] += coefInGaussion * pgdORowSum; + ngdOBandSum[bandID] += coefInGaussion * ngdORowSum; + pgdO2BandSum[bandID] += coefInGaussion * coefInGaussion * pgdO2RowSum; + ngdO2BandSum[bandID] += coefInGaussion * coefInGaussion * ngdO2RowSum; + } + bandID = bandID+2; + if(bandIDdescriptor.resize(descriptorSize); + desVec = pSingleLine->descriptor.data(); + + short desID; + + /*Note that the first and last bands only have (lengthOfLSP * widthOfBand_ * 2.0) pixels + * which are counted. */ + float invN2 = 1.0/(params.widthOfBand_ * 2.0); + float invN3 = 1.0/(params.widthOfBand_ * 3.0); + float invN, temp; + for(bandID = 0; bandIDdescriptor.data(); + + int base = 0; + for(short i=0; idescriptor.data(); + base = 0; + for(short i=0; idescriptor.data(); + for(short i=0; i0.4){ + desVec[i]=0.4; + } + } + + //re-normalize desVec; + temp = 0; + for(short i=0; i #include "opencv2/core/utility.hpp" #include "opencv2/core/private.hpp" -#include +#include +#include +#include + +#include "opencv2/line_descriptor.hpp" + + #endif From 0863960c758aa7db7d6dfd6f1fe43b00e3a5fdd3 Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Wed, 4 Jun 2014 16:16:59 +0200 Subject: [PATCH 05/67] Reinsertion of OctaveKeyLines --- .../opencv2/line_descriptor/LineStructure.hpp | 8 + .../opencv2/line_descriptor/descriptor.hpp | 16 +- .../line_descriptor/src/BinaryDescriptor.cpp | 448 +++++++++++++++--- 3 files changed, 409 insertions(+), 63 deletions(-) diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp index af29cadf6..22155c6fc 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp @@ -42,6 +42,14 @@ the use of this software, even if advised of the possibility of such damage. #include +/* struct to represent lines extracted from an octave */ +struct OctaveLine{ + unsigned int octaveCount;//the octave which this line is detected + unsigned int lineIDInOctave;//the line ID in that octave image + unsigned int lineIDInScaleLineVec;//the line ID in Scale line vector + float lineLength; //the length of line in original image scale +}; + // A 2D line (normal equation parameters). struct SingleLine { diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index 96d3478dd..3df0b18d8 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -49,6 +49,7 @@ #include "LineStructure.hpp" #include "opencv2/core.hpp" + namespace cv { @@ -56,11 +57,10 @@ namespace cv { public: virtual ~LineDescriptor(); - void getLineBinaryDescriptor(std::vector & oct_binaryDescMat); + void getLineBinaryDescriptors(cv::Mat &oct_binaryDescMat); protected: - virtual void getLineBinaryDescriptorImpl(std::vector & oct_binaryDescMat, - ScaleLines &keyLines); + virtual void getLineBinaryDescriptorsImpl(cv::Mat &oct_binaryDescMat); }; @@ -102,11 +102,11 @@ namespace cv virtual void read( const cv::FileNode& fn ); virtual void write( cv::FileStorage& fs ) const; - void getLineBinaryDescriptor(cv::Mat & oct_binaryDescMat, ScaleLines &keyLines); + void getLineBinaryDescriptors(cv::Mat &oct_binaryDescMat); protected: - virtual void getLineBinaryDescriptorImpl(std::vector & oct_binaryDescMat, ScaleLines &keyLines); + virtual void getLineBinaryDescriptorsImpl(cv::Mat &oct_binaryDescMat); AlgorithmInfo* info() const; Params params; @@ -115,6 +115,9 @@ namespace cv private: unsigned char binaryTest(float* f1, float* f2); int ComputeLBD_(ScaleLines &keyLines); + int OctaveKeyLines(std::vector & octaveImages, ScaleLines &keyLines); + void getLineParameters(cv::Vec4i &line_extremes, cv::Vec3i &lineParams); + float getLineDirection(cv::Vec3i &lineParams); /* the local gaussian coefficient apply to the orthogonal line direction within each band */ std::vector gaussCoefL_; @@ -128,6 +131,9 @@ namespace cv /* vectot to store sizes of octave images */ std::vector images_sizes; + /* structure to store lines extracted from each octave image */ + std::vector > extractedLines; + }; } diff --git a/modules/line_descriptor/src/BinaryDescriptor.cpp b/modules/line_descriptor/src/BinaryDescriptor.cpp index 5d0c3d646..399434f32 100644 --- a/modules/line_descriptor/src/BinaryDescriptor.cpp +++ b/modules/line_descriptor/src/BinaryDescriptor.cpp @@ -38,9 +38,10 @@ // the use of this software, even if advised of the possibility of such damage. // //M*/ +#define _USE_MATH_DEFINES #include "precomp.hpp" -//#include "opencv2/line_descriptor/descriptor.hpp" +#include using namespace cv; @@ -53,7 +54,7 @@ BinaryDescriptor::Params::Params() numOfOctave_ = 5; numOfBand_ = 9; widthOfBand_ = 7; - reductionRatio = 2; + reductionRatio = sqrt(2); // or 2? } @@ -131,8 +132,73 @@ void BinaryDescriptor::write( cv::FileStorage& fs ) const params.write(fs); } +/* get coefficients of line passing by two points in line_extremes */ +void BinaryDescriptor::getLineParameters(cv::Vec4i &line_extremes, cv::Vec3i &lineParams) +{ + int x1 = line_extremes[0]; + int x2 = line_extremes[2]; + int y1 = line_extremes[1]; + int y2 = line_extremes[3]; + + /* line is parallel to Y axis */ + if(x1 == x2) + { + lineParams[0] = 1; + lineParams[1] = 0; + lineParams[2] = -x1 /* or -x2 */; + } + + /* line is parallel to X axis */ + else if(y1 == y2) + { + lineParams[0] = 0; + lineParams[1] = 1; + lineParams[2] = -y1 /* or -y2 */; + } + + /* line is not parallel to any axis */ + else + { + lineParams[0] = y1-y2; + lineParams[1] = x2-x1; + lineParams[2] = -y1*(x2-x1) + x1*(y2-y1); + } +} + /* compute the angle between line and X axis */ +float BinaryDescriptor::getLineDirection(cv::Vec3i &lineParams) +{ + /* line is parallel to X axis */ + if(lineParams[0] == 0) + return 0; + + /* line is parallel to Y axis */ + else if(lineParams[1] == 0) + return M_PI/2; + + /* line is not parallel to any axis */ + else + { + /* compute angular coefficient */ + float m = -lineParams[0]/lineParams[1]; + + if(m>0) + return atan(m); + + else + return M_PI - atan(m); + } +} + /* extract lines from an image and compute their descriptors */ -void BinaryDescriptor::getLineBinaryDescriptor(cv::Mat & oct_binaryDescMat, ScaleLines &keyLines) +void BinaryDescriptor::getLineBinaryDescriptors(cv::Mat &oct_binaryDescMat) +{ + /* start function that actually implements descriptors' computation */ + getLineBinaryDescriptorsImpl(oct_binaryDescMat); + +} + +/* compute descriptors */ +void BinaryDescriptor::getLineBinaryDescriptorsImpl(cv::Mat &oct_binaryDescMat) { /* prepare a matrix to store Gaussian pyramid of input matrix */ std::vector matVec(params.numOfOctave_); @@ -176,62 +242,11 @@ void BinaryDescriptor::getLineBinaryDescriptor(cv::Mat & oct_binaryDescMat, Scal dyImg_vector.push_back(currentDy); } - /* compute descriptors */ - getLineBinaryDescriptorImpl(matVec, keyLines); - -} - -/* compute descriptors */ -void BinaryDescriptor::getLineBinaryDescriptorImpl(std::vector & oct_binaryDescMat, ScaleLines &keyLines) -{ - for(size_t scaleCounter = 0; scaleCounter ls = cv::createLineSegmentDetector(cv::LSD_REFINE_STD); - - /* prepare a vectore to host extracted segments */ - std::vector lines_std; - - /* use detector to extract segments */ - ls->detect(currentScaledImage, lines_std); - - /* store information for every extracted segment */ - for (size_t lineCounter = 0; lineCounter & octaveImages, ScaleLines &keyLines) +{ + + /* final number of extracted lines */ + unsigned int numOfFinalLine = 0; + + for(size_t scaleCounter = 0; scaleCounter ls = cv::createLineSegmentDetector(cv::LSD_REFINE_STD); + + /* prepare a vectore to host extracted segments */ + std::vector lines_std; + + /* use detector to extract segments */ + ls->detect(currentScaledImage, lines_std); + + /* store lines extracted from current image */ + extractedLines.push_back(lines_std); + + /* update lines counter */ + numOfFinalLine += lines_std.size(); + + } + + /* prepare a vector to store octave information associated to extracted lines */ + std::vector octaveLines(numOfFinalLine); + + /* set lines' counter to 0 for reuse */ + numOfFinalLine = 0; + + /* counter to give a unique ID to lines in LineVecs */ + unsigned int lineIDInScaleLineVec = 0; + + /* floats to compute lines' lengths */ + float dx, dy; + + /* loop over lines extracted from scale 0 (original image) */ + for(unsigned int lineCurId=0; lineCurId1) + { + /* some other variables' declarations */ + float twoPI = 2*M_PI; + unsigned int closeLineID; + float endPointDis,minEndPointDis,minLocalDis,maxLocalDis; + float lp0,lp1, lp2, lp3, np0,np1, np2, np3; + + /* loop over list of octaves */ + for(unsigned int octaveCount = 1; octaveCount6)?(tempValue):6; + nearThreshold = (nearThreshold<12)?nearThreshold:12; + + /* compute scaled lenght of current line */ + dx = fabs((extractedLines[octaveCount][lineCurId])[0]-(extractedLines[octaveCount][lineCurId][2]));//x1-x2 + dy = fabs((extractedLines[octaveCount][lineCurId])[1]-(extractedLines[octaveCount][lineCurId][3]));//y1-y2 + length = scale[octaveCount] * sqrt(dx*dx+dy*dy); + + minEndPointDis = 12; + /* loop over the octave representations of all lines */ + for(unsigned int lineNextId=0; lineNextId0.1745 && (twoPI - direction>0.1745)) + continue; + + /*now check whether current line and next line are near to each other. + Get known term from equation to be compared */ + rho2 = scale[octaveID] * fabs(line_equation_to_compare[2]); + + /* compute difference between known terms */ + near = fabs(rho1 - rho2); + + /* two lines are not close in the image */ + if(near>nearThreshold) + continue; + + /* get the extreme points of the two lines */ + lp0 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[0]; + lp1 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[1]; + lp2 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[2]; + lp3 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[3]; + np0 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[0]; + np1 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[1]; + np2 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[2]; + np3 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[3]; + + /* get the distance between the two leftmost extremes of lines + L1(0,1)<->L2(0,1) */ + dx = lp0 - np0; + dy = lp1 - np1; + endPointDis = sqrt(dx*dx + dy*dy); + + /* set momentaneously min and max distance between lines to + the one between left extremes */ + minLocalDis = endPointDis; + maxLocalDis = endPointDis; + + /* compute distance between right extremes + L1(2,3)<->L2(2,3) */ + dx = lp2 - np2; + dy = lp3 - np3; + endPointDis = sqrt(dx*dx + dy*dy); + + /* update (if necessary) min and max distance between lines */ + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + + /* compute distance between left extreme of current line and + right extreme of line to be compared + L1(0,1)<->L2(2,3) */ + dx = lp0 - np2; + dy = lp1 - np3; + endPointDis = sqrt(dx*dx + dy*dy); + + /* update (if necessary) min and max distance between lines */ + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + + /* compute distance between right extreme of current line and + left extreme of line to be compared + L1(2,3)<->L2(0,1) */ + dx = lp2 - np0; + dy = lp3 - np1; + endPointDis = sqrt(dx*dx + dy*dy); + + /* update (if necessary) min and max distance between lines */ + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + + /* check whether conditions for considering line to be compared + worth to be inserted in the same LineVec are satisfied */ + if((maxLocalDis<0.8*(length+octaveLines[lineNextId].lineLength)) + &&(minLocalDislineDirection_[lineIDInOctave]; + singleLine.octaveCount = octaveID; + singleLine.direction = direction; + singleLine.lineLength = octaveLines[lineID].lineLength; + //singleLine.salience = singleLine.lineLength/max(images_sizes[octaveID].width, + // images_sizes[octaveID].height); + //singleLine.salience = edLineVec_[octaveID]->lineSalience_[lineIDInOctave]; + //singleLine.numOfPixels = edLineVec_[octaveID]->lines_.sId[lineIDInOctave+1]- + //edLineVec_[octaveID]->lines_.sId[lineIDInOctave]; + + //decide the start point and end point + shouldChange = false; + s1 = (extractedLines[octaveID][lineIDInOctave])[0];//sx + s2 = (extractedLines[octaveID][lineIDInOctave])[1];//sy + e1 = (extractedLines[octaveID][lineIDInOctave])[2];//ex + e2 = (extractedLines[octaveID][lineIDInOctave])[3];//ey + dx = e1 - s1;//ex-sx + dy = e2 - s2;//ey-sy + + if(direction>=-0.75*M_PI&&direction<-0.25*M_PI) + { + if(dy>0) + shouldChange = true; + } + + if(direction>=-0.25*M_PI&&direction<0.25*M_PI) + if(dx<0){shouldChange = true;} + + if(direction>=0.25*M_PI&&direction<0.75*M_PI) + if(dy<0){shouldChange = true;} + + if((direction>=0.75*M_PI&&direction=-M_PI&&direction<-0.75*M_PI)){ + if(dx>0) + shouldChange = true; + } + + tempValue = scale[octaveID]; + + if(shouldChange){ + singleLine.sPointInOctaveX = e1; + singleLine.sPointInOctaveY = e2; + singleLine.ePointInOctaveX = s1; + singleLine.ePointInOctaveY = s2; + singleLine.startPointX = tempValue * e1; + singleLine.startPointY = tempValue * e2; + singleLine.endPointX = tempValue * s1; + singleLine.endPointY = tempValue * s2; + } + + else{ + singleLine.sPointInOctaveX = s1; + singleLine.sPointInOctaveY = s2; + singleLine.ePointInOctaveX = e1; + singleLine.ePointInOctaveY = e2; + singleLine.startPointX = tempValue * s1; + singleLine.startPointY = tempValue * s2; + singleLine.endPointX = tempValue * e1; + singleLine.endPointY = tempValue * e2; + } + + tempID = octaveLines[lineID].lineIDInScaleLineVec; + keyLines[tempID].push_back(singleLine); + } + + delete [] scale; + + return 1; + +} + /* compute LBD descriptors */ int BinaryDescriptor::ComputeLBD_(ScaleLines &keyLines) { From fba71a8ecf0966fb17760e8c6ca12dc12e80ceae Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Sun, 8 Jun 2014 17:34:02 +0200 Subject: [PATCH 06/67] Added methods for derivation from FeatureDetector --- .../opencv2/line_descriptor/descriptor.hpp | 85 +++++-- .../line_descriptor/src/BinaryDescriptor.cpp | 211 ++++++++++++++---- 2 files changed, 233 insertions(+), 63 deletions(-) diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index 3df0b18d8..867a6318e 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -53,18 +53,32 @@ namespace cv { - class CV_EXPORTS_W LineDescriptor : public virtual Algorithm + class CV_EXPORTS_W KeyLine: public KeyPoint { public: - virtual ~LineDescriptor(); - void getLineBinaryDescriptors(cv::Mat &oct_binaryDescMat); + /* lines's extremes in original image */ + float startPointX; + float startPointY; + float endPointX; + float endPointY; + + /* line's extremes in image it was extracted from */ + float sPointInOctaveX; + float sPointInOctaveY; + float ePointInOctaveX; + float ePointInOctaveY; + + /* the length of line */ + float lineLength; + + /* number of pixels covered by the line */ + unsigned int numOfPixels; + - protected: - virtual void getLineBinaryDescriptorsImpl(cv::Mat &oct_binaryDescMat); }; - class CV_EXPORTS_W BinaryDescriptor : public LineDescriptor + class CV_EXPORTS_W BinaryDescriptor : public DescriptorExtractor { public: @@ -92,7 +106,10 @@ namespace cv /* image's reduction ratio in construction of Gaussian pyramids */ CV_PROP_RW int reductionRatio; + /* read parameters from a FileNode object and store them (struct function) */ void read( const FileNode& fn ); + + /* store parameters to a FileStorage object (struct function) */ void write( FileStorage& fs ) const; }; @@ -100,29 +117,63 @@ namespace cv CV_WRAP BinaryDescriptor(const BinaryDescriptor::Params ¶meters = BinaryDescriptor::Params()); + /* read parameters from a FileNode object and store them (class function ) */ virtual void read( const cv::FileNode& fn ); + + /* store parameters to a FileStorage object (class function) */ virtual void write( cv::FileStorage& fs ) const; - void getLineBinaryDescriptors(cv::Mat &oct_binaryDescMat); + /* requires line detection (only one image) */ + CV_WRAP void detect( const Mat& image, + CV_OUT std::vector& keypoints, + const Mat& mask=Mat() ); - protected: - virtual void getLineBinaryDescriptorsImpl(cv::Mat &oct_binaryDescMat); - AlgorithmInfo* info() const; + /* requires line detection (more than one image) */ + void detect( const std::vector& images, + std::vector >& keypoints, + const std::vector& masks=std::vector() ) const; - Params params; + /*return descriptor size */ + int descriptorSize() const = 0; + + /* return data type */ + int descriptorType() const = 0; + + /* return norm mode */ + int defaultNorm() const = 0; + /* check whether Gaussian pyramids were created */ + bool empty() const; + + + protected: + virtual void detectImpl( const Mat& image, + std::vector& keypoints, + const Mat& mask=Mat() ) const = 0; + + AlgorithmInfo* info() const; private: + /* conversion of an LBD descriptor to the decimal equivalent of its binary representation */ unsigned char binaryTest(float* f1, float* f2); + + /* compute LBD descriptors */ int ComputeLBD_(ScaleLines &keyLines); - int OctaveKeyLines(std::vector & octaveImages, ScaleLines &keyLines); + + /* gather lines in groups. + Each group contains the same line, detected in different octaves */ + int OctaveKeyLines(ScaleLines &keyLines); + + /* get coefficients of line passing by two points (in line_extremes) */ void getLineParameters(cv::Vec4i &line_extremes, cv::Vec3i &lineParams); + + /* compute the angle between line and X axis */ float getLineDirection(cv::Vec3i &lineParams); - /* the local gaussian coefficient apply to the orthogonal line direction within each band */ + /* the local gaussian coefficient applied to the orthogonal line direction within each band */ std::vector gaussCoefL_; - /* the global gaussian coefficient apply to each Row within line support region */ + /* the global gaussian coefficient applied to each Row within line support region */ std::vector gaussCoefG_; /* vector to store horizontal and vertical derivatives of octave images */ @@ -134,6 +185,12 @@ namespace cv /* structure to store lines extracted from each octave image */ std::vector > extractedLines; + /* descriptor parameters */ + Params params; + + /* vector to store the Gaussian pyramid od an input image */ + std::vector octaveImages; + }; } diff --git a/modules/line_descriptor/src/BinaryDescriptor.cpp b/modules/line_descriptor/src/BinaryDescriptor.cpp index 399434f32..9bd2918ce 100644 --- a/modules/line_descriptor/src/BinaryDescriptor.cpp +++ b/modules/line_descriptor/src/BinaryDescriptor.cpp @@ -132,7 +132,31 @@ void BinaryDescriptor::write( cv::FileStorage& fs ) const params.write(fs); } -/* get coefficients of line passing by two points in line_extremes */ +/* return norm mode */ +int BinaryDescriptor::defaultNorm() const +{ + return NORM_HAMMING; +} + +/* return data type */ +int BinaryDescriptor::descriptorType() const +{ + return CV_8U; +} + +/*return descriptor size */ +int BinaryDescriptor::descriptorSize() const +{ + return 1; +} + +/* check whether Gaussian pyramids were created */ +bool BinaryDescriptor::empty() const +{ + return true; +} + +/* get coefficients of line passing by two points in (line_extremes) */ void BinaryDescriptor::getLineParameters(cv::Vec4i &line_extremes, cv::Vec3i &lineParams) { int x1 = line_extremes[0]; @@ -185,73 +209,162 @@ float BinaryDescriptor::getLineDirection(cv::Vec3i &lineParams) return atan(m); else - return M_PI - atan(m); + return -atan(m); } } -/* extract lines from an image and compute their descriptors */ -void BinaryDescriptor::getLineBinaryDescriptors(cv::Mat &oct_binaryDescMat) +/* requires line detection (only one image) */ +void BinaryDescriptor::detect( const Mat& image, + CV_OUT std::vector& keypoints, + const Mat& mask) { - /* start function that actually implements descriptors' computation */ - getLineBinaryDescriptorsImpl(oct_binaryDescMat); + /* invoke KeyLines detection */ + detectImpl(image, keypoints, mask); } -/* compute descriptors */ -void BinaryDescriptor::getLineBinaryDescriptorsImpl(cv::Mat &oct_binaryDescMat) +/* requires line detection (more than one image) */ +void BinaryDescriptor::detect( const std::vector& images, + std::vector >& keypoints, + const std::vector& masks ) const { - /* prepare a matrix to store Gaussian pyramid of input matrix */ - std::vector matVec(params.numOfOctave_); + /* detect lines from each image */ + for(size_t counter = 0; counter& keypoints, + const Mat& mask) const +{ + /* reinitialize structures for hosting images, images' derivatives and sizes (they may have been used in the past) */ - dxImg_vector.clear(); - dyImg_vector.clear(); - images_sizes.clear(); - - dxImg_vector.resize(params.numOfOctave_); - dyImg_vector.resize(params.numOfOctave_); - images_sizes.resize(params.numOfOctave_); + BinaryDescriptor *bn = const_cast(this); + bn->dxImg_vector.clear(); + bn->dyImg_vector.clear(); + bn->images_sizes.clear(); + bn->octaveImages.clear(); /* insert input image into pyramid */ - cv::Mat currentMat = oct_binaryDescMat.clone(); - matVec.push_back(currentMat); - images_sizes.push_back(currentMat.size()); - - /* compute and store derivatives of input image */ - cv:Mat currentDx, currentDy; - cv::Sobel( currentMat, currentDx, CV_16SC1, 1, 0, 3); - cv::Sobel( currentMat, currentDy, CV_16SC1, 0, 1, 3); - - dxImg_vector.push_back(currentDx); - dyImg_vector.push_back(currentDy); + cv::Mat currentMat = image.clone(); + bn->octaveImages.push_back(currentMat); + bn->images_sizes.push_back(currentMat.size()); /* fill Gaussian pyramid */ - for(int i = 1; ioctaveImages.push_back(currentMat); + bn->images_sizes.push_back(currentMat.size()); + } - /* compute and store derivatives of new image */ - cv::Sobel( currentMat, currentDx, CV_16SC1, 1, 0, 3); - cv::Sobel( currentMat, currentDy, CV_16SC1, 0, 1, 3); + /* detect and arrange lines across octaves */ + ScaleLines sl; + bn->OctaveKeyLines(sl); - dxImg_vector.push_back(currentDx); - dyImg_vector.push_back(currentDy); + /* fill KeyLines vector */ + for(int i = 0; i<(int)sl.size(); i++) + { + for(size_t j = 0; j matVec(params.numOfOctave_); -} +// /* reinitialize structures for hosting images' derivatives and sizes +// (they may have been used in the past) */ +// dxImg_vector.clear(); +// dyImg_vector.clear(); +// images_sizes.clear(); + +// dxImg_vector.resize(params.numOfOctave_); +// dyImg_vector.resize(params.numOfOctave_); +// images_sizes.resize(params.numOfOctave_); + +// /* insert input image into pyramid */ +// cv::Mat currentMat = oct_binaryDescMat.clone(); +// matVec.push_back(currentMat); +// images_sizes.push_back(currentMat.size()); + +// /* compute and store derivatives of input image */ +// cv:Mat currentDx, currentDy; +// cv::Sobel( currentMat, currentDx, CV_16SC1, 1, 0, 3); +// cv::Sobel( currentMat, currentDy, CV_16SC1, 0, 1, 3); + +// dxImg_vector.push_back(currentDx); +// dyImg_vector.push_back(currentDy); + +// /* fill Gaussian pyramid */ +// for(int i = 1; i & octaveImages, ScaleLines &keyLines) +int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) { /* final number of extracted lines */ @@ -345,7 +458,7 @@ int BinaryDescriptor::OctaveKeyLines(std::vector & octaveImages, ScaleL /* create and fill an array to store scale factors */ float *scale = new float[params.numOfOctave_]; scale[0] = 1; - for(unsigned int octaveCount = 1; octaveCount & octaveImages, ScaleL float lp0,lp1, lp2, lp3, np0,np1, np2, np3; /* loop over list of octaves */ - for(unsigned int octaveCount = 1; octaveCount & octaveImages, ScaleL maxLocalDis = (endPointDis>maxLocalDis)?endPointDis:maxLocalDis; /* check whether conditions for considering line to be compared - worth to be inserted in the same LineVec are satisfied */ + wremoveInvalidPointsorth to be inserted in the same LineVec are satisfied */ if((maxLocalDis<0.8*(length+octaveLines[lineNextId].lineLength)) &&(minLocalDis Date: Sun, 8 Jun 2014 17:35:23 +0200 Subject: [PATCH 07/67] Errors on derivation corrected --- .../include/opencv2/line_descriptor/descriptor.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index 867a6318e..ca3532d46 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -78,7 +78,7 @@ namespace cv }; - class CV_EXPORTS_W BinaryDescriptor : public DescriptorExtractor + class CV_EXPORTS_W BinaryDescriptor : public FeatureDetector { public: @@ -134,13 +134,13 @@ namespace cv const std::vector& masks=std::vector() ) const; /*return descriptor size */ - int descriptorSize() const = 0; + int descriptorSize() const; /* return data type */ - int descriptorType() const = 0; + int descriptorType() const; /* return norm mode */ - int defaultNorm() const = 0; + int defaultNorm() const; /* check whether Gaussian pyramids were created */ bool empty() const; From a0237c317aced762120e4989b0587533eab36d7e Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Mon, 9 Jun 2014 20:05:41 +0200 Subject: [PATCH 08/67] computeImpl method designed, Gaussian pyramids in a separate function --- .../opencv2/line_descriptor/descriptor.hpp | 23 +- .../line_descriptor/src/BinaryDescriptor.cpp | 231 ++++++++++-------- modules/line_descriptor/src/precomp.hpp | 7 +- 3 files changed, 161 insertions(+), 100 deletions(-) diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index ca3532d46..3f82c212f 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -133,6 +133,14 @@ namespace cv std::vector >& keypoints, const std::vector& masks=std::vector() ) const; + CV_WRAP void compute( const Mat& image, + CV_OUT CV_IN_OUT std::vector& keypoints, + CV_OUT Mat& descriptors ) const; + + void compute( const std::vector& images, + std::vector >& keypoints, + std::vector& descriptors ) const; + /*return descriptor size */ int descriptorSize() const; @@ -145,12 +153,22 @@ namespace cv /* check whether Gaussian pyramids were created */ bool empty() const; + CV_WRAP_AS(detectAndCompute) virtual void operator()( InputArray image, + InputArray mask, + CV_OUT std::vector& keypoints, + OutputArray descriptors, + bool useProvidedKeypoints=false ) const = 0; + protected: virtual void detectImpl( const Mat& image, std::vector& keypoints, const Mat& mask=Mat() ) const = 0; + virtual void computeImpl( const Mat& image, + std::vector& keypoints, + Mat& descriptors ) const = 0; + AlgorithmInfo* info() const; private: @@ -158,7 +176,10 @@ namespace cv unsigned char binaryTest(float* f1, float* f2); /* compute LBD descriptors */ - int ComputeLBD_(ScaleLines &keyLines); + int computeLBD_(ScaleLines &keyLines); + + /* compute Gaussian pyramid of input image */ + void computeGaussianPyramid(const Mat& image); /* gather lines in groups. Each group contains the same line, detected in different octaves */ diff --git a/modules/line_descriptor/src/BinaryDescriptor.cpp b/modules/line_descriptor/src/BinaryDescriptor.cpp index 9bd2918ce..9fd01eeef 100644 --- a/modules/line_descriptor/src/BinaryDescriptor.cpp +++ b/modules/line_descriptor/src/BinaryDescriptor.cpp @@ -41,7 +41,6 @@ #define _USE_MATH_DEFINES #include "precomp.hpp" -#include using namespace cv; @@ -153,7 +152,33 @@ int BinaryDescriptor::descriptorSize() const /* check whether Gaussian pyramids were created */ bool BinaryDescriptor::empty() const { - return true; + return false; +} + +/* power function with error management */ +static inline int get2Pow(int i) { + if(i>=0 && i<=7) + return pow(2,i); + + else + { + CV_Assert(false); + return -1; + } +} + +/* conversion of an LBD descriptor to the decimal equivalent of its binary representation */ +unsigned char BinaryDescriptor::binaryTest(float* f1, float* f2) +{ + uchar result = 0; + for(int i = 0; i<8; i++) + { + if(f1[i]>f2[i]) + result+=get2Pow(i); + } + + return result; + } /* get coefficients of line passing by two points in (line_extremes) */ @@ -213,6 +238,30 @@ float BinaryDescriptor::getLineDirection(cv::Vec3i &lineParams) } } +/* compute Gaussian pyramid of input image */ +void BinaryDescriptor::computeGaussianPyramid(const Mat& image) +{ + /* clear class fields */ + images_sizes.clear(); + octaveImages.clear(); + + /* insert input image into pyramid */ + cv::Mat currentMat = image.clone(); + octaveImages.push_back(currentMat); + images_sizes.push_back(currentMat.size()); + + /* fill Gaussian pyramid */ + for(int pyrCounter = 1; pyrCounter& keypoints, @@ -243,24 +292,9 @@ void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keyp BinaryDescriptor *bn = const_cast(this); bn->dxImg_vector.clear(); bn->dyImg_vector.clear(); - bn->images_sizes.clear(); - bn->octaveImages.clear(); - /* insert input image into pyramid */ - cv::Mat currentMat = image.clone(); - bn->octaveImages.push_back(currentMat); - bn->images_sizes.push_back(currentMat.size()); - - /* fill Gaussian pyramid */ - for(int pyrCounter = 0; pyrCounteroctaveImages.push_back(currentMat); - bn->images_sizes.push_back(currentMat.size()); - } + /* compute Gaussian pyramid */ + bn->computeGaussianPyramid(image); /* detect and arrange lines across octaves */ ScaleLines sl; @@ -287,6 +321,7 @@ void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keyp kl.ePointInOctaveX = osl.ePointInOctaveX; kl.ePointInOctaveY = osl.ePointInOctaveY; kl.lineLength = osl.lineLength; + kl.numOfPixels = osl.numOfPixels; kl.angle = osl.direction; kl.class_id = i; @@ -294,7 +329,8 @@ void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keyp kl.size = (osl.endPointX - osl.startPointX)*(osl.endPointY - osl.startPointY); kl.response = osl.lineLength/max(images_sizes[osl.octaveCount].width, images_sizes[osl.octaveCount].height); - kl.pt = Point((osl.endPointX + osl.startPointX)/2, (osl.endPointY + osl.startPointY)/2); + kl.pt = Point((osl.endPointX + osl.startPointX)/2, + (osl.endPointY + osl.startPointY)/2); /* store KeyLine */ keypoints.push_back(kl); @@ -302,95 +338,98 @@ void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keyp } } -///* extract lines from an image and compute their descriptors */ -//inline void getLineBinaryDescriptors(cv::Mat &oct_binaryDescMat) -//{ -// /* start function that actually implements descriptors' computation */ -// getLineBinaryDescriptorsImpl(oct_binaryDescMat); - -//} - -///* compute descriptors */ -//inline void getLineBinaryDescriptorsImpl(cv::Mat &oct_binaryDescMat) -//{ -// /* prepare a matrix to store Gaussian pyramid of input matrix */ -// std::vector matVec(params.numOfOctave_); - -// /* reinitialize structures for hosting images' derivatives and sizes -// (they may have been used in the past) */ -// dxImg_vector.clear(); -// dyImg_vector.clear(); -// images_sizes.clear(); - -// dxImg_vector.resize(params.numOfOctave_); -// dyImg_vector.resize(params.numOfOctave_); -// images_sizes.resize(params.numOfOctave_); - -// /* insert input image into pyramid */ -// cv::Mat currentMat = oct_binaryDescMat.clone(); -// matVec.push_back(currentMat); -// images_sizes.push_back(currentMat.size()); - -// /* compute and store derivatives of input image */ -// cv:Mat currentDx, currentDy; -// cv::Sobel( currentMat, currentDx, CV_16SC1, 1, 0, 3); -// cv::Sobel( currentMat, currentDy, CV_16SC1, 0, 1, 3); - -// dxImg_vector.push_back(currentDx); -// dyImg_vector.push_back(currentDy); +void BinaryDescriptor::computeImpl( const Mat& image, + std::vector& keypoints, + Mat& descriptors ) const +{ + /* keypoints list can't be empty */ + if(keypoints.size() == 0) + { + std::cout << "Error: keypoint list is empty" << std::endl; + return; + } -// /* fill Gaussian pyramid */ -// for(int i = 1; i numLines) + numLines = keypoints[l].class_id; + } -// /* compute and store derivatives of new image */ -// cv::Sobel( currentMat, currentDx, CV_16SC1, 1, 0, 3); -// cv::Sobel( currentMat, currentDy, CV_16SC1, 0, 1, 3); + /* create a ScaleLines object */ + OctaveSingleLine fictiousOSL; + fictiousOSL.octaveCount = -1; + LinesVec lv(params.numOfOctave_, fictiousOSL); + ScaleLines sl(numLines, lv); -// dxImg_vector.push_back(currentDx); -// dyImg_vector.push_back(currentDy); -// } + /* create a map to record association between KeyLines and their position + in ScaleLines vector */ + std::map, int> correspondences; -// /* prepare a structure for hosting and organizing extracted lines */ -// ScaleLines keyLines; + /*fill ScaleLines object */ + for(size_t slCounter = 0; slCounter(kp); + OctaveSingleLine osl; + + osl.startPointX = (*kl).startPointX; + osl.startPointY = (*kl).startPointY; + osl.endPointX = (*kl).endPointX; + osl.endPointY = (*kl).endPointY; + osl.sPointInOctaveX = (*kl).sPointInOctaveX; + osl.sPointInOctaveY = (*kl).sPointInOctaveY; + osl.ePointInOctaveX = (*kl).ePointInOctaveX; + osl.ePointInOctaveY = (*kl).ePointInOctaveY; + osl.lineLength = (*kl).lineLength; + osl.numOfPixels = (*kl).numOfPixels; + + osl.direction = (*kl).angle; + osl.octaveCount = (*kl).octave; + + sl[(*kl).class_id][(*kl).octave] = osl; + + /* update map */ + int id = (*kl).class_id; + int oct = (*kl).octave; + correspondences.insert(std::pair, int>(std::pair(id, oct), slCounter)); + } -// /* extract and arrange lines */ -// OctaveKeyLines(matVec, keyLines); + /* delete useless OctaveSingleLines */ + for(size_t i = 0; i(this); + if(octaveImages.size() == 0 || cv::countNonZero(image != octaveImages[0]) != 0) + bn->computeGaussianPyramid(image); -//} + /* compute Sobel's derivatives */ + bn->dxImg_vector.clear(); + bn->dyImg_vector.clear(); -/* power function with error management */ -static inline int get2Pow(int i) { - if(i>=0 && i<=7) - return pow(2,i); + bn->dxImg_vector.resize(params.numOfOctave_); + bn->dyImg_vector.resize(params.numOfOctave_); - else + for(size_t sobelCnt = 0; sobelCntdxImg_vector[sobelCnt], CV_16SC1, 1, 0, 3); + cv::Sobel( octaveImages[sobelCnt], bn->dyImg_vector[sobelCnt], CV_16SC1, 0, 1, 3); } -} -/* conversion of an LBD descriptor to the decimal equivalent of its binary representation */ -unsigned char BinaryDescriptor::binaryTest(float* f1, float* f2) -{ - uchar result = 0; - for(int i = 0; i<8; i++) - { - if(f1[i]>f2[i]) - result+=get2Pow(i); - } + /* compute LBD descriptors */ + bn->computeLBD_(sl); +} - return result; -} /* gather lines in groups. Each group contains the same line, detected in different octaves */ int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) @@ -710,7 +749,7 @@ int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) } /* compute LBD descriptors */ -int BinaryDescriptor::ComputeLBD_(ScaleLines &keyLines) +int BinaryDescriptor::computeLBD_(ScaleLines &keyLines) { //the default length of the band is the line length. short numOfFinalLine = keyLines.size(); diff --git a/modules/line_descriptor/src/precomp.hpp b/modules/line_descriptor/src/precomp.hpp index caf9b6000..2a140a60b 100644 --- a/modules/line_descriptor/src/precomp.hpp +++ b/modules/line_descriptor/src/precomp.hpp @@ -43,16 +43,17 @@ #define __OPENCV_PRECOMP_H__ #include - #include "opencv2/core/utility.hpp" #include "opencv2/core/private.hpp" - #include #include #include #include "opencv2/line_descriptor.hpp" - +#include +#include +#include +#include #endif From 8f9bcb77f6de56af4eebf06f1582cf455c600107 Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Thu, 12 Jun 2014 15:07:45 +0200 Subject: [PATCH 09/67] Derivation from Feature2D completed. Warnings corrected. --- .../opencv2/line_descriptor/descriptor.hpp | 27 ++- .../samples/lines_extraction.cpp | 1 + .../line_descriptor/src/BinaryDescriptor.cpp | 195 +++++++++++++++--- modules/line_descriptor/src/precomp.hpp | 2 + 4 files changed, 186 insertions(+), 39 deletions(-) create mode 100644 modules/line_descriptor/samples/lines_extraction.cpp diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index 3f82c212f..6887b9cdb 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -74,11 +74,9 @@ namespace cv /* number of pixels covered by the line */ unsigned int numOfPixels; - - }; - class CV_EXPORTS_W BinaryDescriptor : public FeatureDetector + class CV_EXPORTS_W BinaryDescriptor : public Feature2D { public: @@ -114,9 +112,14 @@ namespace cv }; + /* constructor */ CV_WRAP BinaryDescriptor(const BinaryDescriptor::Params ¶meters = BinaryDescriptor::Params()); + /* constructors with smart pointers */ + CV_EXPORTS Ptr createBinaryDescriptor(); + CV_EXPORTS Ptr createBinaryDescriptor(Params parameters); + /* read parameters from a FileNode object and store them (class function ) */ virtual void read( const cv::FileNode& fn ); @@ -133,10 +136,12 @@ namespace cv std::vector >& keypoints, const std::vector& masks=std::vector() ) const; + /* requires descriptors computation (only one image) */ CV_WRAP void compute( const Mat& image, CV_OUT CV_IN_OUT std::vector& keypoints, CV_OUT Mat& descriptors ) const; + /* requires descriptors computation (more than one image) */ void compute( const std::vector& images, std::vector >& keypoints, std::vector& descriptors ) const; @@ -155,28 +160,28 @@ namespace cv CV_WRAP_AS(detectAndCompute) virtual void operator()( InputArray image, InputArray mask, - CV_OUT std::vector& keypoints, - OutputArray descriptors, - bool useProvidedKeypoints=false ) const = 0; + CV_OUT std::vector& keypoints, + OutputArray descriptors, + bool useProvidedKeypoints=false ) const; protected: virtual void detectImpl( const Mat& image, std::vector& keypoints, - const Mat& mask=Mat() ) const = 0; + const Mat& mask=Mat() ) const; virtual void computeImpl( const Mat& image, std::vector& keypoints, - Mat& descriptors ) const = 0; + Mat& descriptors ) const; AlgorithmInfo* info() const; private: - /* conversion of an LBD descriptor to the decimal equivalent of its binary representation */ - unsigned char binaryTest(float* f1, float* f2); + /* conversion of an LBD descriptor to its binary representation */ + unsigned char binaryConversion(float* f1, float* f2); /* compute LBD descriptors */ - int computeLBD_(ScaleLines &keyLines); + int computeLBD(ScaleLines &keyLines); /* compute Gaussian pyramid of input image */ void computeGaussianPyramid(const Mat& image); diff --git a/modules/line_descriptor/samples/lines_extraction.cpp b/modules/line_descriptor/samples/lines_extraction.cpp new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/modules/line_descriptor/samples/lines_extraction.cpp @@ -0,0 +1 @@ + diff --git a/modules/line_descriptor/src/BinaryDescriptor.cpp b/modules/line_descriptor/src/BinaryDescriptor.cpp index 9fd01eeef..993aa7a89 100644 --- a/modules/line_descriptor/src/BinaryDescriptor.cpp +++ b/modules/line_descriptor/src/BinaryDescriptor.cpp @@ -38,12 +38,20 @@ // the use of this software, even if advised of the possibility of such damage. // //M*/ + #define _USE_MATH_DEFINES #include "precomp.hpp" using namespace cv; +/* combinations of internal indeces for binary descriptor extractor */ +static const int combinations [32][2] = {{0,1},{0,2},{0,3},{0,4},{0,5},{0,6},{1,2},{1,3}, + {1,4},{1,5},{1,6},{2,3},{2,4},{2,5},{2,6},{2,7}, + {2,8},{3,4},{3,5},{3,6},{3,7},{3,8},{4,5},{4,6}, + {4,7},{4,8},{5,6},{5,7},{5,8},{6,7},{6,8},{7,8}}; + + /* return default parameters */ BinaryDescriptor::Params::Params() { @@ -81,6 +89,16 @@ void BinaryDescriptor::Params::write(cv::FileStorage& fs) const fs << "reductionRatio" << reductionRatio; } +Ptr BinaryDescriptor::createBinaryDescriptor() +{ + return Ptr(new BinaryDescriptor()); +} + +Ptr BinaryDescriptor::createBinaryDescriptor(Params parameters) +{ + return Ptr(new BinaryDescriptor(parameters)); +} + /* construct a BinaryDescrptor object and compute external private parameters */ BinaryDescriptor::BinaryDescriptor(const BinaryDescriptor::Params ¶meters) : params(parameters) { @@ -119,6 +137,36 @@ BinaryDescriptor::BinaryDescriptor(const BinaryDescriptor::Params ¶meters) : } } +/* definition of operator () inherited from Feature2D class */ +void BinaryDescriptor::operator()( InputArray image, + InputArray mask, + CV_OUT std::vector& keypoints, + OutputArray descriptors, + bool useProvidedKeypoints) const +{ + + /* create some matrix objects */ + cv::Mat imageMat, maskMat, descrMat; + + /* store reference to input matrices */ + imageMat = image.getMat(); + maskMat = mask.getMat(); + + /* initialize output matrix */ + descriptors.create(Size(32, keypoints.size()), CV_8UC1); + + /* store reference to output matrix */ + descrMat = descriptors.getMat(); + + /* require KeyLines detection if demanded */ + if(!useProvidedKeypoints) + detectImpl(imageMat, keypoints, maskMat); + + /* compute descriptors */ + computeImpl(imageMat, keypoints, descrMat); +} + + /* read parameters from a FileNode object and store them (class function ) */ void BinaryDescriptor::read( const cv::FileNode& fn ) { @@ -146,13 +194,13 @@ int BinaryDescriptor::descriptorType() const /*return descriptor size */ int BinaryDescriptor::descriptorSize() const { - return 1; + return 32*8; } /* check whether Gaussian pyramids were created */ bool BinaryDescriptor::empty() const { - return false; + return octaveImages.empty(); } /* power function with error management */ @@ -167,8 +215,8 @@ static inline int get2Pow(int i) { } } -/* conversion of an LBD descriptor to the decimal equivalent of its binary representation */ -unsigned char BinaryDescriptor::binaryTest(float* f1, float* f2) +/* conversion of an LBD descriptor to its binary representation */ +unsigned char BinaryDescriptor::binaryConversion(float* f1, float* f2) { uchar result = 0; for(int i = 0; i<8; i++) @@ -182,7 +230,7 @@ unsigned char BinaryDescriptor::binaryTest(float* f1, float* f2) } /* get coefficients of line passing by two points in (line_extremes) */ -void BinaryDescriptor::getLineParameters(cv::Vec4i &line_extremes, cv::Vec3i &lineParams) +void BinaryDescriptor::getLineParameters(cv::Vec4i& line_extremes, cv::Vec3i& lineParams) { int x1 = line_extremes[0]; int x2 = line_extremes[2]; @@ -287,11 +335,17 @@ void BinaryDescriptor::detect( const std::vector& images, void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keypoints, const Mat& mask) const { - /* reinitialize structures for hosting images, images' derivatives and sizes - (they may have been used in the past) */ + + /*check whether image depth is different from 0 */ + if(image.depth() != 0) + { + std::cout << "Warning, depth image!= 0" << std::endl; + CV_Assert(false); + } + + /* create a pointer to self */ BinaryDescriptor *bn = const_cast(this); - bn->dxImg_vector.clear(); - bn->dyImg_vector.clear(); + /* compute Gaussian pyramid */ bn->computeGaussianPyramid(image); @@ -336,12 +390,49 @@ void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keyp keypoints.push_back(kl); } } + + /* delete undesired KeyLines, according to input mask */ + for(size_t keyCounter = 0; keyCounter(&keypoints[keyCounter]); + if(mask.at(kl->startPointX, kl->startPointY) == 0 && + mask.at(kl->endPointX, kl->endPointY) == 0) + keypoints.erase(keypoints.begin() + keyCounter); + } +} + + +/* requires descriptors computation (only one image) */ +void BinaryDescriptor::compute( const Mat& image, + CV_OUT CV_IN_OUT std::vector& keypoints, + CV_OUT Mat& descriptors ) const +{ + computeImpl(image, keypoints, descriptors); +} + +/* requires descriptors computation (more than one image) */ +void BinaryDescriptor::compute( const std::vector& images, + std::vector >& keypoints, + std::vector& descriptors ) const +{ + for(size_t i = 0; i& keypoints, Mat& descriptors ) const { + + /*check whether image depth is different from 0 */ + if(image.depth() != 0) + { + std::cout << "Warning, depth image!= 0" << std::endl; + CV_Assert(false); + } + + /* keypoints list can't be empty */ if(keypoints.size() == 0) { @@ -349,7 +440,7 @@ void BinaryDescriptor::computeImpl( const Mat& image, return; } - /* get number of lines */ + /* get maximum class_id */ int numLines = 0; for(size_t l = 0; l, int> correspondences; - /*fill ScaleLines object */ + /* fill ScaleLines object */ for(size_t slCounter = 0; slCounter(kp); OctaveSingleLine osl; + /* insert data in newly created line */ osl.startPointX = (*kl).startPointX; osl.startPointY = (*kl).startPointY; osl.endPointX = (*kl).endPointX; @@ -388,12 +489,14 @@ void BinaryDescriptor::computeImpl( const Mat& image, osl.direction = (*kl).angle; osl.octaveCount = (*kl).octave; + /* store new line */ sl[(*kl).class_id][(*kl).octave] = osl; /* update map */ int id = (*kl).class_id; int oct = (*kl).octave; - correspondences.insert(std::pair, int>(std::pair(id, oct), slCounter)); + correspondences.insert(std::pair, int>(std::pair(id, oct), + slCounter)); } /* delete useless OctaveSingleLines */ @@ -401,7 +504,7 @@ void BinaryDescriptor::computeImpl( const Mat& image, { for(size_t j = 0; jcomputeLBD_(sl); -} + bn->computeLBD(sl); + + /* resize output matrix */ + descriptors = cv::Mat(keypoints.size(), 32, CV_8UC1); + + /* fill output matrix with descriptors */ + for(size_t k = 0; k(k, lineOctave))->second; + /* get a pointer to correspondent row in output matrix */ + uchar* pointerToRow = descriptors.ptr(originalIndex); + + /* get LBD data */ + float* desVec = sl[k][lineC].descriptor.data(); + + /* fill current row with binary descriptor */ + for(int comb = 0; comb<32; comb++) + { + *pointerToRow = bn->binaryConversion(&desVec[8*combinations[comb][0]], + &desVec[8*combinations[comb][1]]); + + pointerToRow++; + } + } + } + + +} /* gather lines in groups. Each group contains the same line, detected in different octaves */ @@ -678,15 +810,9 @@ int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) cv::Vec3i tempParams; getLineParameters(extractedLines[octaveID][lineIDInOctave], tempParams); direction = getLineDirection(tempParams); - // direction = edLineVec_[octaveID]->lineDirection_[lineIDInOctave]; singleLine.octaveCount = octaveID; singleLine.direction = direction; singleLine.lineLength = octaveLines[lineID].lineLength; - //singleLine.salience = singleLine.lineLength/max(images_sizes[octaveID].width, - // images_sizes[octaveID].height); - //singleLine.salience = edLineVec_[octaveID]->lineSalience_[lineIDInOctave]; - //singleLine.numOfPixels = edLineVec_[octaveID]->lines_.sId[lineIDInOctave+1]- - //edLineVec_[octaveID]->lines_.sId[lineIDInOctave]; //decide the start point and end point shouldChange = false; @@ -739,7 +865,20 @@ int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) } tempID = octaveLines[lineID].lineIDInScaleLineVec; + + /* compute number of pixels covered by line */ + LineIterator li(octaveImages[octaveID], + Point(singleLine.startPointX, singleLine.startPointY), + Point(singleLine.endPointX, singleLine.endPointY)); + + singleLine.numOfPixels = li.count; + + /* store line */ keyLines[tempID].push_back(singleLine); + + + + } delete [] scale; @@ -749,14 +888,14 @@ int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) } /* compute LBD descriptors */ -int BinaryDescriptor::computeLBD_(ScaleLines &keyLines) +int BinaryDescriptor::computeLBD(ScaleLines &keyLines) { //the default length of the band is the line length. short numOfFinalLine = keyLines.size(); float *dL = new float[2];//line direction cos(dir), sin(dir) float *dO = new float[2];//the clockwise orthogonal vector of line direction. short heightOfLSP = params.widthOfBand_*params.numOfBand_;//the height of line support region; - short descriptorSize = params.numOfBand_ * 8;//each band, we compute the m( pgdL, ngdL, pgdO, ngdO) and std( pgdL, ngdL, pgdO, ngdO); + short descriptor_size = params.numOfBand_ * 8;//each band, we compute the m( pgdL, ngdL, pgdO, ngdO) and std( pgdL, ngdL, pgdO, ngdO); float pgdLRowSum;//the summation of {g_dL |g_dL>0 } for each row of the region; float ngdLRowSum;//the summation of {g_dL |g_dL<0 } for each row of the region; float pgdL2RowSum;//the summation of {g_dL^2 |g_dL>0 } for each row of the region; @@ -949,7 +1088,7 @@ int BinaryDescriptor::computeLBD_(ScaleLines &keyLines) return 0; */ /* construct line descriptor */ - pSingleLine->descriptor.resize(descriptorSize); + pSingleLine->descriptor.resize(descriptor_size); desVec = pSingleLine->descriptor.data(); short desID; @@ -1016,7 +1155,7 @@ int BinaryDescriptor::computeLBD_(ScaleLines &keyLines) * vector no larger than this threshold. In Z.Wang's work, a value of 0.4 is found * empirically to be a proper threshold.*/ desVec = pSingleLine->descriptor.data(); - for(short i=0; i0.4){ desVec[i]=0.4; } @@ -1024,12 +1163,12 @@ int BinaryDescriptor::computeLBD_(ScaleLines &keyLines) //re-normalize desVec; temp = 0; - for(short i=0; i #include #include +#include +#include #endif From fc72a71b336841a49b26da6fb609e3f8a952d9b9 Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Mon, 16 Jun 2014 18:59:24 +0200 Subject: [PATCH 10/67] Inheritage completed. Functions with KeyLine objects added. --- .../CMakeDirectoryInformation.cmake | 24 + .../CMakeFiles/progress.marks | 1 + .../line_descriptor/.line_descriptor/Makefile | 167 +++++++ .../.line_descriptor/cmake_install.cmake | 34 ++ modules/line_descriptor/CMakeCache.txt | 296 +++++++++++++ .../CMakeFiles/CMakeCCompiler.cmake | 49 +++ .../CMakeFiles/CMakeCXXCompiler.cmake | 50 +++ .../CMakeDetermineCompilerABI_C.bin | Bin 0 -> 8413 bytes .../CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 8426 bytes .../CMakeDirectoryInformation.cmake | 33 ++ .../CMakeFiles/CMakeOutput.log | 263 +++++++++++ .../CMakeFiles/CMakeSystem.cmake | 15 + .../CMakeFiles/CompilerIdC/CMakeCCompilerId.c | 232 ++++++++++ .../CMakeFiles/CompilerIdC/a.out | Bin 0 -> 8472 bytes .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 215 +++++++++ .../CMakeFiles/CompilerIdCXX/a.out | Bin 0 -> 8476 bytes .../CMakeFiles/cmake.check_cache | 1 + .../DependInfo.cmake | 25 ++ .../build.make | 113 +++++ .../cmake_clean.cmake | 10 + .../depend.make | 2 + .../flags.make | 8 + .../link.txt | 1 + .../progress.make | 2 + .../DependInfo.cmake | 34 ++ .../opencv_line_descriptor.dir/build.make | 169 +++++++ .../cmake_clean.cmake | 14 + .../opencv_line_descriptor.dir/depend.make | 2 + .../opencv_line_descriptor.dir/flags.make | 14 + .../opencv_line_descriptor.dir/link.txt | 1 + .../opencv_line_descriptor.dir/progress.make | 4 + .../DependInfo.cmake | 18 + .../build.make | 113 +++++ .../cmake_clean.cmake | 11 + .../cmake_clean_target.cmake | 3 + .../depend.make | 2 + .../flags.make | 8 + .../link.txt | 2 + .../progress.make | 3 + .../DependInfo.cmake | 13 + .../build.make | 80 ++++ .../cmake_clean.cmake | 10 + .../progress.make | 3 + .../line_descriptor/CMakeFiles/progress.marks | 1 + modules/line_descriptor/CMakeLists.txt | 2 +- modules/line_descriptor/Makefile | 362 +++++++++++++++ modules/line_descriptor/cmake_install.cmake | 82 ++++ .../include/opencv2/line_descriptor.hpp | 2 +- .../opencv2/line_descriptor/LineStructure.hpp | 16 +- .../opencv2/line_descriptor/descriptor.hpp | 22 +- .../line_descriptor/samples/CMakeLists.txt~ | 9 + .../samples/lines_extraction.cpp | 82 ++++ .../line_descriptor/src/BinaryDescriptor.cpp | 415 +++++++++++------- .../src/line_descriptor_init.cpp | 4 - 54 files changed, 2860 insertions(+), 182 deletions(-) create mode 100644 modules/line_descriptor/.line_descriptor/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 modules/line_descriptor/.line_descriptor/CMakeFiles/progress.marks create mode 100644 modules/line_descriptor/.line_descriptor/Makefile create mode 100644 modules/line_descriptor/.line_descriptor/cmake_install.cmake create mode 100644 modules/line_descriptor/CMakeCache.txt create mode 100644 modules/line_descriptor/CMakeFiles/CMakeCCompiler.cmake create mode 100644 modules/line_descriptor/CMakeFiles/CMakeCXXCompiler.cmake create mode 100755 modules/line_descriptor/CMakeFiles/CMakeDetermineCompilerABI_C.bin create mode 100755 modules/line_descriptor/CMakeFiles/CMakeDetermineCompilerABI_CXX.bin create mode 100644 modules/line_descriptor/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 modules/line_descriptor/CMakeFiles/CMakeOutput.log create mode 100644 modules/line_descriptor/CMakeFiles/CMakeSystem.cmake create mode 100644 modules/line_descriptor/CMakeFiles/CompilerIdC/CMakeCCompilerId.c create mode 100755 modules/line_descriptor/CMakeFiles/CompilerIdC/a.out create mode 100644 modules/line_descriptor/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100755 modules/line_descriptor/CMakeFiles/CompilerIdCXX/a.out create mode 100644 modules/line_descriptor/CMakeFiles/cmake.check_cache create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/DependInfo.cmake create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build.make create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/cmake_clean.cmake create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/depend.make create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/flags.make create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/progress.make create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/DependInfo.cmake create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/cmake_clean.cmake create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/depend.make create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/link.txt create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/progress.make create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/DependInfo.cmake create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean.cmake create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean_target.cmake create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/depend.make create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/link.txt create mode 100644 modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/progress.make create mode 100644 modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/DependInfo.cmake create mode 100644 modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make create mode 100644 modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean.cmake create mode 100644 modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make create mode 100644 modules/line_descriptor/CMakeFiles/progress.marks create mode 100644 modules/line_descriptor/Makefile create mode 100644 modules/line_descriptor/cmake_install.cmake create mode 100644 modules/line_descriptor/samples/CMakeLists.txt~ diff --git a/modules/line_descriptor/.line_descriptor/CMakeFiles/CMakeDirectoryInformation.cmake b/modules/line_descriptor/.line_descriptor/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 000000000..d391e25b1 --- /dev/null +++ b/modules/line_descriptor/.line_descriptor/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,24 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Relative path conversion top directories. +SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/ubisum/src/opencv") +SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/ubisum/src/opencv") + +# Force unix paths in dependencies. +SET(CMAKE_FORCE_UNIX_PATHS 1) + +# The C and CXX include file search paths: +SET(CMAKE_C_INCLUDE_PATH + "." + "/usr/local/include/eigen3" + ) +SET(CMAKE_CXX_INCLUDE_PATH ${CMAKE_C_INCLUDE_PATH}) +SET(CMAKE_Fortran_INCLUDE_PATH ${CMAKE_C_INCLUDE_PATH}) +SET(CMAKE_ASM_INCLUDE_PATH ${CMAKE_C_INCLUDE_PATH}) + +# The C and CXX include file regular expressions for this directory. +SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/modules/line_descriptor/.line_descriptor/CMakeFiles/progress.marks b/modules/line_descriptor/.line_descriptor/CMakeFiles/progress.marks new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/modules/line_descriptor/.line_descriptor/CMakeFiles/progress.marks @@ -0,0 +1 @@ +0 diff --git a/modules/line_descriptor/.line_descriptor/Makefile b/modules/line_descriptor/.line_descriptor/Makefile new file mode 100644 index 000000000..2b73bfafa --- /dev/null +++ b/modules/line_descriptor/.line_descriptor/Makefile @@ -0,0 +1,167 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = /usr/bin/ccmake + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/ubisum/src/opencv + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/ubisum/src/opencv + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: install/local +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: install/strip +.PHONY : install/strip/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\" \"main\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -E cmake_progress_start /home/ubisum/src/opencv/CMakeFiles /home/ubisum/src/opencv/modules/line_descriptor/.line_descriptor/CMakeFiles/progress.marks + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/.line_descriptor/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/ubisum/src/opencv/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/.line_descriptor/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/.line_descriptor/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/.line_descriptor/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/modules/line_descriptor/.line_descriptor/cmake_install.cmake b/modules/line_descriptor/.line_descriptor/cmake_install.cmake new file mode 100644 index 000000000..2544d4049 --- /dev/null +++ b/modules/line_descriptor/.line_descriptor/cmake_install.cmake @@ -0,0 +1,34 @@ +# Install script for directory: /home/ubisum/src/opencv/modules/line_descriptor + +# Set the install prefix +IF(NOT DEFINED CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "/usr/local") +ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX) +STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + IF(BUILD_TYPE) + STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + ELSE(BUILD_TYPE) + SET(CMAKE_INSTALL_CONFIG_NAME "Release") + ENDIF(BUILD_TYPE) + MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + +# Set the component getting installed. +IF(NOT CMAKE_INSTALL_COMPONENT) + IF(COMPONENT) + MESSAGE(STATUS "Install component: \"${COMPONENT}\"") + SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + ELSE(COMPONENT) + SET(CMAKE_INSTALL_COMPONENT) + ENDIF(COMPONENT) +ENDIF(NOT CMAKE_INSTALL_COMPONENT) + +# Install shared libraries without execute permission? +IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + SET(CMAKE_INSTALL_SO_NO_EXE "1") +ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + diff --git a/modules/line_descriptor/CMakeCache.txt b/modules/line_descriptor/CMakeCache.txt new file mode 100644 index 000000000..6de7fb331 --- /dev/null +++ b/modules/line_descriptor/CMakeCache.txt @@ -0,0 +1,296 @@ +# This is the CMakeCache file. +# For build in directory: /home/ubisum/src/opencv_contrib/modules/line_descriptor +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUI's for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//For backwards compatibility, what version of CMake commands and +// syntax should this version of CMake try to support. +CMAKE_BACKWARDS_COMPATIBILITY:STRING=2.4 + +//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or +// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler. +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//Flags used by the compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the compiler during release minsize builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds (/MD /Ob1 /Oi +// /Ot /Oy /Gs will produce slightly less optimized but smaller +// files). +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the compiler during Release with Debug Info builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g + +//C compiler. +CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc + +//Flags used by the compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the compiler during debug builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the compiler during release minsize builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the compiler during release builds (/MD /Ob1 /Oi +// /Ot /Oy /Gs will produce slightly less optimized but smaller +// files). +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the compiler during Release with Debug Info builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g + +//Flags used by the linker. +CMAKE_EXE_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules. +CMAKE_MODULE_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=Project + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Flags used by the linker during the creation of dll's. +CMAKE_SHARED_LINKER_FLAGS:STRING=' ' + +//Flags used by the linker during debug builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during release minsize builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during release builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during Release with Debug Info builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If true, cmake will use relative paths in makefiles and projects. +CMAKE_USE_RELATIVE_PATHS:BOOL=OFF + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Single output directory for building all executables. +EXECUTABLE_OUTPUT_PATH:PATH= + +//Single output directory for building all libraries. +LIBRARY_OUTPUT_PATH:PATH= + +//Value Computed by CMake +Project_BINARY_DIR:STATIC=/home/ubisum/src/opencv_contrib/modules/line_descriptor + +//Value Computed by CMake +Project_SOURCE_DIR:STATIC=/home/ubisum/src/opencv_contrib/modules/line_descriptor + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_BUILD_TOOL +CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1 +//What is the target build tool cmake is generating for. +CMAKE_BUILD_TOOL:INTERNAL=/usr/bin/make +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/ubisum/src/opencv_contrib/modules/line_descriptor +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=8 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=7 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +CMAKE_CXX_COMPILER_WORKS:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +CMAKE_C_COMPILER_WORKS:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//Result of TRY_COMPILE +CMAKE_DETERMINE_CXX_ABI_COMPILED:INTERNAL=TRUE +//Result of TRY_COMPILE +CMAKE_DETERMINE_C_ABI_COMPILED:INTERNAL=TRUE +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Start directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/ubisum/src/opencv_contrib/modules/line_descriptor +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake-2.8 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/bin/uname +//ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS +CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/modules/line_descriptor/CMakeFiles/CMakeCCompiler.cmake b/modules/line_descriptor/CMakeFiles/CMakeCCompiler.cmake new file mode 100644 index 000000000..657f5b0ec --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/CMakeCCompiler.cmake @@ -0,0 +1,49 @@ +SET(CMAKE_C_COMPILER "/usr/bin/gcc") +SET(CMAKE_C_COMPILER_ARG1 "") +SET(CMAKE_C_COMPILER_ID "GNU") +SET(CMAKE_C_PLATFORM_ID "Linux") + +SET(CMAKE_AR "/usr/bin/ar") +SET(CMAKE_RANLIB "/usr/bin/ranlib") +SET(CMAKE_LINKER "/usr/bin/ld") +SET(CMAKE_COMPILER_IS_GNUCC 1) +SET(CMAKE_C_COMPILER_LOADED 1) +SET(CMAKE_COMPILER_IS_MINGW ) +SET(CMAKE_COMPILER_IS_CYGWIN ) +IF(CMAKE_COMPILER_IS_CYGWIN) + SET(CYGWIN 1) + SET(UNIX 1) +ENDIF(CMAKE_COMPILER_IS_CYGWIN) + +SET(CMAKE_C_COMPILER_ENV_VAR "CC") + +IF(CMAKE_COMPILER_IS_MINGW) + SET(MINGW 1) +ENDIF(CMAKE_COMPILER_IS_MINGW) +SET(CMAKE_C_COMPILER_ID_RUN 1) +SET(CMAKE_C_SOURCE_FILE_EXTENSIONS c) +SET(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +SET(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +SET(CMAKE_C_SIZEOF_DATA_PTR "8") +SET(CMAKE_C_COMPILER_ABI "ELF") +SET(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +IF(CMAKE_C_SIZEOF_DATA_PTR) + SET(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +ENDIF(CMAKE_C_SIZEOF_DATA_PTR) + +IF(CMAKE_C_COMPILER_ABI) + SET(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +ENDIF(CMAKE_C_COMPILER_ABI) + +IF(CMAKE_C_LIBRARY_ARCHITECTURE) + SET(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +ENDIF() + +SET(CMAKE_C_HAS_ISYSROOT "") + + +SET(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c") +SET(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.6;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") diff --git a/modules/line_descriptor/CMakeFiles/CMakeCXXCompiler.cmake b/modules/line_descriptor/CMakeFiles/CMakeCXXCompiler.cmake new file mode 100644 index 000000000..f62d04d96 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/CMakeCXXCompiler.cmake @@ -0,0 +1,50 @@ +SET(CMAKE_CXX_COMPILER "/usr/bin/c++") +SET(CMAKE_CXX_COMPILER_ARG1 "") +SET(CMAKE_CXX_COMPILER_ID "GNU") +SET(CMAKE_CXX_PLATFORM_ID "Linux") + +SET(CMAKE_AR "/usr/bin/ar") +SET(CMAKE_RANLIB "/usr/bin/ranlib") +SET(CMAKE_LINKER "/usr/bin/ld") +SET(CMAKE_COMPILER_IS_GNUCXX 1) +SET(CMAKE_CXX_COMPILER_LOADED 1) +SET(CMAKE_COMPILER_IS_MINGW ) +SET(CMAKE_COMPILER_IS_CYGWIN ) +IF(CMAKE_COMPILER_IS_CYGWIN) + SET(CYGWIN 1) + SET(UNIX 1) +ENDIF(CMAKE_COMPILER_IS_CYGWIN) + +SET(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +IF(CMAKE_COMPILER_IS_MINGW) + SET(MINGW 1) +ENDIF(CMAKE_COMPILER_IS_MINGW) +SET(CMAKE_CXX_COMPILER_ID_RUN 1) +SET(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) +SET(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP) +SET(CMAKE_CXX_LINKER_PREFERENCE 30) +SET(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +SET(CMAKE_CXX_SIZEOF_DATA_PTR "8") +SET(CMAKE_CXX_COMPILER_ABI "ELF") +SET(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +IF(CMAKE_CXX_SIZEOF_DATA_PTR) + SET(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +ENDIF(CMAKE_CXX_SIZEOF_DATA_PTR) + +IF(CMAKE_CXX_COMPILER_ABI) + SET(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +ENDIF(CMAKE_CXX_COMPILER_ABI) + +IF(CMAKE_CXX_LIBRARY_ARCHITECTURE) + SET(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +ENDIF() + +SET(CMAKE_CXX_HAS_ISYSROOT "") + + +SET(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c") +SET(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/4.6;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") diff --git a/modules/line_descriptor/CMakeFiles/CMakeDetermineCompilerABI_C.bin b/modules/line_descriptor/CMakeFiles/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..dc21ec4e8374e81c953da6449000e248b553d721 GIT binary patch literal 8413 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 ignore + arg [--sysroot=/] ==> ignore + arg [--build-id] ==> ignore + arg [--no-add-needed] ==> ignore + arg [--as-needed] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-export-dynamic] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTryCompileExec] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.6] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.6] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../..] + arg [CMakeFiles/cmTryCompileExec.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--no-as-needed] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--no-as-needed] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/crtend.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crtn.o] ==> ignore + remove lib [gcc] + remove lib [gcc_s] + remove lib [gcc] + remove lib [gcc_s] + collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.6] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.6] + collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib] ==> [/usr/lib] + collapse dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse dir [/lib/../lib] ==> [/lib] + collapse dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse dir [/usr/lib/../lib] ==> [/usr/lib] + collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../..] ==> [/usr/lib] + implicit libs: [c] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.6;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + + +Determining if the CXX compiler works passed with the following output: +Change Dir: /home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp + +Run Build Command:/usr/bin/make "cmTryCompileExec/fast" +/usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build +make[1]: Entering directory `/home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp' +/usr/bin/cmake -E cmake_progress_report /home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp/CMakeFiles 1 +Building CXX object CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o +/usr/bin/c++ -o CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -c /home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp/testCXXCompiler.cxx +Linking CXX executable cmTryCompileExec +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1 +/usr/bin/c++ CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -o cmTryCompileExec -rdynamic +make[1]: Leaving directory `/home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp' + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp + +Run Build Command:/usr/bin/make "cmTryCompileExec/fast" +/usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build +make[1]: Entering directory `/home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp' +/usr/bin/cmake -E cmake_progress_report /home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp/CMakeFiles 1 +Building CXX object CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o +/usr/bin/c++ -o CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-2.8/Modules/CMakeCXXCompilerABI.cpp +Linking CXX executable cmTryCompileExec +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1 +/usr/bin/c++ -v CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -o cmTryCompileExec -rdynamic +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/4.6/collect2 --sysroot=/ --build-id --no-add-needed --as-needed --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.6 -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../.. CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.6/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crtn.o +make[1]: Leaving directory `/home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp' + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command:/usr/bin/make "cmTryCompileExec/fast"] + ignore line: [/usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make CMakeFiles/cmTryCompileExec.dir/build] + ignore line: [make[1]: Entering directory `/home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp'] + ignore line: [/usr/bin/cmake -E cmake_progress_report /home/ubisum/src/opencv_contrib/modules/line_descriptor/CMakeFiles/CMakeTmp/CMakeFiles 1] + ignore line: [Building CXX object CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -o CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-2.8/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Linking CXX executable cmTryCompileExec] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -o cmTryCompileExec -rdynamic ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTryCompileExec' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/4.6/collect2 --sysroot=/ --build-id --no-add-needed --as-needed --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTryCompileExec /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.6 -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../.. CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.6/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/collect2] ==> ignore + arg [--sysroot=/] ==> ignore + arg [--build-id] ==> ignore + arg [--no-add-needed] ==> ignore + arg [--as-needed] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [-export-dynamic] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTryCompileExec] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.6] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.6] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../..] + arg [CMakeFiles/cmTryCompileExec.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/crtend.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crtn.o] ==> ignore + remove lib [gcc_s] + remove lib [gcc] + remove lib [gcc_s] + remove lib [gcc] + collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.6] ==> [/usr/lib/gcc/x86_64-linux-gnu/4.6] + collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib] ==> [/usr/lib] + collapse dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse dir [/lib/../lib] ==> [/lib] + collapse dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse dir [/usr/lib/../lib] ==> [/usr/lib] + collapse dir [/usr/lib/gcc/x86_64-linux-gnu/4.6/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;c] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/4.6;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + + diff --git a/modules/line_descriptor/CMakeFiles/CMakeSystem.cmake b/modules/line_descriptor/CMakeFiles/CMakeSystem.cmake new file mode 100644 index 000000000..9bd3958b4 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/CMakeSystem.cmake @@ -0,0 +1,15 @@ + + +SET(CMAKE_SYSTEM "Linux-3.8.0-38-generic") +SET(CMAKE_SYSTEM_NAME "Linux") +SET(CMAKE_SYSTEM_VERSION "3.8.0-38-generic") +SET(CMAKE_SYSTEM_PROCESSOR "x86_64") + +SET(CMAKE_HOST_SYSTEM "Linux-3.8.0-38-generic") +SET(CMAKE_HOST_SYSTEM_NAME "Linux") +SET(CMAKE_HOST_SYSTEM_VERSION "3.8.0-38-generic") +SET(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + +SET(CMAKE_CROSSCOMPILING "FALSE") + +SET(CMAKE_SYSTEM_LOADED 1) diff --git a/modules/line_descriptor/CMakeFiles/CompilerIdC/CMakeCCompilerId.c b/modules/line_descriptor/CMakeFiles/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 000000000..936ae30a0 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,232 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" + +#elif defined(__clang__) +# define COMPILER_ID "Clang" + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + +#elif defined(__WATCOMC__) +# define COMPILER_ID "Watcom" + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + +#elif defined(__IBMC__) +# if defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" +# elif __IBMC__ >= 800 +# define COMPILER_ID "XL" +# else +# define COMPILER_ID "VisualAge" +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" + +#elif defined(__PATHSCALE__) +# define COMPILER_ID "PathScale" + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI_DSP" + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + +#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +/* Analog Devices C++ compiler for Blackfin, TigerSHARC and + SHARC (21000) DSPs */ +# define COMPILER_ID "ADSP" + +/* IAR Systems compiler for embedded systems. + http://www.iar.com + Not supported yet by CMake +#elif defined(__IAR_SYSTEMS_ICC__) +# define COMPILER_ID "IAR" */ + +/* sdcc, the small devices C compiler for embedded systems, + http://sdcc.sourceforge.net */ +#elif defined(SDCC) +# define COMPILER_ID "SDCC" + +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) +# define COMPILER_ID "MIPSpro" + +/* This compiler is either not known or is too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__sgi) +# define COMPILER_ID "MIPSpro" + +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" + +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) +# define PLATFORM_ID "IRIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU) +# define PLATFORM_ID "Haiku" +/* Haiku also defines __BEOS__ so we must + put it prior to the check for __BEOS__ +*/ + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#else /* unknown platform */ +# define PLATFORM_ID "" + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; + (void)argv; + return require; +} +#endif diff --git a/modules/line_descriptor/CMakeFiles/CompilerIdC/a.out b/modules/line_descriptor/CMakeFiles/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..ec9b7d5ef3fc79a2450bc3b303688d16d9b90fe0 GIT binary patch literal 8472 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 Gw%}jt)KHKB literal 0 HcmV?d00001 diff --git a/modules/line_descriptor/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp b/modules/line_descriptor/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp new file mode 100644 index 000000000..7414ddf40 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp @@ -0,0 +1,215 @@ +/* This source file must have a .cpp extension so that all C++ compilers + recognize the extension without flags. Borland does not know .cxx for + example. */ +#ifndef __cplusplus +# error "A C compiler has been selected for C++." +#endif + +#if defined(__COMO__) +# define COMPILER_ID "Comeau" + +#elif defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" + +#elif defined(__clang__) +# define COMPILER_ID "Clang" + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + +#elif defined(__WATCOMC__) +# define COMPILER_ID "Watcom" + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + +#elif defined(__IBMCPP__) +# if defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" +# elif __IBMCPP__ >= 800 +# define COMPILER_ID "XL" +# else +# define COMPILER_ID "VisualAge" +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" + +#elif defined(__PATHSCALE__) +# define COMPILER_ID "PathScale" + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI_DSP" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + +#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +/* Analog Devices C++ compiler for Blackfin, TigerSHARC and + SHARC (21000) DSPs */ +# define COMPILER_ID "ADSP" + +#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) +# define COMPILER_ID "MIPSpro" + +/* This compiler is either not known or is too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__sgi) +# define COMPILER_ID "MIPSpro" + +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" + +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__sgi) || defined(__sgi__) || defined(_SGI) +# define PLATFORM_ID "IRIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU) +# define PLATFORM_ID "Haiku" +/* Haiku also defines __BEOS__ so we must + put it prior to the check for __BEOS__ +*/ + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#else /* unknown platform */ +# define PLATFORM_ID "" + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + (void)argv; + return require; +} diff --git a/modules/line_descriptor/CMakeFiles/CompilerIdCXX/a.out b/modules/line_descriptor/CMakeFiles/CompilerIdCXX/a.out new file mode 100755 index 0000000000000000000000000000000000000000..24724234ef21d6675b75238af05647fff26db3c9 GIT binary patch literal 8476 zcmeHMZ){W76+gChI zunC$FX~aiUB}A>9(A!+KP%q1QkT&2GbX!2st*MOA%@zzo#Y3WGubMQ@TJ$D4gh?oX zPw}KjMO&H`i*!U~gnHSJ4yK|C?aSUXk+huH9>VP=5HE_-^UcFh~4263+Sr?f*aq`O8*jS*Y^Ci_peR}VOm1u|Tn(Y?}Bj3Cyf2*UR^8Cpw zr4p4DesDuCqsfQQ)?@&dU^g_x% z7b(R3^ZL22b!a(q?%_2=5MPKCO#fn}aK?XIFFfVP=-dcK9=Y0ExEn6q(l6ijgbROK zIB>6A)?fa_+`R42)E|+;=aIs#zQR9x%j-YXr>|g4uIE42i%!q!{;iL@?)z z6ixq@Nb!un8^aL1($aaBTJkT;tx6YE;*SxZ@?!X=ZI-!A7r z<%n8+yYK}0W{n;fj=u1rfy29FnTg3{Dv>>bGw-AYO{SveSSCAhB0^J{!Du!%e&Qs! zHhK2YSf)8!x{K8zeI2WvL^_YOgme;zlj!4oY~1tc4*%B)CK(()uo>$fB%rss^%Zw$ZIgQ+)@0QaM_9-5 z0+m1cYU3+SMzc1(;)m|nJm(tR$D2`1`SB{!3n*7J??`7kEk|HE0?QFtj=*vRmLu?` zB7mQGl|GkhrgqgKD$@W5IyhKh*bA>EH8VSi*AjIVU>F0 zzLDu_rX5T-Fcm_33`z?vBZ|tufXK`L$_iBq@Bq^(wlDYy^Ym{)N%Zk&UnSx3cSE&D zV|k2|;$1Aa$b68?8UDW$*{?bcy?Y-&ZgBsUnXYfrlTzX>$9ktwMw2#WOK<(x`r{ZESpG0Nr7{dDH8(8bQ0fYVhZ15 z$Y5C}9yOy7NQ@g}+2};V7>}c_a1e-@nQRUXTI87+7Gj;ziDV27X0RH31ytQuJ)=34 z#^39SMA~$Q`G4j&p$3f^8LvUNhFtZ$M9xJNh%Xsm!asx=8oQ!D?ADO0o=5l;SA8{9 zvnsa@-*$b|tts5(3jK0k%aM7dgz$9;ADY{uf6=WW z2XK)AU2)dg47FYKWgdPTF`E0L4>HbqK?t(G5NG_J#sZqVqA&9`$ojG_iT@%e^jXxW zwLo}T4>Z>Iv0Og++GzL##i<9rDwv zs>(_K3494Nq|f29op)Li5@(C6_P_8mn6c~A2@a(o2kyV={{dy~`gD3jNoRehzfS&r zl%=MM|MLBkbJ!A9j!DL+=!;(;Vwv5(oWsqxD7DIXx43HirJlb!^yU9yf%Sc&$W-)% ze(ccq@_C<^9o%vseSsG-Lv=~}yIH@R^`)I6FLs6h3^UaJZULBz{-X|@!>M$rh>rWk zwq5kQZ1|oX#JuPWOuWn;!HCZB!qv?k_f^CK_=x|quF-#0J^S8HEWothQMuE;B~}0J zL2rX@ZAqaAJ(lmJz0iZ6$oH=nZ>apY*5Zx$ozm=(%6n+Edg|dTK)x?_B@aeLt1G_} zM(X0LK-T%%dRBw1-?jJ}kaf8hUt78Vsl}T?*3nwL1!R4!#ak=)7PWXA$a+?bw^!Dw zT6`U@J0o^Tg_Pj28;Y1QeTDgCv z;5^|_oxcrS@H2&XfX^`=evLTA0XPoypGWB(#HqcSqyFEs{H#Y)a`Ji)@ivTGhok<# za6QhrUFUk}{)*C|dIKyX?&G|jG++m{;|`+a(d;m+LY(YwaoB}eG?lVl1wt%q=FB|a zOvUgfFf@Glh!F`N9mX3%!|1Ew_J?dm@r-dQl^Knu47F`EqWLMH8<$kVOvD2{yLM~? zDln4qDdKj3weyVUCnipdo&H08%FMu#-h=&yaAZdERV!+bs;q<#MxRZDjvo*4{Z2R@ zh)qsnowV^aqS8A#( zi_lmuZ>Wtk?RKqeQ7{r}>ucd07;(~Zd#Y*n>r=z9*J6viYI!`DF~+0mcq#!#_%Pav zC(}kgmxx0$J(e-#zRK>I+TL3YwA!L1<+2MUad*y6tGird|8vHX#HnNs4 CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.i + +modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.s" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -S /home/ubisum/src/opencv/modules/line_descriptor/samples/lines_extraction.cpp -o CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.s + +modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o.requires: +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o.requires + +modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o.provides: modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o.requires + $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o.provides.build +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o.provides + +modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o.provides.build: modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o + +# Object files for target example_line_descriptor_lines_extraction +example_line_descriptor_lines_extraction_OBJECTS = \ +"CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o" + +# External object files for target example_line_descriptor_lines_extraction +example_line_descriptor_lines_extraction_EXTERNAL_OBJECTS = + +bin/example_line_descriptor_lines_extraction: modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o +bin/example_line_descriptor_lines_extraction: lib/libopencv_line_descriptor.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_core.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_flann.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_imgproc.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_highgui.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_features2d.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_optim.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_highgui.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_flann.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_imgproc.so.3.0.0 +bin/example_line_descriptor_lines_extraction: lib/libopencv_core.so.3.0.0 +bin/example_line_descriptor_lines_extraction: modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build.make +bin/example_line_descriptor_lines_extraction: modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX executable ../../bin/example_line_descriptor_lines_extraction" + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build: bin/example_line_descriptor_lines_extraction +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build + +modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/requires: modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o.requires +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/requires + +modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/clean: + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -P CMakeFiles/example_line_descriptor_lines_extraction.dir/cmake_clean.cmake +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/clean + +modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/depend: + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/depend + diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/cmake_clean.cmake b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/cmake_clean.cmake new file mode 100644 index 000000000..dcdc5df95 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o" + "../../bin/example_line_descriptor_lines_extraction.pdb" + "../../bin/example_line_descriptor_lines_extraction" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang CXX) + INCLUDE(CMakeFiles/example_line_descriptor_lines_extraction.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/depend.make b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/depend.make new file mode 100644 index 000000000..f0baab545 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for example_line_descriptor_lines_extraction. +# This may be replaced when dependencies are built. diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/flags.make b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/flags.make new file mode 100644 index 000000000..fdc708b78 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile CXX with /usr/bin/c++ +CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 + +CXX_DEFINES = -D__OPENCV_BUILD=1 + diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt new file mode 100644 index 000000000..29ca766ae --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o -o ../../bin/example_line_descriptor_lines_extraction -rdynamic ../../lib/libopencv_line_descriptor.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_features2d.so.3.0.0 ../../lib/libopencv_optim.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 -Wl,-rpath,/home/ubisum/src/opencv/lib diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/progress.make b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/progress.make new file mode 100644 index 000000000..225de343d --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = + diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/DependInfo.cmake b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/DependInfo.cmake new file mode 100644 index 000000000..091e52ff5 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/DependInfo.cmake @@ -0,0 +1,34 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_CXX + "/home/ubisum/src/opencv/modules/line_descriptor/src/BinaryDescriptor.cpp" "/home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o" + "/home/ubisum/src/opencv/modules/line_descriptor/src/line_descriptor_init.cpp" "/home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o" + "/home/ubisum/src/opencv/modules/line_descriptor/src/precomp.cpp" "/home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o" + ) +SET(CMAKE_CXX_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +SET(CMAKE_TARGET_DEFINITIONS + "__OPENCV_BUILD=1" + "OPENCV_NOSTL" + ) + +# Pairs of files generated by the same build rule. +SET(CMAKE_MULTIPLE_OUTPUT_PAIRS + "/home/ubisum/src/opencv/lib/libopencv_line_descriptor.so" "/home/ubisum/src/opencv/lib/libopencv_line_descriptor.so.3.0.0" + "/home/ubisum/src/opencv/lib/libopencv_line_descriptor.so.3.0" "/home/ubisum/src/opencv/lib/libopencv_line_descriptor.so.3.0.0" + ) + + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "/home/ubisum/src/opencv/modules/core/CMakeFiles/opencv_core.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/flann/CMakeFiles/opencv_flann.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/imgproc/CMakeFiles/opencv_imgproc.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/highgui/CMakeFiles/opencv_highgui.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/features2d/CMakeFiles/opencv_features2d.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/optim/CMakeFiles/opencv_optim.dir/DependInfo.cmake" + ) diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make new file mode 100644 index 000000000..f4335b9a3 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make @@ -0,0 +1,169 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = /usr/bin/ccmake + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/ubisum/src/opencv + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/ubisum/src/opencv + +# Include any dependencies generated for this target. +include modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/depend.make + +# Include the progress variables for this target. +include modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/progress.make + +# Include the compile flags for this target's objects. +include modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o: modules/line_descriptor/src/line_descriptor_init.cpp + $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch -o CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o -c /home/ubisum/src/opencv/modules/line_descriptor/src/line_descriptor_init.cpp + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.i" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch -E /home/ubisum/src/opencv/modules/line_descriptor/src/line_descriptor_init.cpp > CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.i + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.s" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch -S /home/ubisum/src/opencv/modules/line_descriptor/src/line_descriptor_init.cpp -o CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.s + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o.requires: +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o.requires + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o.provides: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o.requires + $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o.provides.build +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o.provides + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o.provides.build: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o: modules/line_descriptor/src/BinaryDescriptor.cpp + $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_2) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch -o CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o -c /home/ubisum/src/opencv/modules/line_descriptor/src/BinaryDescriptor.cpp + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.i" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch -E /home/ubisum/src/opencv/modules/line_descriptor/src/BinaryDescriptor.cpp > CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.i + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.s" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch -S /home/ubisum/src/opencv/modules/line_descriptor/src/BinaryDescriptor.cpp -o CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.s + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o.requires: +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o.requires + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o.provides: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o.requires + $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o.provides.build +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o.provides + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o.provides.build: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o: modules/line_descriptor/src/precomp.cpp + $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_3) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch -o CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o -c /home/ubisum/src/opencv/modules/line_descriptor/src/precomp.cpp + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.i" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch -E /home/ubisum/src/opencv/modules/line_descriptor/src/precomp.cpp > CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.i + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.s" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch -S /home/ubisum/src/opencv/modules/line_descriptor/src/precomp.cpp -o CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.s + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o.requires: +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o.requires + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o.provides: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o.requires + $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o.provides.build +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o.provides + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o.provides.build: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o + +# Object files for target opencv_line_descriptor +opencv_line_descriptor_OBJECTS = \ +"CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o" \ +"CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o" \ +"CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o" + +# External object files for target opencv_line_descriptor +opencv_line_descriptor_EXTERNAL_OBJECTS = + +lib/libopencv_line_descriptor.so.3.0.0: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o +lib/libopencv_line_descriptor.so.3.0.0: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o +lib/libopencv_line_descriptor.so.3.0.0: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_core.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_flann.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_imgproc.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_highgui.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_features2d.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_optim.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_flann.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_highgui.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_imgproc.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: lib/libopencv_core.so.3.0.0 +lib/libopencv_line_descriptor.so.3.0.0: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make +lib/libopencv_line_descriptor.so.3.0.0: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX shared library ../../lib/libopencv_line_descriptor.so" + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/opencv_line_descriptor.dir/link.txt --verbose=$(VERBOSE) + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -E cmake_symlink_library ../../lib/libopencv_line_descriptor.so.3.0.0 ../../lib/libopencv_line_descriptor.so.3.0 ../../lib/libopencv_line_descriptor.so + +lib/libopencv_line_descriptor.so.3.0: lib/libopencv_line_descriptor.so.3.0.0 + +lib/libopencv_line_descriptor.so: lib/libopencv_line_descriptor.so.3.0.0 + +# Rule to build all files generated by this target. +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build: lib/libopencv_line_descriptor.so +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/requires: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o.requires +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/requires: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o.requires +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/requires: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o.requires +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/requires + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/clean: + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -P CMakeFiles/opencv_line_descriptor.dir/cmake_clean.cmake +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/clean + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/depend: + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/depend + diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/cmake_clean.cmake b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/cmake_clean.cmake new file mode 100644 index 000000000..59a2720b0 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/cmake_clean.cmake @@ -0,0 +1,14 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o" + "CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o" + "CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o" + "../../lib/libopencv_line_descriptor.pdb" + "../../lib/libopencv_line_descriptor.so" + "../../lib/libopencv_line_descriptor.so.3.0.0" + "../../lib/libopencv_line_descriptor.so.3.0" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang CXX) + INCLUDE(CMakeFiles/opencv_line_descriptor.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/depend.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/depend.make new file mode 100644 index 000000000..c0133de51 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for opencv_line_descriptor. +# This may be replaced when dependencies are built. diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make new file mode 100644 index 000000000..99f443243 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make @@ -0,0 +1,14 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile CXX with /usr/bin/c++ +CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -fPIC -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 + +CXX_DEFINES = -DCVAPI_EXPORTS -D__OPENCV_BUILD=1 -DOPENCV_NOSTL + +# Custom flags: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o_FLAGS = -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch + +# Custom flags: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o_FLAGS = -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch + +# Custom flags: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o_FLAGS = -include "/home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp" -Winvalid-pch + diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/link.txt b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/link.txt new file mode 100644 index 000000000..d1894461d --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ -fPIC -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -shared -Wl,-soname,libopencv_line_descriptor.so.3.0 -o ../../lib/libopencv_line_descriptor.so.3.0.0 CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o ../../lib/libopencv_core.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_features2d.so.3.0.0 ../../lib/libopencv_optim.so.3.0.0 -ldl -lm -lpthread -lrt ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 -Wl,-rpath,/home/ubisum/src/opencv/lib: diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/progress.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/progress.make new file mode 100644 index 000000000..8eb4b4992 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/progress.make @@ -0,0 +1,4 @@ +CMAKE_PROGRESS_1 = +CMAKE_PROGRESS_2 = +CMAKE_PROGRESS_3 = + diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/DependInfo.cmake b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/DependInfo.cmake new file mode 100644 index 000000000..60360efe3 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/DependInfo.cmake @@ -0,0 +1,18 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_CXX + "/home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx" "/home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o" + ) +SET(CMAKE_CXX_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +SET(CMAKE_TARGET_DEFINITIONS + "__OPENCV_BUILD=1" + ) + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + ) diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make new file mode 100644 index 000000000..cf11c8126 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make @@ -0,0 +1,113 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = /usr/bin/ccmake + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/ubisum/src/opencv + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/ubisum/src/opencv + +# Include any dependencies generated for this target. +include modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/depend.make + +# Include the progress variables for this target. +include modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/progress.make + +# Include the compile flags for this target's objects. +include modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o: modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o: modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx + $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o -c /home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.i" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -E /home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx > CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.i + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.s" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -S /home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx -o CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.s + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o.requires: +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o.requires + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o.provides: modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o.requires + $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o.provides.build +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o.provides + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o.provides.build: modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o + +modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx: modules/line_descriptor/src/precomp.hpp + $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_2) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold "Generating opencv_line_descriptor_pch_dephelp.cxx" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E echo \#include\ \"/home/ubisum/src/opencv/modules/line_descriptor/src/precomp.hpp\" > /home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E echo int\ testfunction\(\)\; >> /home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E echo int\ testfunction\(\) >> /home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E echo { >> /home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E echo \ \ \ \ \return\ 0\; >> /home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E echo } >> /home/ubisum/src/opencv/modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx + +# Object files for target opencv_line_descriptor_pch_dephelp +opencv_line_descriptor_pch_dephelp_OBJECTS = \ +"CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o" + +# External object files for target opencv_line_descriptor_pch_dephelp +opencv_line_descriptor_pch_dephelp_EXTERNAL_OBJECTS = + +lib/libopencv_line_descriptor_pch_dephelp.a: modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o +lib/libopencv_line_descriptor_pch_dephelp.a: modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make +lib/libopencv_line_descriptor_pch_dephelp.a: modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX static library ../../lib/libopencv_line_descriptor_pch_dephelp.a" + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -P CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean_target.cmake + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build: lib/libopencv_line_descriptor_pch_dephelp.a +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/requires: modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o.requires +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/requires + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/clean: + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -P CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean.cmake +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/clean + +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/depend: modules/line_descriptor/opencv_line_descriptor_pch_dephelp.cxx + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/depend + diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean.cmake b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean.cmake new file mode 100644 index 000000000..a1e1d4aff --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o" + "opencv_line_descriptor_pch_dephelp.cxx" + "../../lib/libopencv_line_descriptor_pch_dephelp.pdb" + "../../lib/libopencv_line_descriptor_pch_dephelp.a" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang CXX) + INCLUDE(CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean_target.cmake b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean_target.cmake new file mode 100644 index 000000000..96be95299 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +FILE(REMOVE_RECURSE + "../../lib/libopencv_line_descriptor_pch_dephelp.a" +) diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/depend.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/depend.make new file mode 100644 index 000000000..088bd45be --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for opencv_line_descriptor_pch_dephelp. +# This may be replaced when dependencies are built. diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make new file mode 100644 index 000000000..fdc708b78 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile CXX with /usr/bin/c++ +CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 + +CXX_DEFINES = -D__OPENCV_BUILD=1 + diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/link.txt b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/link.txt new file mode 100644 index 000000000..a5fb23077 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/link.txt @@ -0,0 +1,2 @@ +/usr/bin/ar cr ../../lib/libopencv_line_descriptor_pch_dephelp.a CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o +/usr/bin/ranlib ../../lib/libopencv_line_descriptor_pch_dephelp.a diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/progress.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/progress.make new file mode 100644 index 000000000..6c287f17b --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = +CMAKE_PROGRESS_2 = + diff --git a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/DependInfo.cmake b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/DependInfo.cmake new file mode 100644 index 000000000..50fdc83cf --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/DependInfo.cmake @@ -0,0 +1,13 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + ) +# The set of files for implicit dependencies of each language: + +# Preprocessor definitions for this target. +SET(CMAKE_TARGET_DEFINITIONS + "__OPENCV_BUILD=1" + ) + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + ) diff --git a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make new file mode 100644 index 000000000..8259e81d6 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make @@ -0,0 +1,80 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = /usr/bin/ccmake + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/ubisum/src/opencv + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/ubisum/src/opencv + +# Utility rule file for pch_Generate_opencv_line_descriptor. + +# Include the progress variables for this target. +include modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make + +modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor: modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch + +modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch: modules/line_descriptor/src/precomp.hpp +modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch: modules/line_descriptor/precomp.hpp +modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch: lib/libopencv_line_descriptor_pch_dephelp.a + $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold "Generating precomp.hpp.gch/opencv_line_descriptor_Release.gch" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E make_directory /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp.gch + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ -O3 -DNDEBUG -DNDEBUG -fPIC -DOPENCV_NOSTL -I"/home/ubisum/src/opencv/modules/optim/include" -I"/home/ubisum/src/opencv/modules/features2d/include" -I"/home/ubisum/src/opencv/modules/highgui/include" -I"/home/ubisum/src/opencv/modules/imgproc/include" -I"/home/ubisum/src/opencv/modules/flann/include" -I"/home/ubisum/src/opencv/modules/core/include" -I"/home/ubisum/src/opencv/modules/line_descriptor" -I"/home/ubisum/src/opencv/modules/line_descriptor/src" -I"/home/ubisum/src/opencv/modules/line_descriptor/include" -isystem"/home/ubisum/src/opencv" -isystem"/usr/local/include/eigen3" -D__OPENCV_BUILD=1 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -DCVAPI_EXPORTS -x c++-header -o /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp + +modules/line_descriptor/precomp.hpp: modules/line_descriptor/src/precomp.hpp + $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_2) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold "Generating precomp.hpp" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E copy /home/ubisum/src/opencv/modules/line_descriptor/src/precomp.hpp /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp + +pch_Generate_opencv_line_descriptor: modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor +pch_Generate_opencv_line_descriptor: modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch +pch_Generate_opencv_line_descriptor: modules/line_descriptor/precomp.hpp +pch_Generate_opencv_line_descriptor: modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make +.PHONY : pch_Generate_opencv_line_descriptor + +# Rule to build all files generated by this target. +modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build: pch_Generate_opencv_line_descriptor +.PHONY : modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build + +modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/clean: + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -P CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean.cmake +.PHONY : modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/clean + +modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/depend: + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/depend + diff --git a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean.cmake b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean.cmake new file mode 100644 index 000000000..6d3be5a49 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/pch_Generate_opencv_line_descriptor" + "precomp.hpp.gch/opencv_line_descriptor_Release.gch" + "precomp.hpp" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang) + INCLUDE(CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make new file mode 100644 index 000000000..6c287f17b --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = +CMAKE_PROGRESS_2 = + diff --git a/modules/line_descriptor/CMakeFiles/progress.marks b/modules/line_descriptor/CMakeFiles/progress.marks new file mode 100644 index 000000000..0cfbf0888 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/progress.marks @@ -0,0 +1 @@ +2 diff --git a/modules/line_descriptor/CMakeLists.txt b/modules/line_descriptor/CMakeLists.txt index d27371476..1774c6fab 100644 --- a/modules/line_descriptor/CMakeLists.txt +++ b/modules/line_descriptor/CMakeLists.txt @@ -1,4 +1,4 @@ set(the_description "Line descriptor") -ocv_define_module(line_descriptor opencv_imgproc opencv_optim) +ocv_define_module(line_descriptor opencv_features2d opencv_imgproc opencv_optim) diff --git a/modules/line_descriptor/Makefile b/modules/line_descriptor/Makefile new file mode 100644 index 000000000..8c966d760 --- /dev/null +++ b/modules/line_descriptor/Makefile @@ -0,0 +1,362 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = /usr/bin/ccmake + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/ubisum/src/opencv + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/ubisum/src/opencv + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: install/local +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: install/strip +.PHONY : install/strip/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\" \"main\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -E cmake_progress_start /home/ubisum/src/opencv/CMakeFiles /home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/progress.marks + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/ubisum/src/opencv/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/rule: + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/rule +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/rule + +# Convenience name for target. +example_line_descriptor_lines_extraction: modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/rule +.PHONY : example_line_descriptor_lines_extraction + +# fast build rule for target. +example_line_descriptor_lines_extraction/fast: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build +.PHONY : example_line_descriptor_lines_extraction/fast + +# Convenience name for target. +modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/rule: + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/rule +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/rule + +# Convenience name for target. +opencv_line_descriptor: modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/rule +.PHONY : opencv_line_descriptor + +# fast build rule for target. +opencv_line_descriptor/fast: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build +.PHONY : opencv_line_descriptor/fast + +# Convenience name for target. +modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/rule: + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/rule +.PHONY : modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/rule + +# Convenience name for target. +opencv_line_descriptor_pch_dephelp: modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/rule +.PHONY : opencv_line_descriptor_pch_dephelp + +# fast build rule for target. +opencv_line_descriptor_pch_dephelp/fast: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build +.PHONY : opencv_line_descriptor_pch_dephelp/fast + +# Convenience name for target. +modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/rule: + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/rule +.PHONY : modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/rule + +# Convenience name for target. +pch_Generate_opencv_line_descriptor: modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/rule +.PHONY : pch_Generate_opencv_line_descriptor + +# fast build rule for target. +pch_Generate_opencv_line_descriptor/fast: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build +.PHONY : pch_Generate_opencv_line_descriptor/fast + +opencv_line_descriptor_pch_dephelp.o: opencv_line_descriptor_pch_dephelp.cxx.o +.PHONY : opencv_line_descriptor_pch_dephelp.o + +# target to build an object file +opencv_line_descriptor_pch_dephelp.cxx.o: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.o +.PHONY : opencv_line_descriptor_pch_dephelp.cxx.o + +opencv_line_descriptor_pch_dephelp.i: opencv_line_descriptor_pch_dephelp.cxx.i +.PHONY : opencv_line_descriptor_pch_dephelp.i + +# target to preprocess a source file +opencv_line_descriptor_pch_dephelp.cxx.i: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.i +.PHONY : opencv_line_descriptor_pch_dephelp.cxx.i + +opencv_line_descriptor_pch_dephelp.s: opencv_line_descriptor_pch_dephelp.cxx.s +.PHONY : opencv_line_descriptor_pch_dephelp.s + +# target to generate assembly for a file +opencv_line_descriptor_pch_dephelp.cxx.s: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.s +.PHONY : opencv_line_descriptor_pch_dephelp.cxx.s + +samples/lines_extraction.o: samples/lines_extraction.cpp.o +.PHONY : samples/lines_extraction.o + +# target to build an object file +samples/lines_extraction.cpp.o: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o +.PHONY : samples/lines_extraction.cpp.o + +samples/lines_extraction.i: samples/lines_extraction.cpp.i +.PHONY : samples/lines_extraction.i + +# target to preprocess a source file +samples/lines_extraction.cpp.i: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.i +.PHONY : samples/lines_extraction.cpp.i + +samples/lines_extraction.s: samples/lines_extraction.cpp.s +.PHONY : samples/lines_extraction.s + +# target to generate assembly for a file +samples/lines_extraction.cpp.s: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.s +.PHONY : samples/lines_extraction.cpp.s + +src/BinaryDescriptor.o: src/BinaryDescriptor.cpp.o +.PHONY : src/BinaryDescriptor.o + +# target to build an object file +src/BinaryDescriptor.cpp.o: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o +.PHONY : src/BinaryDescriptor.cpp.o + +src/BinaryDescriptor.i: src/BinaryDescriptor.cpp.i +.PHONY : src/BinaryDescriptor.i + +# target to preprocess a source file +src/BinaryDescriptor.cpp.i: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.i +.PHONY : src/BinaryDescriptor.cpp.i + +src/BinaryDescriptor.s: src/BinaryDescriptor.cpp.s +.PHONY : src/BinaryDescriptor.s + +# target to generate assembly for a file +src/BinaryDescriptor.cpp.s: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.s +.PHONY : src/BinaryDescriptor.cpp.s + +src/line_descriptor_init.o: src/line_descriptor_init.cpp.o +.PHONY : src/line_descriptor_init.o + +# target to build an object file +src/line_descriptor_init.cpp.o: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o +.PHONY : src/line_descriptor_init.cpp.o + +src/line_descriptor_init.i: src/line_descriptor_init.cpp.i +.PHONY : src/line_descriptor_init.i + +# target to preprocess a source file +src/line_descriptor_init.cpp.i: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.i +.PHONY : src/line_descriptor_init.cpp.i + +src/line_descriptor_init.s: src/line_descriptor_init.cpp.s +.PHONY : src/line_descriptor_init.s + +# target to generate assembly for a file +src/line_descriptor_init.cpp.s: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.s +.PHONY : src/line_descriptor_init.cpp.s + +src/precomp.o: src/precomp.cpp.o +.PHONY : src/precomp.o + +# target to build an object file +src/precomp.cpp.o: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o +.PHONY : src/precomp.cpp.o + +src/precomp.i: src/precomp.cpp.i +.PHONY : src/precomp.i + +# target to preprocess a source file +src/precomp.cpp.i: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.i +.PHONY : src/precomp.cpp.i + +src/precomp.s: src/precomp.cpp.s +.PHONY : src/precomp.s + +# target to generate assembly for a file +src/precomp.cpp.s: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.s +.PHONY : src/precomp.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... example_line_descriptor_lines_extraction" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... opencv_line_descriptor" + @echo "... opencv_line_descriptor_pch_dephelp" + @echo "... pch_Generate_opencv_line_descriptor" + @echo "... rebuild_cache" + @echo "... opencv_line_descriptor_pch_dephelp.o" + @echo "... opencv_line_descriptor_pch_dephelp.i" + @echo "... opencv_line_descriptor_pch_dephelp.s" + @echo "... samples/lines_extraction.o" + @echo "... samples/lines_extraction.i" + @echo "... samples/lines_extraction.s" + @echo "... src/BinaryDescriptor.o" + @echo "... src/BinaryDescriptor.i" + @echo "... src/BinaryDescriptor.s" + @echo "... src/line_descriptor_init.o" + @echo "... src/line_descriptor_init.i" + @echo "... src/line_descriptor_init.s" + @echo "... src/precomp.o" + @echo "... src/precomp.i" + @echo "... src/precomp.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/modules/line_descriptor/cmake_install.cmake b/modules/line_descriptor/cmake_install.cmake new file mode 100644 index 000000000..3d2d4c588 --- /dev/null +++ b/modules/line_descriptor/cmake_install.cmake @@ -0,0 +1,82 @@ +# Install script for directory: /home/ubisum/src/opencv/modules/line_descriptor + +# Set the install prefix +IF(NOT DEFINED CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "/usr/local") +ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX) +STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + IF(BUILD_TYPE) + STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + ELSE(BUILD_TYPE) + SET(CMAKE_INSTALL_CONFIG_NAME "Release") + ENDIF(BUILD_TYPE) + MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + +# Set the component getting installed. +IF(NOT CMAKE_INSTALL_COMPONENT) + IF(COMPONENT) + MESSAGE(STATUS "Install component: \"${COMPONENT}\"") + SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + ELSE(COMPONENT) + SET(CMAKE_INSTALL_COMPONENT) + ENDIF(COMPONENT) +ENDIF(NOT CMAKE_INSTALL_COMPONENT) + +# Install shared libraries without execute permission? +IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + SET(CMAKE_INSTALL_SO_NO_EXE "1") +ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "main") + FOREACH(file + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libopencv_line_descriptor.so.3.0.0" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libopencv_line_descriptor.so.3.0" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libopencv_line_descriptor.so" + ) + IF(EXISTS "${file}" AND + NOT IS_SYMLINK "${file}") + FILE(RPATH_CHECK + FILE "${file}" + RPATH "/usr/local/lib") + ENDIF() + ENDFOREACH() + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE SHARED_LIBRARY FILES + "/home/ubisum/src/opencv/lib/libopencv_line_descriptor.so.3.0.0" + "/home/ubisum/src/opencv/lib/libopencv_line_descriptor.so.3.0" + "/home/ubisum/src/opencv/lib/libopencv_line_descriptor.so" + ) + FOREACH(file + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libopencv_line_descriptor.so.3.0.0" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libopencv_line_descriptor.so.3.0" + "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/libopencv_line_descriptor.so" + ) + IF(EXISTS "${file}" AND + NOT IS_SYMLINK "${file}") + FILE(RPATH_CHANGE + FILE "${file}" + OLD_RPATH "/home/ubisum/src/opencv/lib:" + NEW_RPATH "/usr/local/lib") + IF(CMAKE_INSTALL_DO_STRIP) + EXECUTE_PROCESS(COMMAND "/usr/bin/strip" "${file}") + ENDIF(CMAKE_INSTALL_DO_STRIP) + ENDIF() + ENDFOREACH() +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "main") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "main") + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include/opencv2" TYPE FILE FILES "/home/ubisum/src/opencv/modules/line_descriptor/include/opencv2/line_descriptor.hpp") +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "main") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "main") + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include/opencv2/line_descriptor" TYPE FILE FILES "/home/ubisum/src/opencv/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp") +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "main") + +IF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "main") + FILE(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/include/opencv2/line_descriptor" TYPE FILE FILES "/home/ubisum/src/opencv/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp") +ENDIF(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "main") + diff --git a/modules/line_descriptor/include/opencv2/line_descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor.hpp index 7fe76673f..9ed31a256 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor.hpp @@ -43,7 +43,7 @@ #define __OPENCV_LINE_DESCRIPTOR_HPP__ #include "opencv2/line_descriptor/descriptor.hpp" -#include "opencv2/core.hpp" +//#include "opencv2/core.hpp" namespace cv { diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp index 22155c6fc..c765310b0 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/LineStructure.hpp @@ -88,15 +88,15 @@ struct OctaveSingleLine { /*endPoints, the coordinate origin is the top-left corner of the original image. *startPointX = sPointInOctaveX * (factor)^octaveCount; */ - float startPointX; - float startPointY; - float endPointX; - float endPointY; + float startPointX; + float startPointY; + float endPointX; + float endPointY; //endPoints, the coordinate origin is the top-left corner of the octave image. - float sPointInOctaveX; - float sPointInOctaveY; - float ePointInOctaveX; - float ePointInOctaveY; + float sPointInOctaveX; + float sPointInOctaveY; + float ePointInOctaveX; + float ePointInOctaveY; //direction of a line, the angle between positive line direction (dark side is in the left) and positive X axis. float direction; //the summation of gradient magnitudes of pixels on lines diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index 6887b9cdb..2637270ed 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -48,6 +48,8 @@ #include "LineStructure.hpp" #include "opencv2/core.hpp" +#include + namespace cv @@ -76,7 +78,7 @@ namespace cv }; - class CV_EXPORTS_W BinaryDescriptor : public Feature2D + class CV_EXPORTS_W BinaryDescriptor: public Feature2D { public: @@ -117,8 +119,9 @@ namespace cv BinaryDescriptor::Params()); /* constructors with smart pointers */ - CV_EXPORTS Ptr createBinaryDescriptor(); - CV_EXPORTS Ptr createBinaryDescriptor(Params parameters); + static Ptr createBinaryDescriptor(); + static Ptr createBinaryDescriptor(Params parameters); + ~BinaryDescriptor(); /* read parameters from a FileNode object and store them (class function ) */ virtual void read( const cv::FileNode& fn ); @@ -131,6 +134,10 @@ namespace cv CV_OUT std::vector& keypoints, const Mat& mask=Mat() ); + CV_WRAP void detectKL( const Mat& image, + CV_OUT std::vector& keypoints, + const Mat& mask=Mat() ); + /* requires line detection (more than one image) */ void detect( const std::vector& images, std::vector >& keypoints, @@ -158,6 +165,7 @@ namespace cv /* check whether Gaussian pyramids were created */ bool empty() const; + /* definition of operator (), as required by Feature2D */ CV_WRAP_AS(detectAndCompute) virtual void operator()( InputArray image, InputArray mask, CV_OUT std::vector& keypoints, @@ -166,14 +174,22 @@ namespace cv protected: + /* implementation of line detection */ virtual void detectImpl( const Mat& image, std::vector& keypoints, const Mat& mask=Mat() ) const; + virtual void detectImplKL( const Mat& image, + std::vector& keypoints, + const Mat& mask=Mat() ) const; + + + /* implementation of descriptors' computation */ virtual void computeImpl( const Mat& image, std::vector& keypoints, Mat& descriptors ) const; + /* function inherited by Algorithm */ AlgorithmInfo* info() const; private: diff --git a/modules/line_descriptor/samples/CMakeLists.txt~ b/modules/line_descriptor/samples/CMakeLists.txt~ new file mode 100644 index 000000000..4b8b6dca3 --- /dev/null +++ b/modules/line_descriptor/samples/CMakeLists.txt~ @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 2.8) +project(map_test) +find_package(OpenCV REQUIRED) + +set(SOURCES lines_extraction.cpp ../src/BinaryDescriptor.cpp) + +include_directories(${OpenCV_INCLUDE_DIRS}) +add_executable(lines_extraction ${SOURCES} ${HEADERS}) +target_link_libraries(lines_extraction ${OpenCV_LIBS}) diff --git a/modules/line_descriptor/samples/lines_extraction.cpp b/modules/line_descriptor/samples/lines_extraction.cpp index 8b1378917..a71bc44cb 100644 --- a/modules/line_descriptor/samples/lines_extraction.cpp +++ b/modules/line_descriptor/samples/lines_extraction.cpp @@ -1 +1,83 @@ +#include + +#include "opencv2/core/utility.hpp" +#include "opencv2/core/private.hpp" +#include +#include +#include + +#include + +using namespace cv; +using namespace std; + +static const char* keys = +{ + "{@image_path | | Image path }" +}; + + +int main( int argc, char** argv ) +{ + /* get parameters from comand line */ + CommandLineParser parser( argc, argv, keys ); + String image_path = parser.get( 0 ); + + if(image_path.empty()) + { + // help(); + return -1; + } + + /* load image */ + cv::Mat imageMat = imread(image_path, 0); + if(imageMat.data == NULL) + { + std::cout << "Error, image could not be loaded. Please, check its path" << std::endl; + } + + /* create a ramdom binary mask */ +// cv::Mat mask(imageMat.size(), CV_8UC1); +// cv::randu(mask, Scalar::all(0), Scalar::all(1)); + cv::Mat mask = Mat::ones(imageMat.size(), CV_8UC1); + + /* create a pointer to a BinaryDescriptor object with deafult parameters */ + Ptr bd = BinaryDescriptor::createBinaryDescriptor(); + + /* create a structure to store extracted lines */ + vector lines; + + /* extract lines */ + bd->detectKL(imageMat, lines, mask); + + /* draw lines extracted from octave 0 */ + cv::Mat output = imageMat.clone(); + cvtColor(output, output, COLOR_GRAY2BGR); + for(size_t i = 0; i& keypoints, + const Mat& mask ) +{ + detectImplKL(image, keypoints, mask); +} + + /* requires line detection (more than one image) */ void BinaryDescriptor::detect( const std::vector& images, std::vector >& keypoints, @@ -332,10 +345,73 @@ void BinaryDescriptor::detect( const std::vector& images, } } +void BinaryDescriptor::detectImplKL( const Mat& image, + std::vector& keypoints, + const Mat& mask ) const +{ + + /*check whether image depth is different from 0 */ + if(image.depth() != 0) + { + std::cout << "Warning, depth image!= 0" << std::endl; + CV_Assert(false); + } + + /* create a pointer to self */ + BinaryDescriptor *bn = const_cast(this); + + /* compute Gaussian pyramid */ + bn->computeGaussianPyramid(image); + + /* detect and arrange lines across octaves */ + ScaleLines sl; + bn->OctaveKeyLines(sl); + + + /* fill KeyLines vector */ + for(int i = 0; i<(int)sl.size(); i++) + { + for(size_t j = 0; j& keypoints, const Mat& mask) const { + /*check whether image depth is different from 0 */ if(image.depth() != 0) { @@ -346,7 +422,6 @@ void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keyp /* create a pointer to self */ BinaryDescriptor *bn = const_cast(this); - /* compute Gaussian pyramid */ bn->computeGaussianPyramid(image); @@ -354,6 +429,8 @@ void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keyp ScaleLines sl; bn->OctaveKeyLines(sl); + + /* fill KeyLines vector */ for(int i = 0; i<(int)sl.size(); i++) { @@ -389,16 +466,20 @@ void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keyp /* store KeyLine */ keypoints.push_back(kl); } + } /* delete undesired KeyLines, according to input mask */ - for(size_t keyCounter = 0; keyCounter(&keypoints[keyCounter]); - if(mask.at(kl->startPointX, kl->startPointY) == 0 && - mask.at(kl->endPointX, kl->endPointY) == 0) - keypoints.erase(keypoints.begin() + keyCounter); - } +// for(size_t keyCounter = 0; keyCounter(&keypoints[keyCounter]); +// std::cout << (mask.size()).height << " " << (mask.size()).width << " " << +// kl->startPointX << " " << kl->startPointY << " " << +// kl->endPointX << " " << kl->endPointY << std::endl; +// if(mask.at(kl->startPointX, kl->startPointY) == 0 && +// mask.at(kl->endPointX, kl->endPointY) == 0) +// keypoints.erase(keypoints.begin() + keyCounter); +// } } @@ -567,6 +648,7 @@ void BinaryDescriptor::computeImpl( const Mat& image, int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) { + /* final number of extracted lines */ unsigned int numOfFinalLine = 0; @@ -578,7 +660,7 @@ int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) /* create an LSD detector and store a pointer to it */ cv::Ptr ls = cv::createLineSegmentDetector(cv::LSD_REFINE_STD); - /* prepare a vectore to host extracted segments */ + /* prepare a vector to host extracted segments */ std::vector lines_std; /* use detector to extract segments */ @@ -590,6 +672,7 @@ int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) /* update lines counter */ numOfFinalLine += lines_std.size(); + } /* prepare a vector to store octave information associated to extracted lines */ @@ -615,15 +698,17 @@ int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) octaveLines[numOfFinalLine].lineIDInScaleLineVec = lineIDInScaleLineVec; /* compute absolute value of difference between X coordinates of line's extreme points */ - dx = (extractedLines[0][lineCurId])[0] - (extractedLines[0][lineCurId])[2]; + dx = fabs((extractedLines[0][lineCurId])[0] - (extractedLines[0][lineCurId])[2]); /* compute absolute value of difference between Y coordinates of line's extreme points */ - dy = (extractedLines[0][lineCurId])[1] - (extractedLines[0][lineCurId])[3]; + dy = fabs((extractedLines[0][lineCurId])[1] - (extractedLines[0][lineCurId])[3]); /* compute line's length */ octaveLines[numOfFinalLine].lineLength = sqrt(dx*dx+dy*dy); /* update counters */ numOfFinalLine++; lineIDInScaleLineVec++; + + } /* create and fill an array to store scale factors */ @@ -650,149 +735,149 @@ int BinaryDescriptor::OctaveKeyLines(ScaleLines &keyLines) float lp0,lp1, lp2, lp3, np0,np1, np2, np3; /* loop over list of octaves */ - for(unsigned int octaveCount = 1; octaveCount<(unsigned int)params.numOfOctave_; octaveCount++) - { - /*for each line in current octave image, find their corresponding lines - in the octaveLines, - give them the same value of lineIDInScaleLineVec*/ + for(unsigned int octaveCount = 1; octaveCount<(unsigned int)params.numOfOctave_; octaveCount++) + { + /*for each line in current octave image, find their corresponding lines + in the octaveLines, + give them the same value of lineIDInScaleLineVec*/ - /* loop over list of lines extracted from current octave */ - for(unsigned int lineCurId=0;lineCurId6)?(tempValue):6; + nearThreshold = (nearThreshold<12)?nearThreshold:12; + + /* compute scaled lenght of current line */ + dx = fabs((extractedLines[octaveCount][lineCurId])[0]-(extractedLines[octaveCount][lineCurId][2]));//x1-x2 + dy = fabs((extractedLines[octaveCount][lineCurId])[1]-(extractedLines[octaveCount][lineCurId][3]));//y1-y2 + length = scale[octaveCount] * sqrt(dx*dx+dy*dy); + + minEndPointDis = 12; + /* loop over the octave representations of all lines */ + for(unsigned int lineNextId=0; lineNextId0.1745 && (twoPI - direction>0.1745)) + continue; + + /*now check whether current line and next line are near to each other. + Get known term from equation to be compared */ + rho2 = scale[octaveID] * fabs(line_equation_to_compare[2]); + + /* compute difference between known terms */ + near = fabs(rho1 - rho2); + + /* two lines are not close in the image */ + if(near>nearThreshold) + continue; + + /* get the extreme points of the two lines */ + lp0 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[0]; + lp1 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[1]; + lp2 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[2]; + lp3 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[3]; + np0 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[0]; + np1 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[1]; + np2 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[2]; + np3 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[3]; + + /* get the distance between the two leftmost extremes of lines + L1(0,1)<->L2(0,1) */ + dx = lp0 - np0; + dy = lp1 - np1; + endPointDis = sqrt(dx*dx + dy*dy); + + /* set momentaneously min and max distance between lines to + the one between left extremes */ + minLocalDis = endPointDis; + maxLocalDis = endPointDis; + + /* compute distance between right extremes + L1(2,3)<->L2(2,3) */ + dx = lp2 - np2; + dy = lp3 - np3; + endPointDis = sqrt(dx*dx + dy*dy); + + /* update (if necessary) min and max distance between lines */ + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + + /* compute distance between left extreme of current line and + right extreme of line to be compared + L1(0,1)<->L2(2,3) */ + dx = lp0 - np2; + dy = lp1 - np3; + endPointDis = sqrt(dx*dx + dy*dy); + + /* update (if necessary) min and max distance between lines */ + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + + /* compute distance between right extreme of current line and + left extreme of line to be compared + L1(2,3)<->L2(0,1) */ + dx = lp2 - np0; + dy = lp3 - np1; + endPointDis = sqrt(dx*dx + dy*dy); + + /* update (if necessary) min and max distance between lines */ + minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; + + /* check whether conditions for considering line to be compared + wremoveInvalidPointsorth to be inserted in the same LineVec are satisfied */ + if((maxLocalDis<0.8*(length+octaveLines[lineNextId].lineLength)) + &&(minLocalDis6)?(tempValue):6; - nearThreshold = (nearThreshold<12)?nearThreshold:12; - - /* compute scaled lenght of current line */ - dx = fabs((extractedLines[octaveCount][lineCurId])[0]-(extractedLines[octaveCount][lineCurId][2]));//x1-x2 - dy = fabs((extractedLines[octaveCount][lineCurId])[1]-(extractedLines[octaveCount][lineCurId][3]));//y1-y2 - length = scale[octaveCount] * sqrt(dx*dx+dy*dy); - - minEndPointDis = 12; - /* loop over the octave representations of all lines */ - for(unsigned int lineNextId=0; lineNextId0.1745 && (twoPI - direction>0.1745)) - continue; - - /*now check whether current line and next line are near to each other. - Get known term from equation to be compared */ - rho2 = scale[octaveID] * fabs(line_equation_to_compare[2]); - - /* compute difference between known terms */ - near = fabs(rho1 - rho2); - - /* two lines are not close in the image */ - if(near>nearThreshold) - continue; - - /* get the extreme points of the two lines */ - lp0 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[0]; - lp1 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[1]; - lp2 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[2]; - lp3 = scale[octaveCount] * (extractedLines[octaveCount][lineCurId])[3]; - np0 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[0]; - np1 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[1]; - np2 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[2]; - np3 = scale[octaveID] * (extractedLines[octaveID][lineIDInOctave])[3]; - - /* get the distance between the two leftmost extremes of lines - L1(0,1)<->L2(0,1) */ - dx = lp0 - np0; - dy = lp1 - np1; - endPointDis = sqrt(dx*dx + dy*dy); - - /* set momentaneously min and max distance between lines to - the one between left extremes */ - minLocalDis = endPointDis; - maxLocalDis = endPointDis; - - /* compute distance between right extremes - L1(2,3)<->L2(2,3) */ - dx = lp2 - np2; - dy = lp3 - np3; - endPointDis = sqrt(dx*dx + dy*dy); - - /* update (if necessary) min and max distance between lines */ - minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; - - /* compute distance between left extreme of current line and - right extreme of line to be compared - L1(0,1)<->L2(2,3) */ - dx = lp0 - np2; - dy = lp1 - np3; - endPointDis = sqrt(dx*dx + dy*dy); - - /* update (if necessary) min and max distance between lines */ - minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; - - /* compute distance between right extreme of current line and - left extreme of line to be compared - L1(2,3)<->L2(0,1) */ - dx = lp2 - np0; - dy = lp3 - np1; - endPointDis = sqrt(dx*dx + dy*dy); - - /* update (if necessary) min and max distance between lines */ - minLocalDis = (endPointDismaxLocalDis)?endPointDis:maxLocalDis; - - /* check whether conditions for considering line to be compared - wremoveInvalidPointsorth to be inserted in the same LineVec are satisfied */ - if((maxLocalDis<0.8*(length+octaveLines[lineNextId].lineLength)) - &&(minLocalDis Date: Wed, 25 Jun 2014 16:10:46 +0200 Subject: [PATCH 11/67] Lines extraction and descriptors testing completed --- .../.line_descriptor/cmake_install.cmake | 2 +- modules/line_descriptor/CMakeCache.txt | 256 ----------------- .../DependInfo.cmake | 25 ++ .../build.make | 113 ++++++++ .../cmake_clean.cmake | 10 + .../depend.make | 2 + .../flags.make | 8 + .../link.txt | 1 + .../progress.make | 2 + .../flags.make | 2 +- .../link.txt | 2 +- .../opencv_line_descriptor.dir/flags.make | 2 +- .../opencv_line_descriptor.dir/link.txt | 2 +- .../flags.make | 2 +- .../progress.make | 2 +- .../build.make | 14 +- .../cmake_clean.cmake | 2 +- .../progress.make | 2 +- .../line_descriptor/CMakeFiles/progress.marks | 2 +- modules/line_descriptor/Makefile | 42 +++ modules/line_descriptor/cmake_install.cmake | 2 +- .../line_descriptor/doc/line_descriptor.rst | 79 ++++++ .../line_descriptor/doc/line_descriptor.rst~ | 79 ++++++ .../opencv2/line_descriptor/descriptor.hpp | 53 ++-- .../line_descriptor/samples/CMakeLists.txt~~ | 9 + modules/line_descriptor/samples/bak.txt | 9 + .../samples/compute_descriptors.cpp | 85 ++++++ .../samples/lines_extraction.cpp | 16 +- .../line_descriptor/src/BinaryDescriptor.cpp | 266 ++++++------------ 29 files changed, 617 insertions(+), 474 deletions(-) create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/DependInfo.cmake create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/cmake_clean.cmake create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/depend.make create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/flags.make create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/link.txt create mode 100644 modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/progress.make create mode 100644 modules/line_descriptor/doc/line_descriptor.rst create mode 100644 modules/line_descriptor/doc/line_descriptor.rst~ create mode 100644 modules/line_descriptor/samples/CMakeLists.txt~~ create mode 100644 modules/line_descriptor/samples/bak.txt create mode 100644 modules/line_descriptor/samples/compute_descriptors.cpp diff --git a/modules/line_descriptor/.line_descriptor/cmake_install.cmake b/modules/line_descriptor/.line_descriptor/cmake_install.cmake index 2544d4049..064284409 100644 --- a/modules/line_descriptor/.line_descriptor/cmake_install.cmake +++ b/modules/line_descriptor/.line_descriptor/cmake_install.cmake @@ -12,7 +12,7 @@ IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") ELSE(BUILD_TYPE) - SET(CMAKE_INSTALL_CONFIG_NAME "Release") + SET(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo") ENDIF(BUILD_TYPE) MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) diff --git a/modules/line_descriptor/CMakeCache.txt b/modules/line_descriptor/CMakeCache.txt index 6de7fb331..32d5f7d0c 100644 --- a/modules/line_descriptor/CMakeCache.txt +++ b/modules/line_descriptor/CMakeCache.txt @@ -14,170 +14,11 @@ # EXTERNAL cache entries ######################## -//Path to a program. -CMAKE_AR:FILEPATH=/usr/bin/ar - -//For backwards compatibility, what version of CMake commands and -// syntax should this version of CMake try to support. -CMAKE_BACKWARDS_COMPATIBILITY:STRING=2.4 - -//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or -// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. -CMAKE_BUILD_TYPE:STRING= - -//Enable/Disable color output during build. -CMAKE_COLOR_MAKEFILE:BOOL=ON - -//CXX compiler. -CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ - -//Flags used by the compiler during all build types. -CMAKE_CXX_FLAGS:STRING= - -//Flags used by the compiler during debug builds. -CMAKE_CXX_FLAGS_DEBUG:STRING=-g - -//Flags used by the compiler during release minsize builds. -CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the compiler during release builds (/MD /Ob1 /Oi -// /Ot /Oy /Gs will produce slightly less optimized but smaller -// files). -CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the compiler during Release with Debug Info builds. -CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g - -//C compiler. -CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc - -//Flags used by the compiler during all build types. -CMAKE_C_FLAGS:STRING= - -//Flags used by the compiler during debug builds. -CMAKE_C_FLAGS_DEBUG:STRING=-g - -//Flags used by the compiler during release minsize builds. -CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the compiler during release builds (/MD /Ob1 /Oi -// /Ot /Oy /Gs will produce slightly less optimized but smaller -// files). -CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the compiler during Release with Debug Info builds. -CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g - -//Flags used by the linker. -CMAKE_EXE_LINKER_FLAGS:STRING=' ' - -//Flags used by the linker during debug builds. -CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during release minsize builds. -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during release builds. -CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during Release with Debug Info builds. -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Enable/Disable output of compile commands during generation. -CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF - -//Install path prefix, prepended onto install directories. -CMAKE_INSTALL_PREFIX:PATH=/usr/local - -//Path to a program. -CMAKE_LINKER:FILEPATH=/usr/bin/ld - -//Path to a program. -CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make - -//Flags used by the linker during the creation of modules. -CMAKE_MODULE_LINKER_FLAGS:STRING=' ' - -//Flags used by the linker during debug builds. -CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during release minsize builds. -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during release builds. -CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during Release with Debug Info builds. -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_NM:FILEPATH=/usr/bin/nm - -//Path to a program. -CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy - -//Path to a program. -CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump - -//Value Computed by CMake -CMAKE_PROJECT_NAME:STATIC=Project - -//Path to a program. -CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib - -//Flags used by the linker during the creation of dll's. -CMAKE_SHARED_LINKER_FLAGS:STRING=' ' - -//Flags used by the linker during debug builds. -CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during release minsize builds. -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during release builds. -CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during Release with Debug Info builds. -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//If set, runtime paths are not added when using shared libraries. -CMAKE_SKIP_RPATH:BOOL=NO - -//Path to a program. -CMAKE_STRIP:FILEPATH=/usr/bin/strip - -//If true, cmake will use relative paths in makefiles and projects. -CMAKE_USE_RELATIVE_PATHS:BOOL=OFF - -//If this value is on, makefiles will be generated without the -// .SILENT directive, and all commands will be echoed to the console -// during the make. This is useful for debugging only. With Visual -// Studio IDE projects all commands are done without /nologo. -CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE - -//Single output directory for building all executables. -EXECUTABLE_OUTPUT_PATH:PATH= - -//Single output directory for building all libraries. -LIBRARY_OUTPUT_PATH:PATH= - -//Value Computed by CMake -Project_BINARY_DIR:STATIC=/home/ubisum/src/opencv_contrib/modules/line_descriptor - -//Value Computed by CMake -Project_SOURCE_DIR:STATIC=/home/ubisum/src/opencv_contrib/modules/line_descriptor - ######################## # INTERNAL cache entries ######################## -//ADVANCED property for variable: CMAKE_AR -CMAKE_AR-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_BUILD_TOOL -CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1 -//What is the target build tool cmake is generating for. -CMAKE_BUILD_TOOL:INTERNAL=/usr/bin/make //This is the directory where this CMakeCache.txt was created CMAKE_CACHEFILE_DIR:INTERNAL=/home/ubisum/src/opencv_contrib/modules/line_descriptor //Major version of cmake used to create the current loaded cache @@ -186,111 +27,14 @@ CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2 CMAKE_CACHE_MINOR_VERSION:INTERNAL=8 //Patch version of cmake used to create the current loaded cache CMAKE_CACHE_PATCH_VERSION:INTERNAL=7 -//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE -CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 //Path to CMake executable. CMAKE_COMMAND:INTERNAL=/usr/bin/cmake //Path to cpack program executable. CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack //Path to ctest program executable. CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest -//ADVANCED property for variable: CMAKE_CXX_COMPILER -CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 -CMAKE_CXX_COMPILER_WORKS:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS -CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG -CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL -CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE -CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO -CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_COMPILER -CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 -CMAKE_C_COMPILER_WORKS:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS -CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG -CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL -CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE -CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO -CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//Result of TRY_COMPILE -CMAKE_DETERMINE_CXX_ABI_COMPILED:INTERNAL=TRUE -//Result of TRY_COMPILE -CMAKE_DETERMINE_C_ABI_COMPILED:INTERNAL=TRUE //Path to cache edit program executable. CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake -//Executable file format -CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS -CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG -CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE -CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS -CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 -//Name of generator. -CMAKE_GENERATOR:INTERNAL=Unix Makefiles -//Start directory with the top level CMakeLists.txt file for this -// project -CMAKE_HOME_DIRECTORY:INTERNAL=/home/ubisum/src/opencv_contrib/modules/line_descriptor -//Install .so files without execute permission. -CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 -//ADVANCED property for variable: CMAKE_LINKER -CMAKE_LINKER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MAKE_PROGRAM -CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS -CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG -CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE -CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_NM -CMAKE_NM-ADVANCED:INTERNAL=1 -//number of local generators -CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJCOPY -CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJDUMP -CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RANLIB -CMAKE_RANLIB-ADVANCED:INTERNAL=1 //Path to CMake installation. CMAKE_ROOT:INTERNAL=/usr/share/cmake-2.8 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS -CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG -CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE -CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_RPATH -CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STRIP -CMAKE_STRIP-ADVANCED:INTERNAL=1 -//uname command -CMAKE_UNAME:INTERNAL=/bin/uname -//ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS -CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE -CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/DependInfo.cmake b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/DependInfo.cmake new file mode 100644 index 000000000..cc3580f53 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/DependInfo.cmake @@ -0,0 +1,25 @@ +# The set of languages for which implicit dependencies are needed: +SET(CMAKE_DEPENDS_LANGUAGES + "CXX" + ) +# The set of files for implicit dependencies of each language: +SET(CMAKE_DEPENDS_CHECK_CXX + "/home/ubisum/src/opencv/modules/line_descriptor/samples/compute_descriptors.cpp" "/home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o" + ) +SET(CMAKE_CXX_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +SET(CMAKE_TARGET_DEFINITIONS + "__OPENCV_BUILD=1" + ) + +# Targets to which this target links. +SET(CMAKE_TARGET_LINKED_INFO_FILES + "/home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/core/CMakeFiles/opencv_core.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/flann/CMakeFiles/opencv_flann.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/imgproc/CMakeFiles/opencv_imgproc.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/highgui/CMakeFiles/opencv_highgui.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/features2d/CMakeFiles/opencv_features2d.dir/DependInfo.cmake" + "/home/ubisum/src/opencv/modules/optim/CMakeFiles/opencv_optim.dir/DependInfo.cmake" + ) diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make new file mode 100644 index 000000000..50ecdd29c --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make @@ -0,0 +1,113 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = /usr/bin/ccmake + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/ubisum/src/opencv + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/ubisum/src/opencv + +# Include any dependencies generated for this target. +include modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/depend.make + +# Include the progress variables for this target. +include modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/progress.make + +# Include the compile flags for this target's objects. +include modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/flags.make + +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o: modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/flags.make +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o: modules/line_descriptor/samples/compute_descriptors.cpp + $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_1) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o -c /home/ubisum/src/opencv/modules/line_descriptor/samples/compute_descriptors.cpp + +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.i" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -E /home/ubisum/src/opencv/modules/line_descriptor/samples/compute_descriptors.cpp > CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.i + +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.s" + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ $(CXX_DEFINES) $(CXX_FLAGS) -S /home/ubisum/src/opencv/modules/line_descriptor/samples/compute_descriptors.cpp -o CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.s + +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o.requires: +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o.requires + +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o.provides: modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o.requires + $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o.provides.build +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o.provides + +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o.provides.build: modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o + +# Object files for target example_line_descriptor_compute_descriptors +example_line_descriptor_compute_descriptors_OBJECTS = \ +"CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o" + +# External object files for target example_line_descriptor_compute_descriptors +example_line_descriptor_compute_descriptors_EXTERNAL_OBJECTS = + +bin/example_line_descriptor_compute_descriptors: modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o +bin/example_line_descriptor_compute_descriptors: lib/libopencv_line_descriptor.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_core.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_flann.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_imgproc.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_highgui.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_features2d.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_optim.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_highgui.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_flann.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_imgproc.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: lib/libopencv_core.so.3.0.0 +bin/example_line_descriptor_compute_descriptors: modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make +bin/example_line_descriptor_compute_descriptors: modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX executable ../../bin/example_line_descriptor_compute_descriptors" + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/example_line_descriptor_compute_descriptors.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build: bin/example_line_descriptor_compute_descriptors +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build + +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/requires: modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o.requires +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/requires + +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/clean: + cd /home/ubisum/src/opencv/modules/line_descriptor && $(CMAKE_COMMAND) -P CMakeFiles/example_line_descriptor_compute_descriptors.dir/cmake_clean.cmake +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/clean + +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/depend: + cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv /home/ubisum/src/opencv/modules/line_descriptor /home/ubisum/src/opencv/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/depend + diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/cmake_clean.cmake b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/cmake_clean.cmake new file mode 100644 index 000000000..c8eb9089a --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +FILE(REMOVE_RECURSE + "CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o" + "../../bin/example_line_descriptor_compute_descriptors.pdb" + "../../bin/example_line_descriptor_compute_descriptors" +) + +# Per-language clean rules from dependency scanning. +FOREACH(lang CXX) + INCLUDE(CMakeFiles/example_line_descriptor_compute_descriptors.dir/cmake_clean_${lang}.cmake OPTIONAL) +ENDFOREACH(lang) diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/depend.make b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/depend.make new file mode 100644 index 000000000..3d9fb1e74 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for example_line_descriptor_compute_descriptors. +# This may be replaced when dependencies are built. diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/flags.make b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/flags.make new file mode 100644 index 000000000..d681e8fff --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/flags.make @@ -0,0 +1,8 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.8 + +# compile CXX with /usr/bin/c++ +CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mssse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O2 -g -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 + +CXX_DEFINES = -D__OPENCV_BUILD=1 + diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/link.txt b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/link.txt new file mode 100644 index 000000000..ac9d22721 --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mssse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O2 -g CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o -o ../../bin/example_line_descriptor_compute_descriptors -rdynamic ../../lib/libopencv_line_descriptor.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_features2d.so.3.0.0 ../../lib/libopencv_optim.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 -Wl,-rpath,/home/ubisum/src/opencv/lib diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/progress.make b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/progress.make new file mode 100644 index 000000000..225de343d --- /dev/null +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/progress.make @@ -0,0 +1,2 @@ +CMAKE_PROGRESS_1 = + diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/flags.make b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/flags.make index fdc708b78..d681e8fff 100644 --- a/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/flags.make +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/flags.make @@ -2,7 +2,7 @@ # Generated by "Unix Makefiles" Generator, CMake Version 2.8 # compile CXX with /usr/bin/c++ -CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 +CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mssse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O2 -g -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 CXX_DEFINES = -D__OPENCV_BUILD=1 diff --git a/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt index 29ca766ae..0c2816f0b 100644 --- a/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt +++ b/modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/link.txt @@ -1 +1 @@ -/usr/bin/c++ -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o -o ../../bin/example_line_descriptor_lines_extraction -rdynamic ../../lib/libopencv_line_descriptor.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_features2d.so.3.0.0 ../../lib/libopencv_optim.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 -Wl,-rpath,/home/ubisum/src/opencv/lib +/usr/bin/c++ -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mssse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O2 -g CMakeFiles/example_line_descriptor_lines_extraction.dir/samples/lines_extraction.cpp.o -o ../../bin/example_line_descriptor_lines_extraction -rdynamic ../../lib/libopencv_line_descriptor.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_features2d.so.3.0.0 ../../lib/libopencv_optim.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 -Wl,-rpath,/home/ubisum/src/opencv/lib diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make index 99f443243..33274c10e 100644 --- a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/flags.make @@ -2,7 +2,7 @@ # Generated by "Unix Makefiles" Generator, CMake Version 2.8 # compile CXX with /usr/bin/c++ -CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -fPIC -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 +CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mssse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O2 -g -fPIC -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 CXX_DEFINES = -DCVAPI_EXPORTS -D__OPENCV_BUILD=1 -DOPENCV_NOSTL diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/link.txt b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/link.txt index d1894461d..1dbeab4ef 100644 --- a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/link.txt +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor.dir/link.txt @@ -1 +1 @@ -/usr/bin/c++ -fPIC -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -shared -Wl,-soname,libopencv_line_descriptor.so.3.0 -o ../../lib/libopencv_line_descriptor.so.3.0.0 CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o ../../lib/libopencv_core.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_features2d.so.3.0.0 ../../lib/libopencv_optim.so.3.0.0 -ldl -lm -lpthread -lrt ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 -Wl,-rpath,/home/ubisum/src/opencv/lib: +/usr/bin/c++ -fPIC -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mssse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O2 -g -shared -Wl,-soname,libopencv_line_descriptor.so.3.0 -o ../../lib/libopencv_line_descriptor.so.3.0.0 CMakeFiles/opencv_line_descriptor.dir/src/line_descriptor_init.cpp.o CMakeFiles/opencv_line_descriptor.dir/src/BinaryDescriptor.cpp.o CMakeFiles/opencv_line_descriptor.dir/src/precomp.cpp.o ../../lib/libopencv_core.so.3.0.0 ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_features2d.so.3.0.0 ../../lib/libopencv_optim.so.3.0.0 -ldl -lm -lpthread -lrt -ltbb ../../lib/libopencv_flann.so.3.0.0 ../../lib/libopencv_highgui.so.3.0.0 ../../lib/libopencv_imgproc.so.3.0.0 ../../lib/libopencv_core.so.3.0.0 -Wl,-rpath,/home/ubisum/src/opencv/lib: diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make index fdc708b78..d681e8fff 100644 --- a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/flags.make @@ -2,7 +2,7 @@ # Generated by "Unix Makefiles" Generator, CMake Version 2.8 # compile CXX with /usr/bin/c++ -CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 +CXX_FLAGS = -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mssse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -O2 -g -I/home/ubisum/src/opencv/modules/optim/include -I/home/ubisum/src/opencv/modules/features2d/include -I/home/ubisum/src/opencv/modules/highgui/include -I/home/ubisum/src/opencv/modules/imgproc/include -I/home/ubisum/src/opencv/modules/flann/include -I/home/ubisum/src/opencv/modules/core/include -I/home/ubisum/src/opencv/modules/line_descriptor -I/home/ubisum/src/opencv/modules/line_descriptor/src -I/home/ubisum/src/opencv/modules/line_descriptor/include -I/home/ubisum/src/opencv -isystem /usr/local/include/eigen3 CXX_DEFINES = -D__OPENCV_BUILD=1 diff --git a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/progress.make b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/progress.make index 6c287f17b..37a7596d0 100644 --- a/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/progress.make +++ b/modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/progress.make @@ -1,3 +1,3 @@ -CMAKE_PROGRESS_1 = +CMAKE_PROGRESS_1 = 90 CMAKE_PROGRESS_2 = diff --git a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make index 8259e81d6..2bce212fc 100644 --- a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make +++ b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make @@ -45,15 +45,15 @@ CMAKE_BINARY_DIR = /home/ubisum/src/opencv # Include the progress variables for this target. include modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make -modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor: modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch +modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor: modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_RelWithDebInfo.gch -modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch: modules/line_descriptor/src/precomp.hpp -modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch: modules/line_descriptor/precomp.hpp -modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch: lib/libopencv_line_descriptor_pch_dephelp.a +modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_RelWithDebInfo.gch: modules/line_descriptor/src/precomp.hpp +modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_RelWithDebInfo.gch: modules/line_descriptor/precomp.hpp +modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_RelWithDebInfo.gch: lib/libopencv_line_descriptor_pch_dephelp.a $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_1) - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold "Generating precomp.hpp.gch/opencv_line_descriptor_Release.gch" + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold "Generating precomp.hpp.gch/opencv_line_descriptor_RelWithDebInfo.gch" cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E make_directory /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp.gch - cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ -O3 -DNDEBUG -DNDEBUG -fPIC -DOPENCV_NOSTL -I"/home/ubisum/src/opencv/modules/optim/include" -I"/home/ubisum/src/opencv/modules/features2d/include" -I"/home/ubisum/src/opencv/modules/highgui/include" -I"/home/ubisum/src/opencv/modules/imgproc/include" -I"/home/ubisum/src/opencv/modules/flann/include" -I"/home/ubisum/src/opencv/modules/core/include" -I"/home/ubisum/src/opencv/modules/line_descriptor" -I"/home/ubisum/src/opencv/modules/line_descriptor/src" -I"/home/ubisum/src/opencv/modules/line_descriptor/include" -isystem"/home/ubisum/src/opencv" -isystem"/usr/local/include/eigen3" -D__OPENCV_BUILD=1 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -DCVAPI_EXPORTS -x c++-header -o /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp + cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/c++ -O2 -g -fPIC -DOPENCV_NOSTL -I"/home/ubisum/src/opencv/modules/optim/include" -I"/home/ubisum/src/opencv/modules/features2d/include" -I"/home/ubisum/src/opencv/modules/highgui/include" -I"/home/ubisum/src/opencv/modules/imgproc/include" -I"/home/ubisum/src/opencv/modules/flann/include" -I"/home/ubisum/src/opencv/modules/core/include" -I"/home/ubisum/src/opencv/modules/line_descriptor" -I"/home/ubisum/src/opencv/modules/line_descriptor/src" -I"/home/ubisum/src/opencv/modules/line_descriptor/include" -isystem"/home/ubisum/src/opencv" -isystem"/usr/local/include/eigen3" -D__OPENCV_BUILD=1 -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mssse3 -msse4.1 -msse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -DCVAPI_EXPORTS -x c++-header -o /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_RelWithDebInfo.gch /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp modules/line_descriptor/precomp.hpp: modules/line_descriptor/src/precomp.hpp $(CMAKE_COMMAND) -E cmake_progress_report /home/ubisum/src/opencv/CMakeFiles $(CMAKE_PROGRESS_2) @@ -61,7 +61,7 @@ modules/line_descriptor/precomp.hpp: modules/line_descriptor/src/precomp.hpp cd /home/ubisum/src/opencv/modules/line_descriptor && /usr/bin/cmake -E copy /home/ubisum/src/opencv/modules/line_descriptor/src/precomp.hpp /home/ubisum/src/opencv/modules/line_descriptor/precomp.hpp pch_Generate_opencv_line_descriptor: modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor -pch_Generate_opencv_line_descriptor: modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_Release.gch +pch_Generate_opencv_line_descriptor: modules/line_descriptor/precomp.hpp.gch/opencv_line_descriptor_RelWithDebInfo.gch pch_Generate_opencv_line_descriptor: modules/line_descriptor/precomp.hpp pch_Generate_opencv_line_descriptor: modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/build.make .PHONY : pch_Generate_opencv_line_descriptor diff --git a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean.cmake b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean.cmake index 6d3be5a49..0e6ac6538 100644 --- a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean.cmake +++ b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/cmake_clean.cmake @@ -1,6 +1,6 @@ FILE(REMOVE_RECURSE "CMakeFiles/pch_Generate_opencv_line_descriptor" - "precomp.hpp.gch/opencv_line_descriptor_Release.gch" + "precomp.hpp.gch/opencv_line_descriptor_RelWithDebInfo.gch" "precomp.hpp" ) diff --git a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make index 6c287f17b..0d87696f0 100644 --- a/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make +++ b/modules/line_descriptor/CMakeFiles/pch_Generate_opencv_line_descriptor.dir/progress.make @@ -1,3 +1,3 @@ CMAKE_PROGRESS_1 = -CMAKE_PROGRESS_2 = +CMAKE_PROGRESS_2 = 98 diff --git a/modules/line_descriptor/CMakeFiles/progress.marks b/modules/line_descriptor/CMakeFiles/progress.marks index 0cfbf0888..7ed6ff82d 100644 --- a/modules/line_descriptor/CMakeFiles/progress.marks +++ b/modules/line_descriptor/CMakeFiles/progress.marks @@ -1 +1 @@ -2 +5 diff --git a/modules/line_descriptor/Makefile b/modules/line_descriptor/Makefile index 8c966d760..0385ef2d8 100644 --- a/modules/line_descriptor/Makefile +++ b/modules/line_descriptor/Makefile @@ -139,6 +139,20 @@ depend: cd /home/ubisum/src/opencv && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 .PHONY : depend +# Convenience name for target. +modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/rule: + cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/rule +.PHONY : modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/rule + +# Convenience name for target. +example_line_descriptor_compute_descriptors: modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/rule +.PHONY : example_line_descriptor_compute_descriptors + +# fast build rule for target. +example_line_descriptor_compute_descriptors/fast: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build +.PHONY : example_line_descriptor_compute_descriptors/fast + # Convenience name for target. modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/rule: cd /home/ubisum/src/opencv && $(MAKE) -f CMakeFiles/Makefile2 modules/line_descriptor/CMakeFiles/example_line_descriptor_lines_extraction.dir/rule @@ -219,6 +233,30 @@ opencv_line_descriptor_pch_dephelp.cxx.s: cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/build.make modules/line_descriptor/CMakeFiles/opencv_line_descriptor_pch_dephelp.dir/opencv_line_descriptor_pch_dephelp.cxx.s .PHONY : opencv_line_descriptor_pch_dephelp.cxx.s +samples/compute_descriptors.o: samples/compute_descriptors.cpp.o +.PHONY : samples/compute_descriptors.o + +# target to build an object file +samples/compute_descriptors.cpp.o: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.o +.PHONY : samples/compute_descriptors.cpp.o + +samples/compute_descriptors.i: samples/compute_descriptors.cpp.i +.PHONY : samples/compute_descriptors.i + +# target to preprocess a source file +samples/compute_descriptors.cpp.i: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.i +.PHONY : samples/compute_descriptors.cpp.i + +samples/compute_descriptors.s: samples/compute_descriptors.cpp.s +.PHONY : samples/compute_descriptors.s + +# target to generate assembly for a file +samples/compute_descriptors.cpp.s: + cd /home/ubisum/src/opencv && $(MAKE) -f modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/build.make modules/line_descriptor/CMakeFiles/example_line_descriptor_compute_descriptors.dir/samples/compute_descriptors.cpp.s +.PHONY : samples/compute_descriptors.cpp.s + samples/lines_extraction.o: samples/lines_extraction.cpp.o .PHONY : samples/lines_extraction.o @@ -322,6 +360,7 @@ help: @echo "... clean" @echo "... depend" @echo "... edit_cache" + @echo "... example_line_descriptor_compute_descriptors" @echo "... example_line_descriptor_lines_extraction" @echo "... install" @echo "... install/local" @@ -334,6 +373,9 @@ help: @echo "... opencv_line_descriptor_pch_dephelp.o" @echo "... opencv_line_descriptor_pch_dephelp.i" @echo "... opencv_line_descriptor_pch_dephelp.s" + @echo "... samples/compute_descriptors.o" + @echo "... samples/compute_descriptors.i" + @echo "... samples/compute_descriptors.s" @echo "... samples/lines_extraction.o" @echo "... samples/lines_extraction.i" @echo "... samples/lines_extraction.s" diff --git a/modules/line_descriptor/cmake_install.cmake b/modules/line_descriptor/cmake_install.cmake index 3d2d4c588..1624a269e 100644 --- a/modules/line_descriptor/cmake_install.cmake +++ b/modules/line_descriptor/cmake_install.cmake @@ -12,7 +12,7 @@ IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" "" CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") ELSE(BUILD_TYPE) - SET(CMAKE_INSTALL_CONFIG_NAME "Release") + SET(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo") ENDIF(BUILD_TYPE) MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) diff --git a/modules/line_descriptor/doc/line_descriptor.rst b/modules/line_descriptor/doc/line_descriptor.rst new file mode 100644 index 000000000..8bb6f07f8 --- /dev/null +++ b/modules/line_descriptor/doc/line_descriptor.rst @@ -0,0 +1,79 @@ +Binary descriptors for lines extracted from an image +==================================================== + +.. highlight:: cpp + + +Introduction +------------ + + +One of the most challenging activities in computer vision is the extraction of useful information from a given image. Such information, usually comes in the form of points that preserve some kind of property (for instance, they are scale-invariant) and are actually representative of input image. + +The goal of this module is seeking a new kind of representative information inside an image and providing the functionalities for its extraction and representation. In particular, differently from previous methods for detection of relevant elements inside an image, lines are extracted in place of points; a new class is defined ad hoc to summarize a line's properties, for reuse and plotting purposes. + + +A class to represent a line: KeyLine +------------------------------------ + +As aformentioned, it is been necessary to design a class that fully stores the information needed to characterize completely a line and plot it on image it was extracted from, when required. + +*KeyLine* class has been created for such goal; it is mainly inspired to Feature2d's KeyPoint class, since KeyLine shares some of *KeyPoint*'s fields, even if a part of them assumes a different meaning, when speaking about lines. +In particular: + +* the *class_id* field is used to gather lines extracted from different octaves which refer to same line inside original image (such lines and the one they represent in original image share the same *class_id* value) +* the *angle* field represents line's slope with respect to (positive) X axis +* the *pt* field represents line's midpoint +* the *response* field is computed as the ratio between the line's length and maximum between image's width and height +* the *size* field is the area of the smallest rectangle containing line + +Apart from fields inspired to KeyPoint class, KeyLines stores information about extremes of line in original image and in octave it was extracted from, about line's length and number of pixels it covers. Code relative to KeyLine class is reported in the following snippet: + +.. ocv:class:: KeyLine + +:: + + class CV_EXPORTS_W KeyLine + { + public: + /* orientation of the line */ + float angle; + + /* object ID, that can be used to cluster keylines by the line they represent */ + int class_id; + + /* octave (pyramid layer), from which the keyline has been extracted */ + int octave; + + /* coordinates of the middlepoint */ + Point pt; + + /* the response, by which the strongest keylines have been selected. + It's represented by the ratio between line's length and maximum between + image's width and height */ + float response; + + /* minimum area containing line */ + float size; + + /* lines's extremes in original image */ + float startPointX; + float startPointY; + float endPointX; + float endPointY; + + /* line's extremes in image it was extracted from */ + float sPointInOctaveX; + float sPointInOctaveY; + float ePointInOctaveX; + float ePointInOctaveY; + + /* the length of line */ + float lineLength; + + /* number of pixels covered by the line */ + unsigned int numOfPixels; + + /* constructor */ + KeyLine(){} + }; diff --git a/modules/line_descriptor/doc/line_descriptor.rst~ b/modules/line_descriptor/doc/line_descriptor.rst~ new file mode 100644 index 000000000..b998b4356 --- /dev/null +++ b/modules/line_descriptor/doc/line_descriptor.rst~ @@ -0,0 +1,79 @@ +Binary descriptors for lines extracted from an image +==================================================== + +.. highlight:: cpp + + +Introduction +------------ + + +One of the most challenging activities in computer vision is the extraction of useful information from a given image. Such information, usually comes in the form of points that preserve some kind of property (for instance, they are scale-invariant) and are actually representative of input image. + +The goal of this module is seeking a new kind of representative information inside an image and providing the functionalities for its extraction and representation. In particular, differently from previous methods for detection of relevant elements inside an image, lines are extracted in spite of points; a new class is defined ad hoc to summarize a line's properties, for reuse and plotting purposes. + + +A class to represent a line: KeyLine +------------------------------------ + +As aformentioned, it is been necessary to design a class that fully stores the information needed to characterize completely a line and plot it on image it was extracted from, when required. + +*KeyLine* class has been created for such goal; it is mainly inspired to Feature2d's KeyPoint class, since KeyLine shares some of *KeyPoint*'s fields, even if a part of them assumes a different meaning, when speaking about lines. +In particular: + +* the *class_id* field is used to gather lines extracted from different octaves which refer to same line inside original image (such lines and the one they represent in original image share the same *class_id* value) +* the *angle* field represents line's slope with respect to (positive) X axis +* the *pt* field represents line's midpoint +* the *response* field is computed as the ratio between the line's length and maximum between image's width and height +* the *size* field is the area of the smallest rectangle containing line + +Apart from fields inspired to KeyPoint class, KeyLines stores information about extremes of line in original image and in octave it was extracted from, about line's length and number of pixels it covers. Code relative to KeyLine class is reported in the following snippet: + +.. ocv:class:: KeyLine + +:: + + class CV_EXPORTS_W KeyLine + { + public: + /* orientation of the line */ + float angle; + + /* object ID, that can be used to cluster keylines by the line they represent */ + int class_id; + + /* octave (pyramid layer), from which the keyline has been extracted */ + int octave; + + /* coordinates of the middlepoint */ + Point pt; + + /* the response, by which the strongest keylines have been selected. + It's represented by the ratio between line's length and maximum between + image's width and height */ + float response; + + /* minimum area containing line */ + float size; + + /* lines's extremes in original image */ + float startPointX; + float startPointY; + float endPointX; + float endPointY; + + /* line's extremes in image it was extracted from */ + float sPointInOctaveX; + float sPointInOctaveY; + float ePointInOctaveX; + float ePointInOctaveY; + + /* the length of line */ + float lineLength; + + /* number of pixels covered by the line */ + unsigned int numOfPixels; + + /* constructor */ + KeyLine(){} + }; diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index 2637270ed..dfea685be 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -55,9 +55,29 @@ namespace cv { - class CV_EXPORTS_W KeyLine: public KeyPoint + class CV_EXPORTS_W KeyLine { public: + /* orientation of the line */ + float angle; + + /* object ID, that can be used to cluster keylines by the line they represent */ + int class_id; + + /* octave (pyramid layer), from which the keyline has been extracted */ + int octave; + + /* coordinates of the middlepoint */ + Point pt; + + /* the response, by which the strongest keylines have been selected. + It's represented by the ratio between line's length and maximum between + image's width and height */ + float response; + + /* minimum area containing line */ + float size; + /* lines's extremes in original image */ float startPointX; float startPointY; @@ -76,9 +96,11 @@ namespace cv /* number of pixels covered by the line */ unsigned int numOfPixels; + /* constructor */ + KeyLine(){} }; - class CV_EXPORTS_W BinaryDescriptor: public Feature2D + class CV_EXPORTS_W BinaryDescriptor: public Algorithm { public: @@ -91,9 +113,6 @@ namespace cv /* the NNDR threshold for line descriptor distance, default is 0.6 */ CV_PROP_RW float NNDRThreshold; - /* the size of Gaussian kernel: ksize X ksize, default value is 5 */ - CV_PROP_RW int ksize_; - /* the number of image octaves (default = 5) */ CV_PROP_RW int numOfOctave_; @@ -121,6 +140,8 @@ namespace cv /* constructors with smart pointers */ static Ptr createBinaryDescriptor(); static Ptr createBinaryDescriptor(Params parameters); + + /* destructor */ ~BinaryDescriptor(); /* read parameters from a FileNode object and store them (class function ) */ @@ -131,26 +152,22 @@ namespace cv /* requires line detection (only one image) */ CV_WRAP void detect( const Mat& image, - CV_OUT std::vector& keypoints, - const Mat& mask=Mat() ); - - CV_WRAP void detectKL( const Mat& image, CV_OUT std::vector& keypoints, const Mat& mask=Mat() ); /* requires line detection (more than one image) */ void detect( const std::vector& images, - std::vector >& keypoints, + std::vector >& keypoints, const std::vector& masks=std::vector() ) const; /* requires descriptors computation (only one image) */ - CV_WRAP void compute( const Mat& image, - CV_OUT CV_IN_OUT std::vector& keypoints, + CV_WRAP void compute( const Mat& image, + CV_OUT CV_IN_OUT std::vector& keylines, CV_OUT Mat& descriptors ) const; /* requires descriptors computation (more than one image) */ void compute( const std::vector& images, - std::vector >& keypoints, + std::vector >& keylines, std::vector& descriptors ) const; /*return descriptor size */ @@ -168,7 +185,7 @@ namespace cv /* definition of operator (), as required by Feature2D */ CV_WRAP_AS(detectAndCompute) virtual void operator()( InputArray image, InputArray mask, - CV_OUT std::vector& keypoints, + CV_OUT std::vector& keylines, OutputArray descriptors, bool useProvidedKeypoints=false ) const; @@ -176,17 +193,13 @@ namespace cv protected: /* implementation of line detection */ virtual void detectImpl( const Mat& image, - std::vector& keypoints, - const Mat& mask=Mat() ) const; - - virtual void detectImplKL( const Mat& image, - std::vector& keypoints, + std::vector& keylines, const Mat& mask=Mat() ) const; /* implementation of descriptors' computation */ virtual void computeImpl( const Mat& image, - std::vector& keypoints, + std::vector& keylines, Mat& descriptors ) const; /* function inherited by Algorithm */ diff --git a/modules/line_descriptor/samples/CMakeLists.txt~~ b/modules/line_descriptor/samples/CMakeLists.txt~~ new file mode 100644 index 000000000..4b8b6dca3 --- /dev/null +++ b/modules/line_descriptor/samples/CMakeLists.txt~~ @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 2.8) +project(map_test) +find_package(OpenCV REQUIRED) + +set(SOURCES lines_extraction.cpp ../src/BinaryDescriptor.cpp) + +include_directories(${OpenCV_INCLUDE_DIRS}) +add_executable(lines_extraction ${SOURCES} ${HEADERS}) +target_link_libraries(lines_extraction ${OpenCV_LIBS}) diff --git a/modules/line_descriptor/samples/bak.txt b/modules/line_descriptor/samples/bak.txt new file mode 100644 index 000000000..0f3bfe7d8 --- /dev/null +++ b/modules/line_descriptor/samples/bak.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 2.8) +project(line_descriptor) +find_package(OpenCV REQUIRED) + +set(SOURCES lines_extraction.cpp compute_descriptors.cpp ../src/BinaryDescriptor.cpp) + +include_directories(${OpenCV_INCLUDE_DIRS}) +add_executable(lines_extraction compute_descriptors ${SOURCES} ${HEADERS}) +target_link_libraries(lines_extraction compute_descriptors ${OpenCV_LIBS}) diff --git a/modules/line_descriptor/samples/compute_descriptors.cpp b/modules/line_descriptor/samples/compute_descriptors.cpp new file mode 100644 index 000000000..28df797d3 --- /dev/null +++ b/modules/line_descriptor/samples/compute_descriptors.cpp @@ -0,0 +1,85 @@ +#include + + +#include "opencv2/core/utility.hpp" +#include "opencv2/core/private.hpp" +#include +#include +#include + +#include + +using namespace cv; +using namespace std; + +static const char* keys = +{ + "{@image_path | | Image path }" +}; + +static void help() +{ + cout << "\nThis example shows the functionalities of lines extraction " << + "and descriptors computation furnished by BinaryDescriptor class\n" << + "Please, run this sample using a command in the form\n" << + "./example_line_descriptor_compute_descriptors " << endl; +} + +inline void writeMat(cv::Mat m, std::string name, int n) +{ + std::stringstream ss; + std::string s; + ss << n; + ss >> s; + std::string fileNameConf = name + s; + cv::FileStorage fsConf(fileNameConf, cv::FileStorage::WRITE); + fsConf << "m" << m; + + fsConf.release(); +} + +int main( int argc, char** argv ) +{ + /* get parameters from comand line */ + CommandLineParser parser( argc, argv, keys ); + String image_path = parser.get( 0 ); + + if(image_path.empty()) + { + help(); + return -1; + } + + /* load image */ + cv::Mat imageMat = imread(image_path, 0); + if(imageMat.data == NULL) + { + std::cout << "Error, image could not be loaded. Please, check its path" << std::endl; + } + + /* create a random binary mask */ +// cv::Mat mask(imageMat.size(), CV_8UC1); +// cv::randu(mask, Scalar::all(0), Scalar::all(1)); + cv::Mat mask = Mat::ones(imageMat.size(), CV_8UC1); + + /* create a pointer to a BinaryDescriptor object with default parameters */ + Ptr bd = BinaryDescriptor::createBinaryDescriptor(); + + /* compute lines */ + std::vector keylines; + bd->detect(imageMat, keylines, mask); + + std::vector octave0; + for(size_t i = 0; icompute(imageMat, octave0, descriptors); + writeMat(descriptors, "old_code", 0); + +} diff --git a/modules/line_descriptor/samples/lines_extraction.cpp b/modules/line_descriptor/samples/lines_extraction.cpp index a71bc44cb..fe4977cde 100644 --- a/modules/line_descriptor/samples/lines_extraction.cpp +++ b/modules/line_descriptor/samples/lines_extraction.cpp @@ -1,6 +1,5 @@ #include - #include "opencv2/core/utility.hpp" #include "opencv2/core/private.hpp" #include @@ -18,6 +17,14 @@ static const char* keys = }; +static void help() +{ + cout << "\nThis example shows the functionalities of lines extraction " << + "furnished by BinaryDescriptor class\n" << + "Please, run this sample using a command in the form\n" << + "./example_line_descriptor_lines_extraction " << endl; +} + int main( int argc, char** argv ) { /* get parameters from comand line */ @@ -26,7 +33,7 @@ int main( int argc, char** argv ) if(image_path.empty()) { - // help(); + help(); return -1; } @@ -49,7 +56,7 @@ int main( int argc, char** argv ) vector lines; /* extract lines */ - bd->detectKL(imageMat, lines, mask); + bd->detect(imageMat, lines, mask); /* draw lines extracted from octave 0 */ cv::Mat output = imageMat.clone(); @@ -70,9 +77,6 @@ int main( int argc, char** argv ) /* draw line */ line(output, pt1, pt2, Scalar(B,G,R), 5); - std::cout << "Dati linea" << " " << kl.startPointX << " " << - kl.startPointY << " " << kl.endPointX << " " << - kl.endPointY << " " << kl.lineLength << std::endl; } } diff --git a/modules/line_descriptor/src/BinaryDescriptor.cpp b/modules/line_descriptor/src/BinaryDescriptor.cpp index 1d7053f68..f32155152 100644 --- a/modules/line_descriptor/src/BinaryDescriptor.cpp +++ b/modules/line_descriptor/src/BinaryDescriptor.cpp @@ -51,13 +51,11 @@ static const int combinations [32][2] = {{0,1},{0,2},{0,3},{0,4},{0,5},{0,6},{1, {2,8},{3,4},{3,5},{3,6},{3,7},{3,8},{4,5},{4,6}, {4,7},{4,8},{5,6},{5,7},{5,8},{6,7},{6,8},{7,8}}; - /* return default parameters */ BinaryDescriptor::Params::Params() { LowestThreshold = 0.35; NNDRThreshold = 0.6; - ksize_ = 5; numOfOctave_ = 1; numOfBand_ = 9; widthOfBand_ = 7; @@ -70,7 +68,6 @@ void BinaryDescriptor::Params::read(const cv::FileNode& fn ) { LowestThreshold = fn["LowestThreshold"]; NNDRThreshold = fn["NNDRThreshold"]; - ksize_ = fn["ksize_"]; numOfOctave_ = fn["numOfOctave_"]; numOfBand_ = fn["numOfBand_"]; widthOfBand_ = fn["widthOfBand_"]; @@ -82,7 +79,6 @@ void BinaryDescriptor::Params::write(cv::FileStorage& fs) const { fs << "LowestThreshold" << LowestThreshold; fs << "NNDRThreshold" << NNDRThreshold; - fs << "ksize_" << ksize_; fs << "numOfOctave_" << numOfOctave_; fs << "numOfBand_" << numOfBand_; fs << "widthOfBand_" << widthOfBand_; @@ -140,7 +136,7 @@ BinaryDescriptor::BinaryDescriptor(const BinaryDescriptor::Params ¶meters) : /* definition of operator () inherited from Feature2D class */ void BinaryDescriptor::operator()( InputArray image, InputArray mask, - CV_OUT std::vector& keypoints, + CV_OUT std::vector& keylines, OutputArray descriptors, bool useProvidedKeypoints) const { @@ -153,17 +149,17 @@ void BinaryDescriptor::operator()( InputArray image, maskMat = mask.getMat(); /* initialize output matrix */ - descriptors.create(Size(32, keypoints.size()), CV_8UC1); + descriptors.create(Size(32, keylines.size()), CV_8UC1); /* store reference to output matrix */ descrMat = descriptors.getMat(); /* require drawing KeyLines detection if demanded */ if(!useProvidedKeypoints) - detectImpl(imageMat, keypoints, maskMat); + detectImpl(imageMat, keylines, maskMat); /* compute descriptors */ - computeImpl(imageMat, keypoints, descrMat); + computeImpl(imageMat, keylines, descrMat); } BinaryDescriptor::~BinaryDescriptor(){} @@ -217,7 +213,7 @@ static inline int get2Pow(int i) { } } -/* conversion of an LBD descriptor to its binary representation */ +/* utility function for conversion of an LBD descriptor to its binary representation */ unsigned char BinaryDescriptor::binaryConversion(float* f1, float* f2) { uchar result = 0; @@ -244,7 +240,7 @@ void BinaryDescriptor::getLineParameters(cv::Vec4i& line_extremes, cv::Vec3i& li { lineParams[0] = 1; lineParams[1] = 0; - lineParams[2] = x1 /* or -x2 */; + lineParams[2] = x1 /* or x2 */; } /* line is parallel to X axis */ @@ -252,7 +248,7 @@ void BinaryDescriptor::getLineParameters(cv::Vec4i& line_extremes, cv::Vec3i& li { lineParams[0] = 0; lineParams[1] = 1; - lineParams[2] = y1 /* or -y2 */; + lineParams[2] = y1 /* or y2 */; } /* line is not parallel to any axis */ @@ -276,16 +272,7 @@ float BinaryDescriptor::getLineDirection(cv::Vec3i &lineParams) /* line is not parallel to any axis */ else - { - /* compute angular coefficient */ - float m = -lineParams[0]/lineParams[1]; - - if(m>0) - return atan(m); - - else - return -atan(m); - } + return atan2(-lineParams[0], lineParams[1]); } @@ -298,6 +285,7 @@ void BinaryDescriptor::computeGaussianPyramid(const Mat& image) /* insert input image into pyramid */ cv::Mat currentMat = image.clone(); + cv::GaussianBlur(currentMat, currentMat, cv::Size(5, 5), 1); octaveImages.push_back(currentMat); images_sizes.push_back(currentMat.size()); @@ -305,48 +293,37 @@ void BinaryDescriptor::computeGaussianPyramid(const Mat& image) for(int pyrCounter = 1; pyrCounter& keypoints, - const Mat& mask) -{ - /* invoke KeyLines detection */ - detectImpl(image, keypoints, mask); - -} - -void BinaryDescriptor::detectKL( const Mat& image, - CV_OUT std::vector& keypoints, + CV_OUT std::vector& keylines, const Mat& mask ) { - detectImplKL(image, keypoints, mask); + detectImpl(image, keylines, mask); } /* requires line detection (more than one image) */ void BinaryDescriptor::detect( const std::vector& images, - std::vector >& keypoints, + std::vector >& keylines, const std::vector& masks ) const { /* detect lines from each image */ for(size_t counter = 0; counter& keypoints, +void BinaryDescriptor::detectImpl( const Mat& image, + std::vector& keylines, const Mat& mask ) const { @@ -367,7 +344,6 @@ void BinaryDescriptor::detectImplKL( const Mat& image, ScaleLines sl; bn->OctaveKeyLines(sl); - /* fill KeyLines vector */ for(int i = 0; i<(int)sl.size(); i++) { @@ -401,121 +377,57 @@ void BinaryDescriptor::detectImplKL( const Mat& image, (osl.endPointY + osl.startPointY)/2); /* store KeyLine */ - keypoints.push_back(kl); + keylines.push_back(kl); } } -} - -void BinaryDescriptor::detectImpl( const Mat& image, std::vector& keypoints, - const Mat& mask) const -{ - /*check whether image depth is different from 0 */ - if(image.depth() != 0) + /* delete undesired KeyLines, according to input mask */ + for(size_t keyCounter = 0; keyCounter(kl.startPointX, kl.startPointY) == 0 && + mask.at(kl.endPointX, kl.endPointY) == 0) + keylines.erase(keylines.begin() + keyCounter); } - - /* create a pointer to self */ - BinaryDescriptor *bn = const_cast(this); - - /* compute Gaussian pyramid */ - bn->computeGaussianPyramid(image); - - /* detect and arrange lines across octaves */ - ScaleLines sl; - bn->OctaveKeyLines(sl); - - - - /* fill KeyLines vector */ - for(int i = 0; i<(int)sl.size(); i++) - { - for(size_t j = 0; j(&keypoints[keyCounter]); -// std::cout << (mask.size()).height << " " << (mask.size()).width << " " << -// kl->startPointX << " " << kl->startPointY << " " << -// kl->endPointX << " " << kl->endPointY << std::endl; -// if(mask.at(kl->startPointX, kl->startPointY) == 0 && -// mask.at(kl->endPointX, kl->endPointY) == 0) -// keypoints.erase(keypoints.begin() + keyCounter); -// } } + /* requires descriptors computation (only one image) */ void BinaryDescriptor::compute( const Mat& image, - CV_OUT CV_IN_OUT std::vector& keypoints, - CV_OUT Mat& descriptors ) const + CV_OUT CV_IN_OUT std::vector& keylines, + CV_OUT Mat& descriptors ) const { - computeImpl(image, keypoints, descriptors); + computeImpl(image, keylines, descriptors); } + /* requires descriptors computation (more than one image) */ void BinaryDescriptor::compute( const std::vector& images, - std::vector >& keypoints, + std::vector >& keylines, std::vector& descriptors ) const { for(size_t i = 0; i& keypoints, - Mat& descriptors ) const + std::vector& keylines, + Mat& descriptors ) const { - - /*check whether image depth is different from 0 */ + /*check whether image's depth is different from 0 */ if(image.depth() != 0) { - std::cout << "Warning, depth image!= 0" << std::endl; + std::cout << "Error, depth of image != 0" << std::endl; CV_Assert(false); } /* keypoints list can't be empty */ - if(keypoints.size() == 0) + if(keylines.size() == 0) { std::cout << "Error: keypoint list is empty" << std::endl; return; @@ -523,10 +435,10 @@ void BinaryDescriptor::computeImpl( const Mat& image, /* get maximum class_id */ int numLines = 0; - for(size_t l = 0; l numLines) - numLines = keypoints[l].class_id; + if(keylines[l].class_id > numLines) + numLines = keylines[l].class_id; } /* create a ScaleLines object */ @@ -540,42 +452,34 @@ void BinaryDescriptor::computeImpl( const Mat& image, std::map, int> correspondences; /* fill ScaleLines object */ - for(size_t slCounter = 0; slCounter(kp); + /* get a KeyLine object and create a new line */ + KeyLine kl = keylines[slCounter]; OctaveSingleLine osl; /* insert data in newly created line */ - osl.startPointX = (*kl).startPointX; - osl.startPointY = (*kl).startPointY; - osl.endPointX = (*kl).endPointX; - osl.endPointY = (*kl).endPointY; - osl.sPointInOctaveX = (*kl).sPointInOctaveX; - osl.sPointInOctaveY = (*kl).sPointInOctaveY; - osl.ePointInOctaveX = (*kl).ePointInOctaveX; - osl.ePointInOctaveY = (*kl).ePointInOctaveY; - osl.lineLength = (*kl).lineLength; - osl.numOfPixels = (*kl).numOfPixels; - - osl.direction = (*kl).angle; - osl.octaveCount = (*kl).octave; + osl.startPointX = kl.startPointX; + osl.startPointY = kl.startPointY; + osl.endPointX = kl.endPointX; + osl.endPointY = kl.endPointY; + osl.sPointInOctaveX = kl.sPointInOctaveX; + osl.sPointInOctaveY = kl.sPointInOctaveY; + osl.ePointInOctaveX = kl.ePointInOctaveX; + osl.ePointInOctaveY = kl.ePointInOctaveY; + osl.lineLength = kl.lineLength; + osl.numOfPixels = kl.numOfPixels; + osl.salience = kl.response; + + osl.direction = kl.angle; + osl.octaveCount = kl.octave; /* store new line */ - sl[(*kl).class_id][(*kl).octave] = osl; + sl[kl.class_id][kl.octave] = osl; /* update map */ - int id = (*kl).class_id; - int oct = (*kl).octave; + int id = kl.class_id; + int oct = kl.octave; correspondences.insert(std::pair, int>(std::pair(id, oct), slCounter)); } @@ -605,6 +509,9 @@ void BinaryDescriptor::computeImpl( const Mat& image, for(size_t sobelCnt = 0; sobelCntdxImg_vector[sobelCnt].create(images_sizes[sobelCnt].height, images_sizes[sobelCnt].width, CV_16SC1); + bn->dyImg_vector[sobelCnt].create(images_sizes[sobelCnt].height, images_sizes[sobelCnt].width, CV_16SC1); + cv::Sobel( octaveImages[sobelCnt], bn->dxImg_vector[sobelCnt], CV_16SC1, 1, 0, 3); cv::Sobel( octaveImages[sobelCnt], bn->dyImg_vector[sobelCnt], CV_16SC1, 0, 1, 3); } @@ -613,7 +520,7 @@ void BinaryDescriptor::computeImpl( const Mat& image, bn->computeLBD(sl); /* resize output matrix */ - descriptors = cv::Mat(keypoints.size(), 32, CV_8UC1); + descriptors = cv::Mat(keylines.size(), 32, CV_8UC1); /* fill output matrix with descriptors */ for(size_t k = 0; k0){ + if(gDL>0) + { pgdLRowSum += gDL; - }else{ + } + + else + { ngdLRowSum -= gDL; } - if(gDO>0){ + + if(gDO>0) + { pgdORowSum += gDO; - }else{ + } + + else + { ngdORowSum -= gDO; } + sCorX +=dL[0]; sCorY +=dL[1]; /* gDLMat[hID][wID] = gDL; */ @@ -1129,7 +1046,7 @@ int BinaryDescriptor::computeLBD(ScaleLines &keyLines) /* compute {g_dL |g_dL>0 }, {g_dL |g_dL<0 }, {g_dO |g_dO>0 }, {g_dO |g_dO<0 } of each band in the line support region - first, current row belong to current band */ + first, current row belongs to current band */ bandID = hID/params.widthOfBand_; coefInGaussion = gaussCoefL_[hID%params.widthOfBand_+params.widthOfBand_]; pgdLBandSum[bandID] += coefInGaussion * pgdLRowSum; @@ -1156,6 +1073,7 @@ int BinaryDescriptor::computeLBD(ScaleLines &keyLines) pgdO2BandSum[bandID] += coefInGaussion * coefInGaussion * pgdO2RowSum; ngdO2BandSum[bandID] += coefInGaussion * coefInGaussion * ngdO2RowSum; } + bandID = bandID+2; if(bandID Date: Sat, 28 Jun 2014 18:42:29 +0200 Subject: [PATCH 12/67] Matcher ported, first page od documentation written. --- .../line_descriptor/doc/line_descriptor.rst | 52 ++++ .../line_descriptor/doc/line_descriptor.rst~ | 48 +++- .../opencv2/line_descriptor/array32.hpp | 60 +++++ .../opencv2/line_descriptor/bitarray.hpp | 66 +++++ .../opencv2/line_descriptor/bitops.hpp | 135 +++++++++++ .../opencv2/line_descriptor/bucket_group.hpp | 29 +++ .../opencv2/line_descriptor/descriptor.hpp | 97 +++++++- .../opencv2/line_descriptor/mihasher.hpp | 88 +++++++ .../line_descriptor/sparse_hashtable.hpp | 43 ++++ .../include/opencv2/line_descriptor/types.hpp | 16 ++ .../samples/compute_descriptors.cpp | 6 +- .../samples/lines_extraction.cpp | 1 + modules/line_descriptor/samples/matching.cpp | 145 +++++++++++ .../line_descriptor/src/BinaryDescriptor.cpp | 79 +++--- .../src/BinaryDescriptorMatcher.cpp | 57 +++++ modules/line_descriptor/src/array32.cpp | 155 ++++++++++++ modules/line_descriptor/src/bucket_group.cpp | 58 +++++ modules/line_descriptor/src/mihasher.cpp | 227 ++++++++++++++++++ modules/line_descriptor/src/precomp.hpp | 16 +- .../line_descriptor/src/sparse_hashtable.cpp | 40 +++ 20 files changed, 1368 insertions(+), 50 deletions(-) create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/array32.hpp create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/bitarray.hpp create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/bitops.hpp create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/bucket_group.hpp create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/mihasher.hpp create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/sparse_hashtable.hpp create mode 100644 modules/line_descriptor/include/opencv2/line_descriptor/types.hpp create mode 100644 modules/line_descriptor/samples/matching.cpp create mode 100644 modules/line_descriptor/src/BinaryDescriptorMatcher.cpp create mode 100644 modules/line_descriptor/src/array32.cpp create mode 100644 modules/line_descriptor/src/bucket_group.cpp create mode 100644 modules/line_descriptor/src/mihasher.cpp create mode 100644 modules/line_descriptor/src/sparse_hashtable.cpp diff --git a/modules/line_descriptor/doc/line_descriptor.rst b/modules/line_descriptor/doc/line_descriptor.rst index 8bb6f07f8..708be8a0d 100644 --- a/modules/line_descriptor/doc/line_descriptor.rst +++ b/modules/line_descriptor/doc/line_descriptor.rst @@ -77,3 +77,55 @@ Apart from fields inspired to KeyPoint class, KeyLines stores information about /* constructor */ KeyLine(){} }; + + +Lines extraction methodology +---------------------------- + +The lines extraction methodology described in the following is mainly based on [LBD]_. +The extraction starts with a Gaussian pyramid generated from an original image, downsampled and blurred N-1 times, to obtain N layers (one for each octave), with layer 0 corresponding to input image. Then, from each layer (octave) in the pyramid, lines are extracted using LSD algorithm. + +Differently from EDLine lines extractor used in original article, LSD furnishes information only about lines extremes; thus, additional information regarding slope and equation of line are computed via analytic methods. The number of pixels is obtained using `LineIterator `_. Later on, all extracted lines are arranged in buckets: two lines fall in the same bucket if they represent the same line in different octave (they have the same direction and belong to same region of original image). The set of buckets becomes the input for descriptors computation. + + +Computation of binary descriptors +--------------------------------- + +To obtatin a binary descriptor representing a certain line detected from a certain octave of an image, we first compute a non-binary descriptor as described in [LBD]_. Given a line, we consider a rectangular region centered at it and called *line support region (LSR)*. Such region is divided into a set of bands :math:`\{B_1, B_2, ..., B_m\}`, whose length equals the one of line. + +If we indicate with :math:`\bf{d}_L` the direction of line, the orthogonal and clockwise direction to line :math:`\bf{d}_{\perp}` can be determined; these two directions, are used to construct a reference frame centered in the middle point of line. The gradients of pixels :math:`\bf{g'}` inside LSR can be projected to the newly determined frame, obtaining their local equivalent :math:`\bf{g'} = (\bf{g}^T \cdot \bf{d}_{\perp}, \bf{g}^T \cdot \bf{d}_L)^T \triangleq (\bf{g'}_{d_{\perp}}, \bf{g'}_{d_L})^T`. + +Later on, a Gaussian function is applied to all LSR's pixels along :math:`\bf{d}_\perp` direction; first, we assign a global weighting coefficient :math:`f_g(i) = (1/\sqrt{2\pi}\sigma_g)e^{-d^2_i/2\sigma^2_g}` to *i*-th row in LSR, where :math:`d_i` is the distance of *i*-th row from the center row in LSR, :math:`\sigma_g = 0.5(m \cdot w - 1)` and :math:`w` is the width of bands (the same for every band). Secondly, considering a band :math:`B_j` and its neighbor bands :math:`B_{j-1}, B_{j+1}`, we assign a local weighting :math:`F_l(k) = (1/\sqrt{2\pi}\sigma_l)e^{-d'^2_k/2\sigma_l^2}`, where :math:`d'_k` is the distance of *k*-th row from the center row in :math:`B_j` and :math:`\sigma_l = w`. Using the global and local weights, we obtain, at the same time, the reduction of role played by gradients far from line and of boundary effect, respectively. + +Each band :math:`B_j` in LSR has an associated *band descriptor(BD)* which is computed considering previous and next band (top and bottom bands are ignored when computing descriptor for first and last band). Once each band has been assignen its BD, the LBD descriptor of line is simply given by + +.. math:: + LBD = (BD_1^T, BD_2^T, ... , BD^T_m)^T. + +To compute a band descriptor :math:`B_j`, each *k*-th row in it is considered and the gradients in such row are accumulated: + +.. math:: + \begin{matrix} \bf{V1}^k_j = \lambda \sum\limits_{\bf{g}'_{d_\perp}>0}\bf{g}'_{d_\perp}, & \bf{V2}^k_j = \lambda \sum\limits_{\bf{g}'_{d_\perp}<0} -\bf{g}'_{d_\perp}, \\ \bf{V3}^k_j = \lambda \sum\limits_{\bf{g}'_{d_L}>0}\bf{g}'_{d_L}, & \bf{V4}^k_j = \lambda \sum\limits_{\bf{g}'_{d_L}<0} -\bf{g}'_{d_L}\end{matrix}. + +with :math:`\lambda = f_g(k)f_l(k)`. + +By stacking previous results, we obtain the *band description matrix (BDM)* + +.. math:: + BDM_j = \left(\begin{matrix} \bf{V1}_j^1 & \bf{V1}_j^2 & \ldots & \bf{V1}_j^n \\ \bf{V2}_j^1 & \bf{V2}_j^2 & \ldots & \bf{V2}_j^n \\ \bf{V3}_j^1 & \bf{V3}_j^2 & \ldots & \bf{V3}_j^n \\ \bf{V4}_j^1 & \bf{V4}_j^2 & \ldots & \bf{V4}_j^n \end{matrix} \right) \in \mathbb{R}^{4\times n}, + +with :math:`n` the number of rows in band :math:`B_j`: + +.. math:: + n = \begin{cases} 2w, & j = 1||m; \\ 3w, & \mbox{else}. \end{cases} + +Each :math:`BD_j` can be obtained using the standard deviation vector :math:`S_j` and mean vector :math:`M_j` of :math:`BDM_J`. Thus, finally: + +.. math:: + LBD = (M_1^T, S_1^T, M_2^T, S_2^T, \ldots, M_m^T, S_m^T)^T \in \mathbb{R}^{8m} + + +References +---------- + +.. [LBD] Zhang, Lilian, and Reinhard Koch. *An efficient and robust line segment matching approach based on LBD descriptor and pairwise geometric consistency*, Journal of Visual Communication and Image Representation 24.7 (2013): 794-805. diff --git a/modules/line_descriptor/doc/line_descriptor.rst~ b/modules/line_descriptor/doc/line_descriptor.rst~ index b998b4356..4e8a62370 100644 --- a/modules/line_descriptor/doc/line_descriptor.rst~ +++ b/modules/line_descriptor/doc/line_descriptor.rst~ @@ -10,7 +10,7 @@ Introduction One of the most challenging activities in computer vision is the extraction of useful information from a given image. Such information, usually comes in the form of points that preserve some kind of property (for instance, they are scale-invariant) and are actually representative of input image. -The goal of this module is seeking a new kind of representative information inside an image and providing the functionalities for its extraction and representation. In particular, differently from previous methods for detection of relevant elements inside an image, lines are extracted in spite of points; a new class is defined ad hoc to summarize a line's properties, for reuse and plotting purposes. +The goal of this module is seeking a new kind of representative information inside an image and providing the functionalities for its extraction and representation. In particular, differently from previous methods for detection of relevant elements inside an image, lines are extracted in place of points; a new class is defined ad hoc to summarize a line's properties, for reuse and plotting purposes. A class to represent a line: KeyLine @@ -77,3 +77,49 @@ Apart from fields inspired to KeyPoint class, KeyLines stores information about /* constructor */ KeyLine(){} }; + + +Lines extraction methodology +---------------------------- + +The lines extraction methodology described in the following is mainly based on [LBD]_. +The extraction starts with a Gaussian pyramid generated from an original image, downsampled and blurred N-1 times, to obtain N layers (one for each octave), with layer 0 corresponding to input image. Then, from each layer (octave) in the pyramid, lines are extracted using LSD algorithm. + +Differently from EDLine lines extractor used in original article, LSD furnishes information only about lines extremes; thus, additional information regarding slope and equation of line are computed via analytic methods. The number of pixels is obtained using `LineIterator `_. Later on, all extracted lines are arranged in buckets: two lines fall in the same bucket if they represent the same line in different octave (they have the same direction and belong to same region of original image). The set of buckets becomes the input for descriptors computation. + + +Computation of binary descriptors +--------------------------------- + +To obtatin a binary descriptor representing a certain line detected from a certain octave of an image, we first compute a non-binary descriptor as described in [LBD]_. Given a line, we consider a rectangular region centered at it and called *line support region (LSR)*. Such region is divided into a set of bands :math:`\{B_1, B_2, ..., B_m\}`, whose length equals the one of line. + +If we indicate with :math:`\bf{d}_L` the direction of line, the orthogonal and clockwise direction to line :math:`\bf{d}_{\perp}` can be determined; these two directions, are used to construct a reference frame centered in the middle point of line. The gradients of pixels :math:`\bf{g'}` inside LSR can be projected to the newly determined frame, obtaining their local equivalent :math:`\bf{g'} = (\bf{g}^T \cdot \bf{d}_{\perp}, \bf{g}^T \cdot \bf{d}_L)^T \triangleq (\bf{g'}_{d_{\perp}}, \bf{g'}_{d_L})^T`. + +Later on, a Gaussian function is applied to all LSR's pixels along :math:`\bf{d}_\perp` direction; first, we assign a global weighting coefficient :math:`f_g(i) = (1/\sqrt{2\pi}\sigma_g)e^{-d^2_i/2\sigma^2_g}` to *i*-th row in LSR, where :math:`d_i` is the distance of *i*-th row from the center row in LSR, :math:`\sigma_g = 0.5(m \cdot w - 1)` and :math:`w` is the width of bands (the same for every band). Secondly, considering a band :math:`B_j` and its neighbor bands :math:`B_{j-1}, B_{j+1}`, we assign a local weighting :math:`F_l(k) = (1/\sqrt{2\pi}\sigma_l)e^{-d'^2_k/2\sigma_l^2}`, where :math:`d'_k` is the distance of *k*-th row from the center row in :math:`B_j` and :math:`\sigma_l = w`. Using the global and local weights, we obtain, at the same time, the reduction of role played by gradients far from line and of boundary effect, respectively. + +Each band :math:`B_j` in LSR has an associated *band descriptor(BD)* which is computed considering previous and next band (top and bottom bands are ignored when computing descriptor for first and last band). Once each band has been assignen its BD, the LBD descriptor of line is simply given by + +.. math:: + LBD = (BD_1^T, BD_2^T, ... , BD^T_m)^T. + +To compute a band descriptor :math:`B_j`, each *k*-th row in it is considered and the gradients in such row are accumulated: + +.. math:: + \begin{matrix} \bf{V1}^k_j = \lambda \sum\limits_{\bf{g}'_{d_\perp}>0}\bf{g}'_{d_\perp}, & \bf{V2}^k_j = \lambda \sum\limits_{\bf{g}'_{d_\perp}<0} -\bf{g}'_{d_\perp}, \\ \bf{V3}^k_j = \lambda \sum\limits_{\bf{g}'_{d_L}>0}\bf{g}'_{d_L}, & \bf{V4}^k_j = \lambda \sum\limits_{\bf{g}'_{d_L}<0} -\bf{g}'_{d_L}\end{matrix}. + +with :math:`\lambda = f_g(k)f_l(k)`. + +By stacking previous results, we obtain the *band description matrix (BDM)* + +.. math:: + BDM_j = \left(\begin{matrix} \bf{V1}_j^1 & \bf{V1}_j^2 & \ldots & \bf{V1}_j^n \\ \bf{V2}_j^1 & \bf{V2}_j^2 & \ldots & \bf{V2}_j^n \\ \bf{V3}_j^1 & \bf{V3}_j^2 & \ldots & \bf{V3}_j^n \\ \bf{V4}_j^1 & \bf{V4}_j^2 & \ldots & \bf{V4}_j^n \end{matrix} \right) \in \mathbb{R}^{4\times n}, + +with :math:`n` the number of rows in band :math:`B_j`: + +.. math:: + n = \begin{cases} 2w, & j = 1||m; \\ 3w, & \mbox{else}. \end{cases} + +Each :math:`BD_j` can be obtained using the standard deviation vector :math:`S_j` and mean vector :math:`M_j` of :math:`BDM_J`. Thus, finally: + +.. math:: + LBD = (M_1^T, S_1^T, M_2^T, S_2^T, \ldots, M_m^T, S_m^T)^T \in \mathbb{R}^{8m} diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/array32.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/array32.hpp new file mode 100644 index 000000000..22bde4f18 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/array32.hpp @@ -0,0 +1,60 @@ +/* dynamic array of 32-bit integers + * arr[0] : array size + * arr[1] : array capacity + * arr[2..] : array content */ + +#ifndef __OPENCV_ARRAY32_HPP +#define __OPENCV_ARRAY32_HPP + +#include "types.hpp" + +class Array32 { + + private: + static double ARRAY_RESIZE_FACTOR; + static double ARRAY_RESIZE_ADD_FACTOR; + + public: + /* set ARRAY_RESIZE_FACTOR */ + static void setArrayResizeFactor(double arf); + + /* constructor */ + Array32(); + + /* destructor */ + ~Array32(); + + /* cleaning function used in destructor */ + void cleanup(); + + /* push data */ + void push(UINT32 data); + + /* insert data at given index */ + void insert(UINT32 index, UINT32 data); + + /* return data */ + UINT32* data(); + + /* return data size */ + UINT32 size(); + + /* return capacity */ + UINT32 capacity(); + + /* definition of operator = */ + void operator= (const Array32&); + + /* print data */ + void print(); + + /* initializer */ + void init(int size); + + /* data */ + UINT32 *arr; + + +}; + +#endif diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/bitarray.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/bitarray.hpp new file mode 100644 index 000000000..978855e31 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/bitarray.hpp @@ -0,0 +1,66 @@ +#ifndef __OPENCV_BITARRAY_HPP +#define __OPENCV_BITARRAY_HPP + +#include "types.hpp" +#include +#include +#include + +/* class defining a sequence of bits */ +class bitarray { + + public: + /* pointer to bits sequence and sequence's length */ + UINT32 *arr; + UINT32 length; + + /* constructor setting default values */ + bitarray() + { + arr = NULL; + length = 0; + } + + /* constructor setting sequence's length */ + bitarray(UINT64 _bits) { + init(_bits); + } + + /* initializer of private fields */ + void init(UINT64 _bits) + { + length = (UINT32)ceil(_bits/32.00); + arr = new UINT32[length]; + erase(); + } + + /* destructor */ + ~bitarray() { + if (arr) + delete[] arr; + } + + inline void flip(UINT64 index) + { + arr[index >> 5] ^= ((UINT32)0x01) << (index % 32); + } + + inline void set(UINT64 index) + { + arr[index >> 5] |= ((UINT32)0x01) << (index % 32); + } + + inline UINT8 get(UINT64 index) + { + return (arr[index >> 5] & (((UINT32)0x01) << (index % 32))) != 0; + } + + /* reserve menory for an UINT32 */ + inline void erase() + { + memset(arr, 0, sizeof(UINT32) * length); + } + +}; + +#endif diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/bitops.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/bitops.hpp new file mode 100644 index 000000000..9cbcc5a51 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/bitops.hpp @@ -0,0 +1,135 @@ +#ifndef __OPENCV_BITOPTS_HPP +#define __OPENCV_BITOPTS_HPP + +#define popcntll __builtin_popcountll +#define popcnt __builtin_popcount + +#include "precomp.hpp" + +/* LUT */ +const int lookup [] = {0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2, + 2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3, + 2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4, + 4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4, + 2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4, + 4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5, + 4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6, + 6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5, + 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3, + 3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5, + 4,5,5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4, + 4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6, + 4,5,5,6,5,6,6,7,3,4,4,5,4,5,5,6,4,5, + 5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7, + 6,7,7,8}; + +/*matching function */ +inline int match(UINT8*P, UINT8*Q, int codelb) +{ + switch(codelb) + { + case 4: // 32 bit + return popcnt(*(UINT32*)P ^ *(UINT32*)Q); + break; + case 8: // 64 bit + return popcntll(((UINT64*)P)[0] ^ ((UINT64*)Q)[0]); + break; + case 16: // 128 bit + return popcntll(((UINT64*)P)[0] ^ ((UINT64*)Q)[0]) \ + + popcntll(((UINT64*)P)[1] ^ ((UINT64*)Q)[1]); + break; + case 32: // 256 bit + return popcntll(((UINT64*)P)[0] ^ ((UINT64*)Q)[0]) \ + + popcntll(((UINT64*)P)[1] ^ ((UINT64*)Q)[1]) \ + + popcntll(((UINT64*)P)[2] ^ ((UINT64*)Q)[2]) \ + + popcntll(((UINT64*)P)[3] ^ ((UINT64*)Q)[3]); + break; + case 64: // 512 bit + return popcntll(((UINT64*)P)[0] ^ ((UINT64*)Q)[0]) \ + + popcntll(((UINT64*)P)[1] ^ ((UINT64*)Q)[1]) \ + + popcntll(((UINT64*)P)[2] ^ ((UINT64*)Q)[2]) \ + + popcntll(((UINT64*)P)[3] ^ ((UINT64*)Q)[3]) \ + + popcntll(((UINT64*)P)[4] ^ ((UINT64*)Q)[4]) \ + + popcntll(((UINT64*)P)[5] ^ ((UINT64*)Q)[5]) \ + + popcntll(((UINT64*)P)[6] ^ ((UINT64*)Q)[6]) \ + + popcntll(((UINT64*)P)[7] ^ ((UINT64*)Q)[7]); + break; + default: + int output = 0; + for (int i=0; i> b; + nbits -= b; + + if (i == mplus-1) + { + b--; /* b <= 63 */ + mask = ((UINT64_1 << b) - UINT64_1); + } + } +} + +/* generates the next binary code (in alphabetical order) with the + same number of ones as the input x. Taken from + http://www.geeksforgeeks.org/archives/10375 */ +inline UINT64 next_set_of_n_elements(UINT64 x) +{ + UINT64 smallest, ripple, new_smallest; + + smallest = x & -x; + ripple = x + smallest; + new_smallest = x ^ ripple; + new_smallest = new_smallest / smallest; + new_smallest >>= 2; + return ripple | new_smallest; +} + +/* print code */ +inline void print_code(UINT64 tmp, int b) +{ + for (int j=(b-1); j>=0; j--) + { + printf("%llu", (long long int) tmp/(1 << j)); + tmp = tmp - (tmp/(1 << j)) * (1 << j); + } + + printf("\n"); +} + +inline UINT64 choose(int n, int r) +{ + UINT64 nchooser = 1; + for (int k=0; k < r; k++) + { + nchooser *= n-k; + nchooser /= k+1; + } + + return nchooser; +} + +#endif diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/bucket_group.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/bucket_group.hpp new file mode 100644 index 000000000..462676ae2 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/bucket_group.hpp @@ -0,0 +1,29 @@ +#ifndef __OPENCV_BUCKET_GROUP_HPP +#define __OPENCV_BUCKET_GROUP_HPP + +#include "types.hpp" +#include "array32.hpp" +#include "bitarray.hpp" + +class BucketGroup { + + public: + /* constructor */ + BucketGroup(); + + /* destructor */ + ~BucketGroup(); + + /* insert data into the bucket */ + void insert(int subindex, UINT32 data); + + /* perform a query to the bucket */ + UINT32* query(int subindex, int *size); + + /* data fields */ + UINT32 empty; + Array32 *group; + +}; + +#endif diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index dfea685be..7c3dc06c1 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -47,9 +47,13 @@ #define __OPENCV_DESCRIPTOR_HPP__ #include "LineStructure.hpp" -#include "opencv2/core.hpp" -#include - +#include "array32.hpp" +#include "bitarray.hpp" +#include "bitops.hpp" +#include "bucket_group.hpp" +#include "mihasher.hpp" +#include "sparse_hashtable.hpp" +#include "types.hpp" namespace cv @@ -107,18 +111,9 @@ namespace cv struct CV_EXPORTS_W_SIMPLE Params{ CV_WRAP Params(); - /* global threshold for line descriptor distance, default is 0.35 */ - CV_PROP_RW float LowestThreshold; - - /* the NNDR threshold for line descriptor distance, default is 0.6 */ - CV_PROP_RW float NNDRThreshold; - /* the number of image octaves (default = 5) */ CV_PROP_RW int numOfOctave_; - /* the number of bands used to compute line descriptor (default: 9) */ - CV_PROP_RW int numOfBand_; - /* the width of band; (default: 7) */ CV_PROP_RW int widthOfBand_; @@ -144,6 +139,14 @@ namespace cv /* destructor */ ~BinaryDescriptor(); + /* setters and getters */ + int getNumOfOctaves(); + void setNumOfOctaves(int octaves); + int getWidthOfBand(); + void setWidthOfBand(int width); + int getReductionRatio(); + void setReductionRatio(int rRatio); + /* read parameters from a FileNode object and store them (class function ) */ virtual void read( const cv::FileNode& fn ); @@ -248,6 +251,76 @@ namespace cv }; + class CV_EXPORTS_W BinaryDescriptorMatcher: public Algorithm + { + + public: + /* for every input descriptor, + find the best matching one (for a pair of images) */ + void match( const Mat& queryDescriptors, + const Mat& trainDescriptors, + std::vector& matches, + const Mat& mask=Mat() ) const; + + /* for every input descriptor, + find the best matching one (from one image to a set) */ + void match( const Mat& queryDescriptors, + std::vector& matches, + const std::vector& masks=std::vector() ); + + /* for every input descriptor, + find the best k matching descriptors (for a pair of images) */ + void knnMatch( const Mat& queryDescriptors, + const Mat& trainDescriptors, + std::vector >& matches, + int k, + const Mat& mask=Mat(), + bool compactResult=false ) const; + + /* for every input descriptor, + find the best k matching descriptors (from one image to a set) */ + void knnMatch( const Mat& queryDescriptors, + std::vector >& matches, + int k, + const std::vector& masks=std::vector(), + bool compactResult=false ); + + /* for every input desciptor, find all the ones falling in a + certaing atching radius (for a pair of images) */ + void radiusMatch( const Mat& queryDescriptors, + const Mat& trainDescriptors, + std::vector >& matches, + float maxDistance, + const Mat& mask=Mat(), + bool compactResult=false ) const; + + /* for every input desciptor, find all the ones falling in a + certaing atching radius (from one image to a set) */ + void radiusMatch( const Mat& queryDescriptors, + std::vector >& matches, + float maxDistance, + const std::vector& masks=std::vector(), + bool compactResult=false ); + + /* constructor with smart pointer */ + static Ptr createBinaryDescriptorMatcher(); + + + /* write/read data to/from file */ + virtual void read( const FileNode& ); + virtual void write( FileStorage& ) const; + + /* constructor */ + BinaryDescriptorMatcher(){}; + + /* desctructor */ + ~BinaryDescriptorMatcher(){}; + + private: + /* vector to store new desciptors */ + std::vector descriptorsVector; + }; + } #endif diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/mihasher.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/mihasher.hpp new file mode 100644 index 000000000..353692006 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/mihasher.hpp @@ -0,0 +1,88 @@ +#ifndef __OPENCV_MIHASHER_HPP +#define __OPENCV_MIHASHER_HPP + +#include "types.hpp" +#include "bitops.hpp" + +#include "sparse_hashtable.hpp" +#include "bitarray.hpp" + +#include +#include + +//#include +//#include + + +class Mihasher { + private: + + /* Bits per code */ + int B; + + /* B/8 */ + int B_over_8; + + /* Bits per chunk (must be less than 64) */ + int b; + + /* Number of chunks */ + int m; + + /* Number of chunks with b bits (have 1 bit more than others) */ + int mplus; + + /* Maximum hamming search radius (we use B/2 by default) */ + int D; + + /* Maximum hamming search radius per substring */ + int d; + + /* Maximum results to return */ + int K; + + /* Number of codes */ + UINT64 N; + + /* Table of original full-length codes */ + cv::Mat codes; + + /* Counter for eliminating duplicate results (it is not thread safe) */ + bitarray *counter; + + /* Array of m hashtables */ + SparseHashtable *H; + + /* Volume of a b-bit Hamming ball with radius s (for s = 0 to d) */ + UINT32 *xornum; + + /* Used within generation of binary codes at a certain Hamming distance */ + int power[100]; + + public: + + /* constructor */ + Mihasher(); + + /* desctructor */ + ~Mihasher(); + + /* constructor 2 */ + Mihasher(int B, int m); + + /* K setter */ + void setK(int K); + + /* populate tables */ + void populate(cv::Mat & codes, UINT32 N, int dim1codes); + + /* execute a batch query */ + void batchquery (UINT32 * results, UINT32 *numres/*, qstat *stats*/,const cv::Mat & q, UINT32 numq, int dim1queries); + + private: + + /* execute a single query */ + void query(UINT32 * results, UINT32* numres/*, qstat *stats*/, UINT8 *q, UINT64 * chunks, UINT32 * res, int query_i); +}; + +#endif diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/sparse_hashtable.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/sparse_hashtable.hpp new file mode 100644 index 000000000..bf53cb0b4 --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/sparse_hashtable.hpp @@ -0,0 +1,43 @@ +#ifndef __OPENCV_SPARSE_HASHTABLE_HPP +#define __OPENCV_SPARSE_HASHTABLE_HPP + +#include "types.hpp" +#include "bucket_group.hpp" + +class SparseHashtable +{ + + private: + + /* Maximum bits per key before folding the table */ + static const int MAX_B; + + /* Bins (each bin is an Array object for duplicates of the same key) */ + BucketGroup *table; + + public: + + /* constructor */ + SparseHashtable(); + + /* destructor */ + ~SparseHashtable(); + + /* initializer */ + int init(int _b); + + /* insert data */ + void insert(UINT64 index, UINT32 data); + + /* query data */ + UINT32* query(UINT64 index, int* size); + + /* Bits per index */ + int b; + + /* Number of bins */ + UINT64 size; + +}; + +#endif diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/types.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/types.hpp new file mode 100644 index 000000000..af8490a9b --- /dev/null +++ b/modules/line_descriptor/include/opencv2/line_descriptor/types.hpp @@ -0,0 +1,16 @@ +#include + +#ifndef __OPENCV_TYPES_HPP +#define __OPENCV_TYPES_HPP + +/* define data types */ +typedef uint64_t UINT64; +typedef uint32_t UINT32; +typedef uint16_t UINT16; +typedef uint8_t UINT8; + +/* define constants */ +#define UINT64_1 ((UINT64)0x01) +#define UINT32_1 ((UINT32)0x01) + +#endif diff --git a/modules/line_descriptor/samples/compute_descriptors.cpp b/modules/line_descriptor/samples/compute_descriptors.cpp index 28df797d3..559fb6731 100644 --- a/modules/line_descriptor/samples/compute_descriptors.cpp +++ b/modules/line_descriptor/samples/compute_descriptors.cpp @@ -10,7 +10,6 @@ #include using namespace cv; -using namespace std; static const char* keys = { @@ -19,10 +18,11 @@ static const char* keys = static void help() { - cout << "\nThis example shows the functionalities of lines extraction " << + std::cout << "\nThis example shows the functionalities of lines extraction " << "and descriptors computation furnished by BinaryDescriptor class\n" << "Please, run this sample using a command in the form\n" << - "./example_line_descriptor_compute_descriptors " << endl; + "./example_line_descriptor_compute_descriptors " + << std::endl; } inline void writeMat(cv::Mat m, std::string name, int n) diff --git a/modules/line_descriptor/samples/lines_extraction.cpp b/modules/line_descriptor/samples/lines_extraction.cpp index fe4977cde..4ac557dcf 100644 --- a/modules/line_descriptor/samples/lines_extraction.cpp +++ b/modules/line_descriptor/samples/lines_extraction.cpp @@ -57,6 +57,7 @@ int main( int argc, char** argv ) /* extract lines */ bd->detect(imageMat, lines, mask); + std::cout << lines.size() << std::endl; /* draw lines extracted from octave 0 */ cv::Mat output = imageMat.clone(); diff --git a/modules/line_descriptor/samples/matching.cpp b/modules/line_descriptor/samples/matching.cpp new file mode 100644 index 000000000..696de5846 --- /dev/null +++ b/modules/line_descriptor/samples/matching.cpp @@ -0,0 +1,145 @@ +#include + +#include "opencv2/core/utility.hpp" +#include "opencv2/core/private.hpp" +#include +#include +#include + +#include + +using namespace cv; + +static const char* keys = +{ + "{@image_path1 | | Image path 1 }" + "{@image_path2 | | Image path 2 }" +}; + +static void help() +{ + std::cout << "\nThis example shows the functionalities of lines extraction " << + "and descriptors computation furnished by BinaryDescriptor class\n" << + "Please, run this sample using a command in the form\n" << + "./example_line_descriptor_compute_descriptors " + << "" << std::endl; + +} + +inline void writeMat(cv::Mat m, std::string name, int n) +{ + std::stringstream ss; + std::string s; + ss << n; + ss >> s; + std::string fileNameConf = name + s; + cv::FileStorage fsConf(fileNameConf, cv::FileStorage::WRITE); + fsConf << "m" << m; + + fsConf.release(); +} + +int main( int argc, char** argv ) +{ + /* get parameters from comand line */ + CommandLineParser parser( argc, argv, keys ); + String image_path1 = parser.get( 0 ); + String image_path2 = parser.get( 1 ); + + if(image_path1.empty() || image_path2.empty()) + { + help(); + return -1; + } + + + /* load image */ + cv::Mat imageMat1 = imread(image_path1, 0); + cv::Mat imageMat2 = imread(image_path2, 0); + if(imageMat1.data == NULL || imageMat2.data == NULL) + { + std::cout << "Error, images could not be loaded. Please, check their path" + << std::endl; + } + + /* create binary masks */ + cv::Mat mask1 = Mat::ones(imageMat1.size(), CV_8UC1); + cv::Mat mask2 = Mat::ones(imageMat2.size(), CV_8UC1); + + /* create a pointer to a BinaryDescriptor object with default parameters */ + Ptr bd = BinaryDescriptor::createBinaryDescriptor(); + + /* compute lines */ + std::vector keylines1, keylines2; + bd->detect(imageMat1, keylines1, mask1); + bd->detect(imageMat2, keylines2, mask2); + + std::cout << "lines " << keylines1.size() << " " << keylines2.size() + << std::endl; + + /* compute descriptors */ + cv::Mat descr1, descr2; + bd->compute(imageMat1, keylines1, descr1); + bd->compute(imageMat2, keylines2, descr2); + + /* create a BinaryDescriptorMatcher object */ + Ptr bdm = BinaryDescriptorMatcher::createBinaryDescriptorMatcher(); + + /* require match */ + std::vector matches; + bdm->match(descr1, descr2, matches); + for(int x = 0; x0 } for each row of the region; float ngdLRowSum;//the summation of {g_dL |g_dL<0 } for each row of the region; float pgdL2RowSum;//the summation of {g_dL^2 |g_dL>0 } for each row of the region; @@ -897,16 +920,16 @@ int BinaryDescriptor::computeLBD(ScaleLines &keyLines) float pgdO2RowSum;//the summation of {g_dO^2 |g_dO>0 } for each row of the region; float ngdO2RowSum;//the summation of {g_dO^2 |g_dO<0 } for each row of the region; - float *pgdLBandSum = new float[params.numOfBand_];//the summation of {g_dL |g_dL>0 } for each band of the region; - float *ngdLBandSum = new float[params.numOfBand_];//the summation of {g_dL |g_dL<0 } for each band of the region; - float *pgdL2BandSum = new float[params.numOfBand_];//the summation of {g_dL^2 |g_dL>0 } for each band of the region; - float *ngdL2BandSum = new float[params.numOfBand_];//the summation of {g_dL^2 |g_dL<0 } for each band of the region; - float *pgdOBandSum = new float[params.numOfBand_];//the summation of {g_dO |g_dO>0 } for each band of the region; - float *ngdOBandSum = new float[params.numOfBand_];//the summation of {g_dO |g_dO<0 } for each band of the region; - float *pgdO2BandSum = new float[params.numOfBand_];//the summation of {g_dO^2 |g_dO>0 } for each band of the region; - float *ngdO2BandSum = new float[params.numOfBand_];//the summation of {g_dO^2 |g_dO<0 } for each band of the region; + float *pgdLBandSum = new float[NUM_OF_BANDS];//the summation of {g_dL |g_dL>0 } for each band of the region; + float *ngdLBandSum = new float[NUM_OF_BANDS];//the summation of {g_dL |g_dL<0 } for each band of the region; + float *pgdL2BandSum = new float[NUM_OF_BANDS];//the summation of {g_dL^2 |g_dL>0 } for each band of the region; + float *ngdL2BandSum = new float[NUM_OF_BANDS];//the summation of {g_dL^2 |g_dL<0 } for each band of the region; + float *pgdOBandSum = new float[NUM_OF_BANDS];//the summation of {g_dO |g_dO>0 } for each band of the region; + float *ngdOBandSum = new float[NUM_OF_BANDS];//the summation of {g_dO |g_dO<0 } for each band of the region; + float *pgdO2BandSum = new float[NUM_OF_BANDS];//the summation of {g_dO^2 |g_dO>0 } for each band of the region; + float *ngdO2BandSum = new float[NUM_OF_BANDS];//the summation of {g_dO^2 |g_dO<0 } for each band of the region; - short numOfBitsBand = params.numOfBand_*sizeof(float); + short numOfBitsBand = NUM_OF_BANDS*sizeof(float); short lengthOfLSP; //the length of line support region, varies with lines short halfHeight = (heightOfLSP-1)/2; short halfWidth; @@ -1075,7 +1098,7 @@ int BinaryDescriptor::computeLBD(ScaleLines &keyLines) } bandID = bandID+2; - if(bandIDdescriptor.data(); int base = 0; - for(short i=0; idescriptor.data(); base = 0; - for(short i=0; i BinaryDescriptorMatcher::createBinaryDescriptorMatcher() +{ + return Ptr(new BinaryDescriptorMatcher()); +} + +void BinaryDescriptorMatcher::read( const FileNode& ){} +void BinaryDescriptorMatcher::write( FileStorage& ) const{} + +/* for every input descriptor, find the best matching one (for a pair of images) */ +void BinaryDescriptorMatcher::match( const Mat& queryDescriptors, + const Mat& trainDescriptors, + std::vector& matches, + const Mat& mask ) const +{ + /* create a new mihasher object */ + Mihasher *mh = new Mihasher(256, 32); + + /* populate mihasher */ + cv::Mat copy = trainDescriptors.clone(); + mh->populate(copy, copy.rows, copy.cols); + mh->setK(1); + + /* prepare structures for query */ + UINT32 *results = new UINT32[queryDescriptors.rows]; + UINT32 * numres = new UINT32[(256+1)*(queryDescriptors.rows)]; + + /* execute query */ + mh->batchquery(results, + numres, + queryDescriptors, + queryDescriptors.rows, + queryDescriptors.cols); + + /* compose matches */ + for(size_t counter = 0; counter(counter)!=0)) + { + DMatch dm; + dm.queryIdx = counter; + dm.trainIdx = results[counter]; + dm.imgIdx = 0; + dm.distance = numres[counter]; + + matches.push_back(dm); + } + } + + +} diff --git a/modules/line_descriptor/src/array32.cpp b/modules/line_descriptor/src/array32.cpp new file mode 100644 index 000000000..0f96d0152 --- /dev/null +++ b/modules/line_descriptor/src/array32.cpp @@ -0,0 +1,155 @@ +/* dynamic array of 32-bit integers + * arr[0] : array size + * arr[1] : array capacity + * arr[2..] : array content */ + +#include "precomp.hpp" + + +/* no need for the static keyword in the definition */ +double Array32::ARRAY_RESIZE_FACTOR = 1.1; // minimum is 1.0 +double Array32::ARRAY_RESIZE_ADD_FACTOR = 4; // minimum is 1 + +/* set ARRAY_RESIZE_FACTOR */ +void Array32::setArrayResizeFactor(double arf) +{ + ARRAY_RESIZE_FACTOR = arf; +} + +/* constructor */ +Array32::Array32 () +{ + arr = NULL; +} + +/* definition of operator = + Array32& Array32::operator = (const Array32 &rhs) */ +void Array32::operator = (const Array32 &rhs) +{ + if (&rhs != this) + this->arr = rhs.arr; +} + +/* destructor */ +Array32::~Array32 () +{ + cleanup(); +} + +/* cleaning function used in destructor */ +void Array32::cleanup () +{ + free(arr); +} + +/* push data */ +void Array32::push(UINT32 Data) +{ + if (arr) + { + if (arr[0] == arr[1]) + { + arr[1] = std::max(ceil(arr[1]*ARRAY_RESIZE_FACTOR), + arr[1]+ARRAY_RESIZE_ADD_FACTOR); + UINT32* new_Data = static_cast + (realloc (arr, sizeof(UINT32)*(2 + arr[1]))); + if (new_Data == NULL) + { + /* could not realloc, but orig still valid */ + std::cout << "ALERT!!!! Not enough memory, operation aborted!" + << std::endl; + exit(0); + } + else + { + arr = new_Data; + } + + } + + arr[2 + arr[0]] = Data; + arr[0]++; + + } + + else + { + arr = (UINT32*) malloc ((2+ARRAY_RESIZE_ADD_FACTOR)*sizeof(UINT32)); + arr[0] = 1; + arr[1] = 1; + arr[2] = Data; + } +} + +/* insert data at given index */ +void Array32::insert(UINT32 index, UINT32 Data) { + if (arr) { + if (arr[0] == arr[1]) { + arr[1] = ceil(arr[0]*1.1); + UINT32* new_data = static_cast + (realloc (arr, sizeof(UINT32)*(2 + arr[1]))); + if (new_data == NULL) + { + // could not realloc, but orig still valid + std::cout << "ALERT!!!! Not enough memory, operation aborted!" + << std::endl; + exit(0); + } + else + { + arr = new_data; + } + } + + memmove(arr+(2+index)+1, arr+(2+index), (arr[0]-index)*sizeof(*arr)); + + arr[2+index] = Data; + arr[0]++; + } + + else + { + arr = (UINT32*) malloc (3*sizeof(UINT32)); + arr[0] = 1; + arr[1] = 1; + arr[2] = Data; + } +} + + +/* return data */ +UINT32* Array32::data() +{ + return arr? arr + 2 : NULL; +} + +/* return data size */ +UINT32 Array32::size () +{ + return arr ? arr[0] : 0; +} + +/* return capacity */ +UINT32 Array32::capacity () +{ + return arr ? arr[1] : 0; +} + +/* print data */ +void Array32::print() { + for (int i=0; ipush(0); + } + + UINT32 lowerbits = ((UINT32)1 << subindex) - 1; + int end = popcnt(empty & lowerbits); + + if (!(empty & ((UINT32)1 << subindex))) + { + group->insert(end, group->arr[end+2]); + empty |= (UINT32)1 << subindex; + } + + int totones = popcnt(empty); + group->insert(totones+1+group->arr[2+end+1], data); + for (int i=end+1; iarr[2+i]++; +} + +/* perform a query to the bucket */ +UINT32* BucketGroup::query(int subindex, int *size) +{ + if (empty & ((UINT32)1 << subindex)) + { + UINT32 lowerbits = ((UINT32)1 << subindex) - 1; + int end = popcnt(empty & lowerbits); + int totones = popcnt(empty); + *size = group->arr[2+end+1]-group->arr[2+end]; + return group->arr + 2 + totones+1 + group->arr[2+end]; + } + + else + { + *size = 0; + return NULL; + } +} diff --git a/modules/line_descriptor/src/mihasher.cpp b/modules/line_descriptor/src/mihasher.cpp new file mode 100644 index 000000000..55d448d44 --- /dev/null +++ b/modules/line_descriptor/src/mihasher.cpp @@ -0,0 +1,227 @@ +#include "precomp.hpp" + + +/* execute a batch query */ +void Mihasher::batchquery(UINT32 * results, UINT32 *numres, const cv::Mat & queries, UINT32 numq, int dim1queries) +{ + /* create and initialize a bitarray */ + counter = new bitarray; + counter->init(N); + + UINT32 *res = new UINT32[K*(D+1)]; + UINT64 *chunks = new UINT64[m]; + UINT32 * presults = results; + UINT32 *pnumres = numres; + + /* make a copy of input queries */ + cv::Mat queries_clone = queries.clone(); + + /* set a pointer to first query (row) */ + UINT8 *pq = queries_clone.ptr(); + + /* loop over number of descriptors */ + for (size_t i=0; ierase(); + memset(numres, 0, (B+1)*sizeof(*numres)); + + split(chunks, Query, m, mplus, b); + + /* the growing search radius per substring */ + int s; + + /* current b: for the first mplus substrings it is b, for the rest it is (b-1) */ + int curb = b; + + for (s = 0; s <= d && n < maxres; s++) + { + for (int k=0; kget(index)) + { /* if it is not a duplicate */ + counter->set(index); + hammd = match(codes.ptr() + (UINT64)index*(B_over_8), Query, B_over_8); + + nc++; + if (hammd <= D && numres[hammd] < maxres) + res[hammd * K + numres[hammd]] = index+1; + + numres[hammd]++; + } + } + } + + /* end of processing */ + while (++bit < s && power[bit] == power[bit+1]-1) { + bitstr ^= (UINT64)1 << (power[bit]-1); + power[bit] = bit; + } + if (bit == s) + break; + } + } + + n = n + numres[s*m+k]; + if (n >= maxres) + break; + } + } + + n = 0; + for (s = 0; s <= D && n < K; s++ ) + { + for (int c = 0; c < numres[s] && n < K; c++) + results[n++] = res[s*K + c]; + } + +} + +/* constructor 2 */ +Mihasher::Mihasher(int _B, int _m) +{ + B = _B; + B_over_8 = B/8; + m = _m; + b = ceil((double)B/m); + + /* assuming that B/2 is large enough radius to include + all of the k nearest neighbors */ + D = ceil(B/2.0); + d = ceil((double)D/m); + + /* mplus is the number of chunks with b bits + (m-mplus) is the number of chunks with (b-1) bits */ + mplus = B - m * (b-1); + + xornum = new UINT32 [d+2]; + xornum[0] = 0; + for (int i=0; i<=d; i++) + xornum[i+1] = xornum[i] + choose(b, i); + + H = new SparseHashtable[m]; + + /* H[i].init might fail */ + for (int i=0; i #include #include +#include "opencv2/core.hpp" -#include "opencv2/line_descriptor.hpp" - -#include #include #include -#include -#include -#include +#include +#include +#include +#include +#include + + + +#include "opencv2/line_descriptor.hpp" #endif diff --git a/modules/line_descriptor/src/sparse_hashtable.cpp b/modules/line_descriptor/src/sparse_hashtable.cpp new file mode 100644 index 000000000..962bff5b5 --- /dev/null +++ b/modules/line_descriptor/src/sparse_hashtable.cpp @@ -0,0 +1,40 @@ +#include "precomp.hpp" + +const int SparseHashtable::MAX_B = 37; + +/* constructor */ +SparseHashtable::SparseHashtable() +{ + table = NULL; + size = 0; + b = 0; +} + +/* initializer */ +int SparseHashtable::init(int _b) +{ + b = _b; + + if (b < 5 || b > MAX_B || b > sizeof(UINT64)*8) + return 1; + + size = UINT64_1 << (b-5); // size = 2 ^ b + table = (BucketGroup*) calloc(size, sizeof(BucketGroup)); + + return 0; +} + +/* destructor */ +SparseHashtable::~SparseHashtable () { + free(table); +} + +/* insert data */ +void SparseHashtable::insert(UINT64 index, UINT32 data) { + table[index >> 5].insert((int)(index % 32), data); +} + +/* query data */ +UINT32* SparseHashtable::query(UINT64 index, int *Size) { + return table[index >> 5].query((int)(index % 32), Size); +} From 3b207a77f8cbf4ab2ba90578efd0281936bf0a80 Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Sun, 29 Jun 2014 16:20:09 +0200 Subject: [PATCH 13/67] First part of documentation completed --- modules/line_descriptor/.cproject | 33 +-- .../line_descriptor/doc/BinaryDescriptor.rst | 217 ++++++++++++++++++ .../line_descriptor/doc/BinaryDescriptor.rst~ | 217 ++++++++++++++++++ .../line_descriptor/doc/line_descriptor.rst | 10 +- .../line_descriptor/doc/line_descriptor.rst~ | 16 +- .../opencv2/line_descriptor/descriptor.hpp | 6 +- .../line_descriptor/src/BinaryDescriptor.cpp | 7 +- 7 files changed, 483 insertions(+), 23 deletions(-) create mode 100644 modules/line_descriptor/doc/BinaryDescriptor.rst create mode 100644 modules/line_descriptor/doc/BinaryDescriptor.rst~ diff --git a/modules/line_descriptor/.cproject b/modules/line_descriptor/.cproject index 7e63c83ed..2c0bf0728 100644 --- a/modules/line_descriptor/.cproject +++ b/modules/line_descriptor/.cproject @@ -1,8 +1,8 @@ - - + + @@ -14,20 +14,20 @@ - - - - - - - - + + + + + + + + - - + + - - + + @@ -37,10 +37,13 @@ - + + + + diff --git a/modules/line_descriptor/doc/BinaryDescriptor.rst b/modules/line_descriptor/doc/BinaryDescriptor.rst new file mode 100644 index 000000000..329fc7678 --- /dev/null +++ b/modules/line_descriptor/doc/BinaryDescriptor.rst @@ -0,0 +1,217 @@ +BinaryDescriptor Class +====================== + +.. highlight:: cpp + +BinaryDescriptor Class implements both functionalities for detection of lines and computation of their binary descriptor. Class' interface is mainly based on the ones of classical detectors and extractors, such as Feature2d's `FeatureDetector `_ and `DescriptorExtractor `_. +Retrieved information about lines is stored in *KeyLine* objects. + + +BinaryDescriptor::Params +----------------------------------------------------------------------- + +.. ocv:struct:: BinaryDescriptor::Params + +List of BinaryDescriptor parameters:: + + struct CV_EXPORTS_W_SIMPLE Params{ + CV_WRAP Params(); + + /* the number of image octaves (default = 5) */ + CV_PROP_RW int numOfOctave_; + + /* the width of band; (default = 7) */ + CV_PROP_RW int widthOfBand_; + + /* image's reduction ratio in construction of Gaussian pyramids (default = 2) */ + CV_PROP_RW int reductionRatio; + + /* read parameters from a FileNode object and store them (struct function) */ + void read( const FileNode& fn ); + + /* store parameters to a FileStorage object (struct function) */ + void write( FileStorage& fs ) const; + + }; + + +BinaryDescriptor::BinaryDescriptor +---------------------------------- + +Constructor + +.. ocv:function:: bool BinaryDescriptor::BinaryDescriptor( const BinaryDescriptor::Params ¶meters = BinaryDescriptor::Params() ) + + :param parameters: configuration parameters :ocv:struct:`BinaryDescriptor::Params` + +If no argument is provided, constructor sets default values (see comments in the code snippet in previous section). Default values are strongly reccomended. + + +BinaryDescriptor::getNumOfOctaves +--------------------------------- + +Get current number of octaves + +.. ocv:function:: int BinaryDescriptor::getNumOfOctaves() + + +BinaryDescriptor::setNumOfOctaves +--------------------------------- + +Set number of octaves + +.. ocv:function:: void BinaryDescriptor::setNumOfOctaves( int octaves ) + + :param octaves: number of octaves + + +BinaryDescriptor::getWidthOfBand +-------------------------------- + +Get current width of bands + +.. ocv:function:: int BinaryDescriptor::getWidthOfBand() + + +BinaryDescriptor::setWidthOfBand +-------------------------------- + +Set width of bands + +.. ocv:function:: void BinaryDescriptor::setWidthOfBand( int width ) + + :param width: width of bands + +BinaryDescriptor::getReductionRatio +----------------------------------- + +Get current reduction ratio (used in Gaussian pyramids) + +.. ocv:function:: int BinaryDescriptor::getReductionRatio() + + +BinaryDescriptor::setReductionRatio +----------------------------------- + +Set reduction ratio (used in Gaussian pyramids) + +.. ocv:function:: void BinaryDescriptor::setReductionRatio( int rRatio ) + + :param rRatio: reduction ratio + + +BinaryDescriptor::createBinaryDescriptor +---------------------------------------- + +Create a BinaryDescriptor object with default parameters (or with the ones provided) and return a smart pointer to it + +.. ocv:function:: Ptr BinaryDescriptor::createBinaryDescriptor() +.. ocv:function:: Ptr BinaryDescriptor::createBinaryDescriptor( Params parameters ) + + +BinaryDescriptor::operator() +---------------------------- + +Define operator '()' to perform detection of KeyLines and computation of descriptors in a row. + +.. ocv:function:: void BinaryDescriptor::operator()( InputArray image, InputArray mask, vector& keylines, OutputArray descriptors, bool useProvidedKeyLines=false ) const + + :param image: input image + + :param mask: mask matrix to select which lines in KeyLines must be accepted among the ones extracted (used when *keylines* is not empty) + + :param keylines: vector that contains input lines (when filled, the detection part will be skipped and input lines will be passed as input to the algorithm computing descriptors) + + :param descriptors: matrix that will store final descriptors + + :param useProvidedKeyLines: flag (when set to true, detection phase will be skipped and only computation of descriptors will be executed, using lines provided in *keylines*) + + +BinaryDescriptor::read +---------------------- + +Read parameters from a FileNode object and store them + +.. ocv:function:: void BinaryDescriptor::read( const FileNode& fn ) + + :param fn: source FileNode file + + +BinaryDescriptor::write +----------------------- + +Store parameters to a FileStorage object + +.. ocv:function:: void BinaryDescriptor::write( FileStorage& fs ) const + + :param fs: output FileStorage file + + +BinaryDescriptor::defaultNorm +----------------------------- + +Return norm mode + +.. ocv:function:: int BinaryDescriptor::defaultNorm() const + + +BinaryDescriptor::descriptorType +-------------------------------- + +Return data type + +.. ocv:function:: int BinaryDescriptor::descriptorType() const + + +BinaryDescriptor::descriptorSize +-------------------------------- + +Return descriptor size + +.. ocv:function:: int BinaryDescriptor::descriptorSize() const + + +BinaryDescriptor::empty +----------------------- + +Check whether Gaussian pyramids were created + +.. ocv:function:: bool BinaryDescriptor::empty() const + + +BinaryDescriptor::detect +------------------------ + +Requires line detection (for one or more images) + +.. ocv:function:: void detect( const Mat& image, vector& keylines, Mat& mask=Mat() ) +.. ocv:function:: void detect( const vector& images, vector >& keylines, vector& masks=vector() ) const + + :param image: input image + + :param images: input images + + :param keylines: vector or set of vectors that will store extracted lines for one or more images + + :param mask: mask matrix to detect only KeyLines of interest + + :param masks: vector of mask matrices to detect only KeyLines of interest from each input image + + +BinaryDescriptor::compute +------------------------- + +Requires descriptors computation (for one or more images) + +.. ocv:function:: void compute( const Mat& image, vector& keylines, Mat& descriptors ) const +.. ocv:function:: void compute( const vector& images, vector >& keylines, vector& descriptors ) const + + :param image: input image + + :param images: input images + + :param keylines: vector or set of vectors containing lines for which descriptors must be computed + + :param mask: mask to select for which lines, among the ones provided in input, descriptors must be computed + + :param masks: set of masks to select for which lines, among the ones provided in input, descriptors must be computed diff --git a/modules/line_descriptor/doc/BinaryDescriptor.rst~ b/modules/line_descriptor/doc/BinaryDescriptor.rst~ new file mode 100644 index 000000000..5e73aae76 --- /dev/null +++ b/modules/line_descriptor/doc/BinaryDescriptor.rst~ @@ -0,0 +1,217 @@ +BinaryDescriptor Class +====================== + +.. highlight:: cpp + +BinaryDescriptor Class implements both functionalities for detection of lines and computation of their binary descriptor. Class' interface is mainly based on the ones of classical detectors and extractors, such as Feature2d's `FeatureDetector `_ and `DescriptorExtractor `_. +Retrieved information about lines is stored in *KeyLine* objects. + + +BinaryDescriptor::Params +----------------------------------------------------------------------- + +.. ocv:struct:: BinaryDescriptor::Params + +List of BinaryDescriptor parameters:: + + struct CV_EXPORTS_W_SIMPLE Params{ + CV_WRAP Params(); + + /* the number of image octaves (default = 5) */ + CV_PROP_RW int numOfOctave_; + + /* the width of band; (default: 7) */ + CV_PROP_RW int widthOfBand_; + + /* image's reduction ratio in construction of Gaussian pyramids */ + CV_PROP_RW int reductionRatio; + + /* read parameters from a FileNode object and store them (struct function) */ + void read( const FileNode& fn ); + + /* store parameters to a FileStorage object (struct function) */ + void write( FileStorage& fs ) const; + + }; + + +BinaryDescriptor::BinaryDescriptor +---------------------------------- + +Constructor + +.. ocv:function:: bool BinaryDescriptor::BinaryDescriptor( const BinaryDescriptor::Params ¶meters = BinaryDescriptor::Params() ) + + :param parameters: configuration parameters :ocv:struct:`BinaryDescriptor::Params` + +If no argument is provided, constructor sets default values (see comments in the code snippet in previous section). Default values are strongly reccomended. + + +BinaryDescriptor::getNumOfOctaves +--------------------------------- + +Get current number of octaves + +.. ocv:function:: int BinaryDescriptor::getNumOfOctaves() + + +BinaryDescriptor::setNumOfOctaves +--------------------------------- + +Set number of octaves + +.. ocv:function:: void BinaryDescriptor::setNumOfOctaves( int octaves ) + + :param octaves: number of octaves + + +BinaryDescriptor::getWidthOfBand +-------------------------------- + +Get current width of bands + +.. ocv:function:: int BinaryDescriptor::getWidthOfBand() + + +BinaryDescriptor::setWidthOfBand +-------------------------------- + +Set width of bands + +.. ocv:function:: void BinaryDescriptor::setWidthOfBand( int width ) + + :param width: width of bands + +BinaryDescriptor::getReductionRatio +----------------------------------- + +Get current reduction ratio (used in Gaussian pyramids) + +.. ocv:function:: int BinaryDescriptor::getReductionRatio() + + +BinaryDescriptor::setReductionRatio +----------------------------------- + +Set reduction ratio (used in Gaussian pyramids) + +.. ocv:function:: void BinaryDescriptor::setReductionRatio( int rRatio ) + + :param rRatio: reduction ratio + + +BinaryDescriptor::createBinaryDescriptor +---------------------------------------- + +Create a BinaryDescriptor object with default parameters (or with the ones provided) and return a smart pointer to it + +.. ocv:function:: Ptr BinaryDescriptor::createBinaryDescriptor() +.. ocv:function:: Ptr BinaryDescriptor::createBinaryDescriptor( Params parameters ) + + +BinaryDescriptor::operator() +---------------------------- + +Define operator '()' to perform detection of KeyLines and computation of descriptors in a row. + +.. ocv:function:: void BinaryDescriptor::operator()( InputArray image, InputArray mask, vector& keylines, OutputArray descriptors, bool useProvidedKeyLines=false ) const + + :param image: input image + + :param mask: mask matrix to select which lines in KeyLines must be accepted among the ones extracted (used when *keylines* is not empty) + + :param keylines: vector that contains input lines (when filled, the detection part will be skipped and input lines will be passed as input to the algorithm computing descriptors) + + :param descriptors: matrix that will store final descriptors + + :param useProvidedKeyLines: flag (when set to true, detection phase will be skipped and only computation of descriptors will be executed, using lines provided in *keylines*) + + +BinaryDescriptor::read +---------------------- + +Read parameters from a FileNode object and store them + +.. ocv:function:: void BinaryDescriptor::read( const FileNode& fn ) + + :param fn: source FileNode file + + +BinaryDescriptor::write +----------------------- + +Store parameters to a FileStorage object + +.. ocv:function:: void BinaryDescriptor::write( FileStorage& fs ) const + + :param fs: output FileStorage file + + +BinaryDescriptor::defaultNorm +----------------------------- + +Return norm mode + +.. ocv:function:: int BinaryDescriptor::defaultNorm() const + + +BinaryDescriptor::descriptorType +-------------------------------- + +Return data type + +.. ocv:function:: int BinaryDescriptor::descriptorType() const + + +BinaryDescriptor::descriptorSize +-------------------------------- + +Return descriptor size + +.. ocv:function:: int BinaryDescriptor::descriptorSize() const + + +BinaryDescriptor::empty +----------------------- + +Check whether Gaussian pyramids were created + +.. ocv:function:: bool BinaryDescriptor::empty() const + + +BinaryDescriptor::detect +------------------------ + +Requires line detection (for one or more images) + +.. ocv:function:: void detect( const Mat& image, vector& keylines, Mat& mask=Mat() ) +.. ocv:function:: void detect( const vector& images, vector >& keylines, vector& masks=vector() ) const + + :param image: input image + + :param images: input images + + :param keylines: vector or set of vectors that will store extracted lines for one or more images + + :param mask: mask matrix to detect only KeyLines of interest + + :param masks: vector of mask matrices to detect only KeyLines of interest from each input image + + +BinaryDescriptor::compute +------------------------- + +Requires descriptors computation (for one or more images) + +.. ocv:function:: void compute( const Mat& image, vector& keylines, Mat& descriptors ) const +.. ocv:function:: void compute( const vector& images, vector >& keylines, vector& descriptors ) const + + :param image: input image + + :param images: input images + + :param keylines: vector or set of vectors containing lines for which descriptors must be computed + + :param mask: mask to select for which lines, among the ones provided in input, descriptors must be computed + + :param masks: set of masks to select for which lines, among the ones provided in input, descriptors must be computed diff --git a/modules/line_descriptor/doc/line_descriptor.rst b/modules/line_descriptor/doc/line_descriptor.rst index 708be8a0d..aac76359d 100644 --- a/modules/line_descriptor/doc/line_descriptor.rst +++ b/modules/line_descriptor/doc/line_descriptor.rst @@ -83,7 +83,7 @@ Lines extraction methodology ---------------------------- The lines extraction methodology described in the following is mainly based on [LBD]_. -The extraction starts with a Gaussian pyramid generated from an original image, downsampled and blurred N-1 times, to obtain N layers (one for each octave), with layer 0 corresponding to input image. Then, from each layer (octave) in the pyramid, lines are extracted using LSD algorithm. +The extraction starts with a Gaussian pyramid generated from an original image, downsampled N-1 times, blurred N times, to obtain N layers (one for each octave), with layer 0 corresponding to input image. Then, from each layer (octave) in the pyramid, lines are extracted using LSD algorithm. Differently from EDLine lines extractor used in original article, LSD furnishes information only about lines extremes; thus, additional information regarding slope and equation of line are computed via analytic methods. The number of pixels is obtained using `LineIterator `_. Later on, all extracted lines are arranged in buckets: two lines fall in the same bucket if they represent the same line in different octave (they have the same direction and belong to same region of original image). The set of buckets becomes the input for descriptors computation. @@ -125,6 +125,14 @@ Each :math:`BD_j` can be obtained using the standard deviation vector :math:`S_j LBD = (M_1^T, S_1^T, M_2^T, S_2^T, \ldots, M_m^T, S_m^T)^T \in \mathbb{R}^{8m} +Once the LBD has been obtained, it must be converted into a binary form. For such purpose, we consider 32 possible pairs of BD inside it; each couple of BD is compared bit by bit and comparison generates an 8 bit string. Concatenating 32 comparison strings, we get the 256-bit final binary representation of a single LBD. + + +Related Pages +------------- + +* `BinaryDescriptor Class `_ + References ---------- diff --git a/modules/line_descriptor/doc/line_descriptor.rst~ b/modules/line_descriptor/doc/line_descriptor.rst~ index 4e8a62370..cfd1bf74f 100644 --- a/modules/line_descriptor/doc/line_descriptor.rst~ +++ b/modules/line_descriptor/doc/line_descriptor.rst~ @@ -83,7 +83,7 @@ Lines extraction methodology ---------------------------- The lines extraction methodology described in the following is mainly based on [LBD]_. -The extraction starts with a Gaussian pyramid generated from an original image, downsampled and blurred N-1 times, to obtain N layers (one for each octave), with layer 0 corresponding to input image. Then, from each layer (octave) in the pyramid, lines are extracted using LSD algorithm. +The extraction starts with a Gaussian pyramid generated from an original image, downsampled N-1 times, blurred N times, to obtain N layers (one for each octave), with layer 0 corresponding to input image. Then, from each layer (octave) in the pyramid, lines are extracted using LSD algorithm. Differently from EDLine lines extractor used in original article, LSD furnishes information only about lines extremes; thus, additional information regarding slope and equation of line are computed via analytic methods. The number of pixels is obtained using `LineIterator `_. Later on, all extracted lines are arranged in buckets: two lines fall in the same bucket if they represent the same line in different octave (they have the same direction and belong to same region of original image). The set of buckets becomes the input for descriptors computation. @@ -123,3 +123,17 @@ Each :math:`BD_j` can be obtained using the standard deviation vector :math:`S_j .. math:: LBD = (M_1^T, S_1^T, M_2^T, S_2^T, \ldots, M_m^T, S_m^T)^T \in \mathbb{R}^{8m} + + +Once the LBD has been obtained, it must be converted into a binary form. For such purpose, we consider 32 possible pairs of BD inside it; each couple of BD is compared bit by bit and comparison generates an 8 bit string. Concatenating 32 comparison strings, we get the 256-bit final binary representation of a single LBD. + + +Related Pages +------------- + +* `BinaryDescriptor ` + +References +---------- + +.. [LBD] Zhang, Lilian, and Reinhard Koch. *An efficient and robust line segment matching approach based on LBD descriptor and pairwise geometric consistency*, Journal of Visual Communication and Image Representation 24.7 (2013): 794-805. diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index 7c3dc06c1..32435bdf3 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -160,7 +160,7 @@ namespace cv /* requires line detection (more than one image) */ void detect( const std::vector& images, - std::vector >& keypoints, + std::vector >& keylines, const std::vector& masks=std::vector() ) const; /* requires descriptors computation (only one image) */ @@ -185,12 +185,12 @@ namespace cv /* check whether Gaussian pyramids were created */ bool empty() const; - /* definition of operator (), as required by Feature2D */ + /* definition of operator () */ CV_WRAP_AS(detectAndCompute) virtual void operator()( InputArray image, InputArray mask, CV_OUT std::vector& keylines, OutputArray descriptors, - bool useProvidedKeypoints=false ) const; + bool useProvidedKeyLines=false ) const; protected: diff --git a/modules/line_descriptor/src/BinaryDescriptor.cpp b/modules/line_descriptor/src/BinaryDescriptor.cpp index f66bbb532..f2c66ddfb 100644 --- a/modules/line_descriptor/src/BinaryDescriptor.cpp +++ b/modules/line_descriptor/src/BinaryDescriptor.cpp @@ -118,6 +118,7 @@ Ptr BinaryDescriptor::createBinaryDescriptor(Params parameters return Ptr(new BinaryDescriptor(parameters)); } + /* construct a BinaryDescrptor object and compute external private parameters */ BinaryDescriptor::BinaryDescriptor(const BinaryDescriptor::Params ¶meters) : params(parameters) { @@ -156,12 +157,12 @@ BinaryDescriptor::BinaryDescriptor(const BinaryDescriptor::Params ¶meters) : } } -/* definition of operator () inherited from Feature2D class */ +/* definition of operator () */ void BinaryDescriptor::operator()( InputArray image, InputArray mask, CV_OUT std::vector& keylines, OutputArray descriptors, - bool useProvidedKeypoints) const + bool useProvidedKeyLines) const { /* create some matrix objects */ @@ -178,7 +179,7 @@ void BinaryDescriptor::operator()( InputArray image, descrMat = descriptors.getMat(); /* require drawing KeyLines detection if demanded */ - if(!useProvidedKeypoints) + if(!useProvidedKeyLines) detectImpl(imageMat, keylines, maskMat); /* compute descriptors */ From d191729b46da1a632718475cfe4570d4bd548587 Mon Sep 17 00:00:00 2001 From: biagio montesano Date: Wed, 9 Jul 2014 17:49:42 +0200 Subject: [PATCH 14/67] Matcher functionalities' tests completed --- .../opencv2/line_descriptor/descriptor.hpp | 97 +++- .../samples/compute_descriptors.cpp | 2 - .../samples/images/cameraman.jpg | Bin 0 -> 23920 bytes .../line_descriptor/samples/images/church.jpg | Bin 0 -> 27117 bytes .../samples/images/church2.png | Bin 0 -> 811178 bytes .../samples/images/einstein.jpg | Bin 0 -> 52317 bytes .../line_descriptor/samples/images/stuff.jpg | Bin 0 -> 57113 bytes .../line_descriptor/samples/knn_matching.cpp | 169 ++++++ .../samples/lines_extraction.cpp | 2 - modules/line_descriptor/samples/matching.cpp | 83 +-- .../samples/radius_matching.cpp | 111 ++++ .../line_descriptor/src/BinaryDescriptor.cpp | 58 +- .../src/BinaryDescriptorMatcher.cpp | 523 +++++++++++++++++- modules/line_descriptor/src/draw.cpp | 142 +++++ .../src/line_descriptor_init.cpp | 2 + 15 files changed, 1081 insertions(+), 108 deletions(-) create mode 100644 modules/line_descriptor/samples/images/cameraman.jpg create mode 100644 modules/line_descriptor/samples/images/church.jpg create mode 100644 modules/line_descriptor/samples/images/church2.png create mode 100644 modules/line_descriptor/samples/images/einstein.jpg create mode 100644 modules/line_descriptor/samples/images/stuff.jpg create mode 100644 modules/line_descriptor/samples/knn_matching.cpp create mode 100644 modules/line_descriptor/samples/radius_matching.cpp create mode 100644 modules/line_descriptor/src/draw.cpp diff --git a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp index 32435bdf3..2bb5c0ae5 100644 --- a/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp +++ b/modules/line_descriptor/include/opencv2/line_descriptor/descriptor.hpp @@ -55,7 +55,6 @@ #include "sparse_hashtable.hpp" #include "types.hpp" - namespace cv { @@ -195,17 +194,17 @@ namespace cv protected: /* implementation of line detection */ - virtual void detectImpl( const Mat& image, + virtual void detectImpl( const Mat& imageSrc, std::vector& keylines, const Mat& mask=Mat() ) const; /* implementation of descriptors' computation */ - virtual void computeImpl( const Mat& image, + virtual void computeImpl( const Mat& imageSrc, std::vector& keylines, Mat& descriptors ) const; - /* function inherited by Algorithm */ + /* function inherited from Algorithm */ AlgorithmInfo* info() const; private: @@ -302,25 +301,99 @@ namespace cv const std::vector& masks=std::vector(), bool compactResult=false ); + /* store new descriptors to be inserted in dataset */ + void add( const std::vector& descriptors ); + + /* store new descriptors into dataset */ + void train(); + /* constructor with smart pointer */ static Ptr createBinaryDescriptorMatcher(); - - /* write/read data to/from file */ - virtual void read( const FileNode& ); - virtual void write( FileStorage& ) const; + /* clear dataset and internal data */ + void clear(); /* constructor */ - BinaryDescriptorMatcher(){}; + BinaryDescriptorMatcher(); /* desctructor */ - ~BinaryDescriptorMatcher(){}; + ~BinaryDescriptorMatcher(){} + + protected: + /* function inherited from Algorithm */ + AlgorithmInfo* info() const; private: - /* vector to store new desciptors */ - std::vector descriptorsVector; + /* retrieve Hamming distances */ + void checkKDistances(UINT32 * numres, + int k, + std::vector& k_distances, + int row, + int string_length) const; + + /* matrix to store new descriptors */ + Mat descriptorsMat; + + /* map storing where each bunch of descriptors benins in DS */ + std::map indexesMap; + + /* internal MiHaser representing dataset */ + Mihasher* dataset; + + /* index from which next added descriptors' bunch must begin */ + int nextAddedIndex; + + /* number of images whose descriptors are stored in DS */ + int numImages; + + /* number of descriptors in dataset */ + int descrInDS; + }; + +/* -------------------------------------------------------------------------------------------- + UTILITY FUNCTIONS + -------------------------------------------------------------------------------------------- */ + +/* struct for drawing options */ +struct CV_EXPORTS DrawLinesMatchesFlags +{ + enum + { + DEFAULT = 0, // Output image matrix will be created (Mat::create), + // i.e. existing memory of output image may be reused. + // Two source images, matches, and single keylines + // will be drawn. + DRAW_OVER_OUTIMG = 1, // Output image matrix will not be + // created (using Mat::create). Matches will be drawn + // on existing content of output image. + NOT_DRAW_SINGLE_LINES = 2 // Single keylines will not be drawn. + }; +}; + +/* draw matches between two images */ +CV_EXPORTS_W void drawLineMatches( const Mat& img1, + const std::vector& keylines1, + const Mat& img2, + const std::vector& keylines2, + const std::vector& matches1to2, + Mat& outImg, + const Scalar& matchColor=Scalar::all(-1), + const Scalar& singleLineColor=Scalar::all(-1), + const std::vector& matchesMask=std::vector(), + int flags=DrawLinesMatchesFlags::DEFAULT ); + +/* draw extracted lines on original image */ +CV_EXPORTS_W void drawKeylines( const Mat& image, + const std::vector& keylines, + Mat& outImage, + const Scalar& color=Scalar::all(-1), + int flags=DrawLinesMatchesFlags::DEFAULT ); + } + + + #endif diff --git a/modules/line_descriptor/samples/compute_descriptors.cpp b/modules/line_descriptor/samples/compute_descriptors.cpp index 559fb6731..c523a8050 100644 --- a/modules/line_descriptor/samples/compute_descriptors.cpp +++ b/modules/line_descriptor/samples/compute_descriptors.cpp @@ -58,8 +58,6 @@ int main( int argc, char** argv ) } /* create a random binary mask */ -// cv::Mat mask(imageMat.size(), CV_8UC1); -// cv::randu(mask, Scalar::all(0), Scalar::all(1)); cv::Mat mask = Mat::ones(imageMat.size(), CV_8UC1); /* create a pointer to a BinaryDescriptor object with default parameters */ diff --git a/modules/line_descriptor/samples/images/cameraman.jpg b/modules/line_descriptor/samples/images/cameraman.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9345b9215a4ca588705d83c076453d49ddb40731 GIT binary patch literal 23920 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 L+S`Y&F`EC`j{&Dw literal 0 HcmV?d00001 diff --git a/modules/line_descriptor/samples/images/church.jpg b/modules/line_descriptor/samples/images/church.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3801b4339e03a2aeea7ee2596f9e73a476807f15 GIT binary patch literal 27117 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

Jm` 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 z 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∈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

w>@^UN`D<+;ym1(Yg^6 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�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 z z`P4XY!zv_qAE&VBJNEKUqpz-!E6tA>FQ@z9nb&;BY!-w0Iv*X=htF8)Z3sVx77-Fr z4`8X?slIBWb)-n{J{Y*r=IJfUs5Y-Q>YLj~7Us_Yz-O0zz$LdB0Cm&P=aeqHK8zy$ zd#W(y_Ng#rsYdP)n7OvTTF3k2l?hYd5uT*C4=|;Cw4XB=7!W6E_B)jyBqVSUjJ< ziv!!1p74C6eG`6hZG@0~Y@l>a)s09=Yp*+J|1EbUA7(9-Gj&q69*@AUg{AD{K;5>f z46#SR;)zgTD9!5_D<#8=zR56ZoF#@p%Mdr|YW0%*3^BOu(|3ECz-P`udF-7P3WCr~ehMSwM@O4Y6uN~o{S6Tn>nkS+$mN-M!aT`}h2$)%$4&3S5Ln^QpS@a{Nd zW*KFig#YRJN!3;HS2Mm}<`I;;+_mOrwx!qcpDAf~SpG$Zq`C2-;Nrw)gAi=G$=oWB zyB*u`w)|J)v%1y_W4VFDir3j{cJv_N;^sTt(r-uhZ1VCyu>nW4&6mx%`D^Zj01NQ7skgAEU@J_pB}|2-EXJg77SyU)1+6PIOV;5H?}dO~YolBFAl<2?|x&rB+u2R8_sKE*8Z{RePS>`N}dAaH!A z)(_}ajEty)p2D(TKkTTuDyAjW_$^C<0(JSQj*Cky*QkqEtEPGD#cPS9FikR-1=1?0 zI{10mH-|m7TKk7l#rc^bJ$TYXU~j2tONc=AmuBVFyeO2|K>M+0J-Q5c#@FLajgAxM zrIlJIOs35DT}PKYN845V|Cyy&>~&?2^1y3NiZjNn&ANp|b8cnWys%2E8d3IEbh?_h zFK)gZn=JS&zlZ!Quw&0DTwShD&yIaL6H+#Ptgu6x<&NYjW5O%LGf*U~x7DY7y=A@m zg3e}z^T7%0mCma^jnQO{NkO;*CBS6g-w;rB&x=+xTH5u;zYa#uL+AKD`*SobmzMa;J%-z z$wBoUEQR!Bhh&_zqM&YQv5p6h2d_7Cu7MODXWF-HU8HkSMDG9yR~uujVy?t^0Ri#% zZv$AE7+-X0IzQNAgGd(*s+IlIPxq3WlAkP&ZJUV~uC`!7fXmUN=q1f>F z+p&9gMA^3wkueFE?(;DrE<0v!N{G5ZrY3tsGIM(W}&L^Sm#d#2A0<8}th#9s^m2GpmTW&_FSn+@&Ojn`Vx{lVxjWXe#F4 zs(|8_=EG)UU`8xYS*+6)xyx54ZnOZpxF_j8Qia7IYk8j#50r0pi4MJ(`v44KzPxyA zQX(q}Oixd7Qh}I~$U}+d;OM6!yzu=+W|JcOH(+N zSr9+$eZ5U{#KJV#|As_eL%<~(03Z(lXe{il^jysV5l=My7x%eVkMFh`fHs@gN0_2! z!X#^HWzuC2-#PJH;#Up+HSlO96YO3&8`wq96{}*9q57;8DuBwn8rdRsAY5MiFO_<4`CHrXTCKBoaHyyGD`A>7@3xMNg@h-QKqWCie@~C9kXt(-)uhJC-Q^sbER#hwdZGZDp?FqEBfn zvp~%yqaB-Gk4%=RWY3V93Ejgt737+Ls;U?*FG zlIDUQd&=nV6CddwMq#v2oWP4ebmN|*8k2$fnBn`Uw4(IBzGB|5;)!as9F51c*NHB> zBK!7Ph?kQ~sdrB3|G9Bkd$s+y=|#G-lC67=xO%hJ z+}whLZ~jLBGa%tMOuX!B~@-F668uht&edPu;vJh~PMIph( zEV(PnR1l*`i%Zi+nW&Xm#al?s5olA0i51u}CUzc^#>ey`if$xx^!;p7R?!j)w{>BmaHzzuX-wxH(R`cPLx5;hPl zga05GkZ$1+O~y+++-pNPhU-ZBwtPCcdtXjL-+GWKH_SZ%gScjl6P|KejO6F6J8TeM zNGAQ=5dCp_eFBm2t|9t<9_{5TB-W3AKe8~fXOWK*pQNN)LI`t9d%^n98ZFPm zYkP;R7kZ??XJb8Fe^#@Gj&>2!gBRB!>l7LA!2D4DKj+u@N0k<-Jb|@T$R$@^066+m zoCIzA`}OP56Zwl6QorO{aYk5JHbm_^dziGc%n3I{D9OM1A=3HM-+8bX%-01N%BK3a z2dbwv|3PR_obv#LF9HV`q@SeM!P|8lgG1GQO}pioKYQ^U(M`}joe<3al+>5#3#YN( znRRhYm7d!on;KFR{JM576%-4YX6ypn6d3&Rt=^uy_+IeKHc|g14a=6?Pi$bt#W0x) zbnEZqJGICl{rLh1)?`>yK(!?FAMv?aOZ}HXB30C_XniYxQNiZC2D&|R%VzLdRi{e% zvxrceytzkKeH7uBvlOTj)1%yc!8mMWV$6ppF@XDgu`KjSahHK>TVOP)*ZACwPO8iCc9|z^P;Ta6z494gW$rl9%c=hqi@S?<+3bG&9d}XTGB~W_%l&Ppqj!A z;*`-RRsQt@P7s0AOMoYD3Xqd`hxkJqzNmR|u?00_&y8k%_SVDqLkJOtjh4aU^y<0~ zCPY>wKa(`*o=h{B31=m~&Uj^|&;!{-NFsQiI^QXg&AvtQDQT-=De9}32%*<%u>>hP zK}%kNF?f8^&FHQsi=%OS0}HBDY*KfXLp^8b9`4$h)1)zKa4$;nG$ScC?col=F^7XQ zOA!qV7*c%UkCw`H%Xgf&-bt!Gmdk=b_e2u~<`jy)n)1vMDnzSZcV`HH$fGtWy1lYR z4L`WjUIGAiFVWtSW2Ai%Rk(FaRmBK=teLWBd(MmI3~LF9%E}$Uv47$p3V`0V=%PMl z9}gVg?X)%+Gm(*pp(_u_z3IyMKQ6=N9L5XsZ~_FEso6yyl1S&-*YPIYayJ>chUwtm zx=Y56{P>aLHme4Yz5`V4bS#vMLsq1QM6j1QX7;d3eh!(KnIN&8g)*?QA<~S0`+@5l zJoUw@hVw3U}}Oi&uS`?v#gJWzRlkVBK~XBjvtN>Y3Ymd1@w}o?5y)v|&5RrBqv{#b(#l zD|)n7)u$?L*x)bxzIWp9zz|<`ut7yi<51>FvjI>&=b<~Y9OzqM8b=6dMl0F0`M2W7 zh(-22NxzPA>^-8hx~t-fhRGT?`py{&>7x6jeN7*#-9gR_yEHwNqn;W7fXgiOB>+Yk zo_vwJ#rwW=sVs0K`sku_8(Q>(H+4We3;l4Bx3v6Lmj?5+ruKTVaLc%sd;rp?@ArvR z!CG}4x{I&FYxxD0W`=~ec^NGcmSd2?i*sumdnHEx&Eh8Lg}Xa#%lPHZ#(>nGQNoR( z2NP$EKJS6SeDqB`yD7Dq1Z4;{yK!X^5#n5ZQT9uAD4tr8AK7@}Ht{MaL;IA2jH$Ex z-vlU_=9ezb`*633Q@%us!UrJ1SDX%S7S!anNX=ocQcZqpDF63%Y++<=L@Qn<^_gz| z0s`^DEUpfu-of<*Yhpog! zAyov_CRY$>LtRb)LkzG=x0de_Pnffr6k98PemnE|lLW7>C}_0FA+zu;<XDF+Dd2iN-1Xx{=Z_~fY#lz`OXe*Q&f5(y zt~^N}sX5VPG*98p%&PF@!4UAZgYA`^7=`ov9mK=Da5R0rb+g8^=h(^yP)QntB&p@q zs{_gF+<)|L3>GEGl1(2PzWxmZon>rAdT1MQ!vl}BqG!Us7nQ<0d{#EX!&#JfS&tbw z_dySSJvlh&A4p|lE&fv7}aQA)O?|IkA9t=i^b_C?*)2DTzEE42bsbeFgsif?4q_r z8}3LxX+4XDmYP={*ww#--9>&h`dnQxouO!$P}^6Wp;#)cOC34=?~f*_MNP*mBj%Cl zWb4YT@DJzbi~1L+X$?QQ{~7YKQ#C+e#+sUrncw^nHc}rz?;Dg^!>KAA4o_mpP2YAr~MzR7V%*9>5h#e*wzbJkC2>^(E3ASrm zo6>=F2G32k>(_etnc!X*XXt-Q-Fp~)XZY%i}ywbwBpgd!sj+c;vE?%e?&;R{=AH`nn zssHe6fJ;O~`YWdM1zr_>C9@&(O`5II7uxN4w5mIdfHs(bWIe(RiM^_sSiq}CG9NKS zq9pF+yNS5up;ZOBZp+@j%XcS~7QjgJ>Iq-c2V($@ns{q)+8^DmkXFtW>J3kIB`j|r zT;#k}lm*d7UO(1=fo=t#Xxpq!c^rhCVvWMcV9$a zB3Brl&?IB%IaXkoS(H3;q~r`T7Yz5bAD!#w2MivBnn1g{*gop`ljxo-#d5qhbj*U& zs{_ft4~PhMg-@?{6?!N9TeK$flN~u=h!zNftj?J+QD_;;P)?DUq_M)!#&R!7AF1Dx zb#HAEx#3q3=9s2}T7+6Zz~$G@w|v}tl~+fJr_!Yb+e#x%f>ISq>qwfs+M?nera`68 zs;7;*CiXj^!l!I7Jv)qp>&W%A9F)|by>P2<8=|xJ?Ak%oTpr$!Tb}$lc(LrZ6(3$w z@y9h2=KNAM91;K2vb59j?Zt300%9Ud;?vaRf_zAL<3hve^4^O^?SJ_oV6YtPS1Mc^ zHrYIVu0BnL4DojDhGih(R|o|Tc8>hY9}djT1F3cU5!U1d2~|)2eC5|4upEy0uH*Sa zYpD6HFadpPCqaJaj2~%N_UdIsdY|_2!9?Gyi3vb`TD0Z1+)0Q-(V5Wa!ylbdrH)g+ z>nJ#Kfav}8lqqH|hVye0WTrpag5Tf(fEgU{tsi`sr@Q;oj^U#tbK2oVz)buAZH8=b zN%W;fSB%yTOA5lZ-?1)V=Z3Tx{8)|M?Uy%HRy;?*x3C-GWH z=g&7Q-JGL_EbL#R=IFsHgB4Zt5SeBD=UvfKHo`@ET(wWP9uG;xmr;zP;iLAEz>VQ@ zEr{Yni1<$TIkgH2kvzWVam|@< z!F5)+3*c8MKFJ3u;6=5)FbA8?S89S;2x~_+*|%2GjdiI28>YMdjwo@FMfCV#akVbH z!;{|zuZuPQs-xzU!`NJII$pb~3#h&EwyL~B+%c__PeF25m|{PtuXLac_OgDjdtvYb z%uX;XpI4qJe-JkDy#Q%BQQr8dH3d*lnQh3n1J*`C9-$zG z+Re8r(?KBX)dbs)fk3~DtFoLv$8<*9Id|@50-Kt3*nI{F%&E-wk$CdWuIPG?o zCiQd?9}pk>)?85Ge0%zV-#hX5{v63?cin07fAUorAg2kqlNbY-JfZ2SN{BHAxTtB$ z*t!`O`q+@+6V6UWkgj?y4U}b473Lh*t18T_g)z@$x4hw+$bM=e=>o&fKg1BW^3pnYT*;&VsEL67z_c(${-exM$w_ z)%2&m@tcQ0*%1Ah8<6T?2f4p5=JD6yA!r-@se;1tNyVWgj%O{S@~4FKz7RC|cUl8yK^?c*!YgM-)?%z^!lF3Mf3NfWs`qBBr zqH+dn;^1|Ze>B$UH7AaWxu_gD)YmAc41lbg*qTiBoehPkoIsh}n`BIYiq|9wSy`5%D z5i4`YHrjr8i?Bq*39^(xW`*DWK#RtrineaRvcWiD+MyONYe8T z14nte)5uTJO)71oq+B;Mh_u)9Jo_{hX%Je6v&LsOS$*(HDTg6kv#L!9A_~^)o)KT< z%A4%qixbF*gr#w>obJ-noy*=`+zvTm`donn(V}cPahU_R9qQZYh|~8;CksH1Q6nKn z{mLyx3gdmzI+O+As!ZHXs?(h`wB^tYQZ`d>JSq06_96{z1(~8lex{UeE(I%61tO#> zVnkK@$l{MaZ18X>>&H;ev7{72`o3rJ^m;!>Am)r;yZSI!exWlF8xDB7;&Z?2k}p6^ zw5+mgK(LB`Zk_W^ulIz~Tvxb6^^KjmLYv86n(kM}y3S(I<$a09yS3p zLg4zKk%3D}x#EZ>oGqIz*~Bq~F@X5J0AV*RdR{RBgG^EyE)}4yuVTIyEYx6pR3OhP z8)A#oIZcO9;t=O7$Ce;no&fWnGbXGxvlv)h+gmOWwJ}7gpD4N3Hb!-Adz<-5)~A3# ziqIY4B&vL6aiLM0^{x@(W*V-V4|bLVs$(rLQB@OB+Gwho{k$&Vb1Vwg^KUMSLN5;R z?#$81HojrG%d<7`gl0ubR|j~O^o4Q>c+IPlqc>KK?SG*V_OcU&gwTF0o_PucY#s2o zve0~PGDF3%cT+!EA7)EFMG=qUT*YeX+;MprsG(Uk>|MWs#(4yqlReN>xMHVC_CDwP zZeJR?3E3v6xNEdDPl-=IE@y-=O(^?Tp$&vfjGFBH3NJq_!^7%l({MU`)e!P z!|#f%iPj}$i2*-`fS4Cy4ifpuP4>O14rQahXU}5;H&zxiD}iml(Z-JgH_P?;|6H6A|ul9@Rk zNhXqu(JquhR`685T;b3^Bd42j^(SSnZQ6dxk1GAgsY&f}^>jn1U5konR>D|^-o%48 zZWpuZ)P)k2%GQy-ztkdc%~ ztPsTSpU0D5RCOHxD$JDRxH8)84 zyfZbSSZEi_d{FQ`2rqds{wVf8!0JW0teWBw>D+*B9P+6kszQRb-hmn+U*y)geguqp z^6o3;HsB)z^W|NJK6ScAP|2XuMM9ypTp7{w_q&6d;-`kJmGjbz+|EKKU!e;d`` zlXc)}>eEyclcd+?I*7wDRI&DT7YqTln3k@`Ya=7N8!Hg&fmoi%`iX+b@3jw(MZDpP zLnRP@rO0hZjxWn?3;1UPT>;D3oZ9YLeYtTlVG2Su%J8{AS~)+zTE00T#bsU6$&AZF zIER0J9F-$h@h~6dt?o7;auZwCZ=n8XGlyR5)2(H`M|=v4Qv%)y>tBpfi3@-MLBVc_ZcPO4s6b zz}zDMLW?2^xcYpyrg-UYfqf-GIbh=__LT{(9r|CI8{8$MiCJ`|RyC z?1mAWV!r*&-4>!czR(;8mk%q2Dd zT6&1N73{n665^?hQ4q!`+Zge$sbtHY5pLwRmP14ao|kV7U7wkhF|(r?~4M8Uotmx02dV+=%J*kKy4LC$x z^r#lj`8%64YCD>=KH6cvydU0M_QdQw|i0%p-mtajif(rih-1~oHXdz zMp@FKTuWY!uMoF4Go|37RZkIk^C}bi1 z0am5#fY35){PW2qGyXe$I2lLJXt2i1@5{)ofV`OzE(oS#|czW<5!<^(QxBs?X8|8>|^gQPZQl z-M)?=D_sQkZRF6}A^Hs~4`jo3X{7;myUPQ{GoFnSW zcbw?4jH%U@Um@P|?Ow}FQfXj{K~++qd2+M1nPiG9rxEtsq&e6Zam+=8FWix~{lMAi z)3_XKv)Ly6zb%j3xFp6wF@Bf8Vz9LosHu)+Mdre3>Ze11eI;H zO)tDT;&Js@5cm47Lb-}7gzq=r+_|G|wA(D(wxz&)@;?B2`kW2lz8>n)MLKM9OW=(t zBN(J^Yg=X#SL3ImObo{!pA!~AB8w&ZP-|m6wGhmjjR`9*6VoN&Bw?aw1-;c#^-F7g z=fiu#-}B*%ELX`q80|{}F9Bcq;wNnA-aeSP3b@^!DoKJXNQg5ne{Nj~Dw%D8%uR!O z`jLBc<>KJla6XkyWP?|bj$!lzpz6I!jsbJ$c?<`qIy@135hZgpPvr~-NuS;NUWV+J zp%%c3feXi~8`oY)-wR4pscE6yhvj)YQ4MSFomgO0YU+WZ>Q z;=cW?8yL!2q5LPX!XYuGLsh5rl>7y_skBovl&LfwA`=oSBBO)5@d!fj(BKXKLn=c2 z!>1H?^uA51<58*>)=uT_%P-4=3Kcy!gLd=g%ByOlm6(!Z{&)2iOS=CuJ)7!nx()QY z&v@msvykx*1{rZp`#&oL>3SdNy;3vidW!ata4%ZMM0U-w@kE35(5YPbps;yUL@Fx( zYPY`F@%WTx#JLs3g-*su{0fGELlEc}dJ_Z| z0`d!Nbwxrg{hd&Yi&B?Kd>8oSy*ibC=isSL?^de6gAY*DX)e!q^iNOt{VK^N?wroK88kAkn|805_u-94PMpFY_e1jfbKFi$|XH0V4C z04Nw(1po`|2jCE>sI3&EYwS{ub`j7$v8321LyEWbCad@zE;cnLx)M#gux+)z!Q59u zjF|4b`Lk-Ga?9P=yaE6~gurXDfO!xg@*Rj_;7hO= z2Z61jsQF;D=%*(2@JqHK*OK7n2)4Rp{{TgJ(PV*{K>03IZiQ`I7x8SH$vT~NF-;!_I#~1Hfbadp)7$s;R`AeqgoRi}#UHlac%6&!O z+0CAB@?Oz!=fSx7HiVjrx2iLPQ*wSqnrY1>y6n;!RB^tn!cyd_QnYW61YCX*GQ^=7 zDLp=nB`C)qwfQx|)5mwC33ImIk(-Asn|t^a($bRJ9zLx-na|rRf9U6K1>`Yr7FAdU#FbqE*w&d`8Cat+bZkm=f#GyCuC;l4DOS! zv#S!18k}jrlPuA^iAAnI1;$QMu2h$S<&Pn= zmo&VuBBd!d+hoRFuBgUt({HwC-p%6aEflIxNY@-3x@PfCIzw-YFqf!`ba~*y!svDk z0f+zqC_oyZph94nG$D*np$CBuF>j+)7Mg2j?-ffOrnzmE3x_Eyw&^$I+EA>Kj};`9 z=uof6IYqfAsuPS-wYBl^b9%X{RD7e;^i%%;!Tlmx9dgL@d3ckaPEGdC%xOZ~{)U^U z$D(I05Vp=Nxt>Q}4A6fpK;Eb?LE6y2kOamsT43l9Kd=u10ra{M2S5pIJdgPw5im#^ z*easqx1i~Ys2z=OvZoauw|-3bLqO1-i^0+9usn{=oS2*+oz6Uel3yilcKi?XN-=SzW|&(^$?1OtWU1O}>!MU7_q3?j7B;VT#XO(m zagTSjXNFpP6S>d#YvjDy6jvy_T^!!$H6_`;Nk$m$Es=$ONn6zx@$#zZ%5F{C(qAC5 zZK_pAE5FF}B_^cUe&wSao%U8J^8SiRw??pvv!fJizv$B68#(<)sE-OwS;F@2$N&MQ zV*m%(fB+aS#q`xh_>5BWzK5KOQ9{ z{L?ORPE(S6A4}nrDXemgWVp#L*G$H5lw6j+QN@y6rmX4D>K;gA$NvBrE{(8aRc5ZV zh|88Zqo$d|lPkzafvV&7PeT(0q#wXgn)nXE72{w5U@rha0b9_YV|o{W3qlxlJ7ev1 zB-r0qVj6UYosIT3(^QFC>}@u!y$Zd$8>Et|enJV$NKH|$JPt`T*3O70jcB}?T7M(O zmBV~#Go?!DwO&Y_&f4G5;et)49W~jeDsq%$t^AP+mPf9??0GWJgrfvTIJrigu1u-( zj!rG~ip9!JxW18^TxR)gzR)C;C&e`1L}BLy+lh`zOC-4CTlhA|43Woj(?*uK`?q^D zT&CaSr5}Ru<&tg^=^5p{yHs<$wCc8L70NuMjPh|w@kViV4XqeSY}*W5TI|xVUQ5QD zrAJR1iOHMP@op&OY020%PK3n37eh>TA)pY4U?Gaa#NNh(u?#B29S9gjS)z?!$*SVv zb-s;pLb*?hYATH+)Nn@{O-Z|Vb892u3DcLyj#uqOpPn4aeK2W6=xAJEAUC^g0T45%*tr*EFtFtLD jeH-JADzcO{Y3%631?8k=>OD(W7_`nATXq|ve`o*MlxtZ< literal 0 HcmV?d00001 diff --git a/modules/line_descriptor/samples/images/stuff.jpg b/modules/line_descriptor/samples/images/stuff.jpg new file mode 100644 index 0000000000000000000000000000000000000000..42cb9cb6ad58a4bdb8aff867e795fade1196818a GIT binary patch literal 57113 zcmb5VWmuG7)Hgaq3R2Py5>nD2NQ=@^14EYr(%n6jDBVa%4-=Fi-AH#0-Q5k+`0{_A z_gv?EJ^NbM{bA<5_lo^nYwxx8-v4I)tpJFW<(1?Cz^C>a_!Q13BFGxXZaA4f5IwcUb(8J?RHAxKJg!`CoVwDC&T=ISUq+2#O>LC ztlm9I1w==~KzoLP`D7`~r`P`D^#b!H7BT-5A8ZmPfhSIRq)#lE1!Y%H$UvXTSzLwQ zpFaB#l9*rlZw`Qm4t&xK{RKc8aO)7_J6h5Y(U90dPu9R@zsx1Ug7EpnF*kEbl1Fi| zurAP|sey0h02u2+XfaDS`5Dn=E-8!*@DcnmnbQ`X=rRv24i}wddK(1sK(w

0{pg2BNKf}{5)b3=qO_e1{z6G$ibm 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