Skip to content

Commit b137bc0

Browse files
pablofdezalcpalcantarilla
authored and
palcantarilla
committed
Two levels CMakeLists.txt added
1 parent a53a2e0 commit b137bc0

File tree

5 files changed

+317
-415
lines changed

5 files changed

+317
-415
lines changed

CMakeLists.txt

+4-82
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
project(AKAZE_features)
1+
project(AKAZE)
22

33
cmake_minimum_required (VERSION 2.6)
44
if (COMMAND cmake_policy)
@@ -21,84 +21,6 @@ set(AKAZE_INSTALL_PREFIX "/usr/local/akaze/lib" CACHE PATH "Installation Directo
2121
set(AKAZE_INCLUDE_PREFIX "/usr/local/akaze/include" CACHE PATH "Includes Directory")
2222

2323
# ============================================================================ #
24-
# Find external libraries and dependencies
25-
find_package(OpenCV REQUIRED)
26-
if (NOT APPLE)
27-
find_package(OpenMP)
28-
endif ()
29-
find_package(Doxygen)
30-
31-
# ============================================================================ #
32-
# Compilation flags
33-
IF(UNIX)
34-
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g -O0 -Wall -Wextra -Wunused-variable -DDEBUG -D_DEBUG")
35-
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -g -Wall -Wextra -Wunused-variable -DDEBUG -D_DEBUG")
36-
ENDIF(UNIX)
37-
38-
if(OPENMP_FOUND)
39-
MESSAGE("OpenMP found")
40-
if(UNIX)
41-
SET(CMAKE_C_FLAGS_RELEASE "-O3 -Wall -Wextra -Wunused-variable -g -msse2 -msse3 -msse4 -ffast-math")
42-
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -Wextra -Wunused-variable -g -msse2 -msse3 -msse4 -ffast-math")
43-
endif(UNIX)
44-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
45-
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
46-
else(OPENMP_FOUND)
47-
MESSAGE("OpenMP not found")
48-
if(UNIX)
49-
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O3 -Wno-unknown-pragmas -Wunused-variable -g -msse2 -msse3 -msse4 -ffast-math")
50-
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -Wno-unknown-pragmas -Wunused-variable -g -msse2 -msse3 -msse4 -ffast-math")
51-
endif(UNIX)
52-
endif(OPENMP_FOUND)
53-
54-
# ============================================================================ #
55-
# Create projects.
56-
include_directories("src/lib/")
57-
58-
# AKAZE libraries
59-
set(AKAZE_SRCS
60-
src/lib/config.h
61-
src/lib/AKAZE.h src/lib/AKAZE.cpp
62-
src/lib/fed.h src/lib/fed.cpp
63-
src/lib/nldiffusion_functions.h src/lib/nldiffusion_functions.cpp
64-
src/lib/utils.h src/lib/utils.cpp)
65-
66-
add_library(AKAZE ${AKAZE_SRCS})
67-
target_link_libraries(AKAZE ${OpenCV_LIBS} gomp)
68-
69-
# Feature detector program
70-
add_executable(akaze_features
71-
src/akaze_features.h src/akaze_features.cpp)
72-
target_link_libraries(akaze_features AKAZE)
73-
74-
# Image matching program
75-
add_executable(akaze_match
76-
src/akaze_match.h src/akaze_match.cpp)
77-
target_link_libraries(akaze_match AKAZE)
78-
79-
# Program that compares AKAZE with ORB and BRISK
80-
add_executable(akaze_compare
81-
src/akaze_compare.h src/akaze_compare.cpp)
82-
target_link_libraries(akaze_compare AKAZE)
83-
84-
# ============================================================================ #
85-
# Library installation
86-
install(TARGETS AKAZE DESTINATION ${AKAZE_INSTALL_PREFIX})
87-
install(FILES
88-
src/lib/AKAZE.h
89-
src/lib/fed.h
90-
src/lib/utils.h
91-
src/lib/nldiffusion_functions.h
92-
src/lib/config.h
93-
DESTINATION
94-
${AKAZE_INCLUDE_PREFIX}
95-
)
96-
97-
# ============================================================================ #
98-
# Generate Doxygen-based documentation project
99-
if(DOXYGEN_FOUND)
100-
add_custom_target(akaze_documentation
101-
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile
102-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
103-
COMMENT "Generating API documentation with Doxygen" VERBATIM)
104-
endif(DOXYGEN_FOUND)
24+
# CPP sources
25+
message(STATUS ">>> Adding src subdirectory")
26+
add_subdirectory(src)

src/CMakeLists.txt

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
2+
# Find external libraries and dependencies
3+
find_package(OpenCV REQUIRED)
4+
if (NOT APPLE)
5+
find_package(OpenMP)
6+
endif ()
7+
8+
find_package(Doxygen)
9+
10+
# ============================================================================ #
11+
# Compilation flags
12+
IF(UNIX)
13+
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g -O0 -Wall -Wextra -Wunused-variable -DDEBUG -D_DEBUG")
14+
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -g -Wall -Wextra -Wunused-variable -DDEBUG -D_DEBUG")
15+
ENDIF(UNIX)
16+
17+
if(OPENMP_FOUND)
18+
MESSAGE("OpenMP found")
19+
if(UNIX)
20+
SET(CMAKE_C_FLAGS_RELEASE "-O3 -Wall -Wextra -Wunused-variable -g -fPIC -msse2 -msse3 -msse4 -ffast-math")
21+
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -Wextra -Wunused-variable -g -fPIC -msse2 -msse3 -msse4 -ffast-math")
22+
endif(UNIX)
23+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
24+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
25+
else(OPENMP_FOUND)
26+
MESSAGE("OpenMP not found")
27+
if(UNIX)
28+
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O3 -Wno-unknown-pragmas -Wunused-variable -g -fPIC -msse2 -msse3 -msse4 -ffast-math")
29+
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -Wno-unknown-pragmas -Wunused-variable -g -fPIC -msse2 -msse3 -msse4 -ffast-math")
30+
endif(UNIX)
31+
endif(OPENMP_FOUND)
32+
33+
# ============================================================================ #
34+
# Create projects
35+
include_directories("lib/")
36+
37+
# AKAZE libraries
38+
set(AKAZE_SRCS
39+
lib/config.h
40+
lib/AKAZE.h lib/AKAZE.cpp
41+
lib/fed.h lib/fed.cpp
42+
lib/nldiffusion_functions.h lib/nldiffusion_functions.cpp
43+
lib/utils.h lib/utils.cpp)
44+
45+
add_library(AKAZE ${AKAZE_SRCS})
46+
target_link_libraries(AKAZE ${OpenCV_LIBS})
47+
48+
# Feature detector program
49+
add_executable(akaze_features
50+
akaze_features.h akaze_features.cpp)
51+
target_link_libraries(akaze_features AKAZE)
52+
53+
# Image matching program
54+
add_executable(akaze_match
55+
akaze_match.h akaze_match.cpp)
56+
target_link_libraries(akaze_match AKAZE)
57+
58+
# Program that compares AKAZE with ORB and BRISK
59+
add_executable(akaze_compare
60+
akaze_compare.h akaze_compare.cpp)
61+
target_link_libraries(akaze_compare AKAZE)
62+
63+
# ============================================================================ #
64+
# Library installation
65+
install(TARGETS AKAZE DESTINATION ${AKAZE_INSTALL_PREFIX})
66+
install(FILES
67+
lib/AKAZE.h
68+
lib/fed.h
69+
lib/utils.h
70+
lib/nldiffusion_functions.h
71+
lib/config.h
72+
DESTINATION
73+
${AKAZE_INCLUDE_PREFIX}
74+
)
75+
76+
# ============================================================================ #
77+
# Generate Doxygen-based documentation project
78+
if(DOXYGEN_FOUND)
79+
add_custom_target(akaze_documentation
80+
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile
81+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
82+
COMMENT "Generating API documentation with Doxygen" VERBATIM)
83+
endif(DOXYGEN_FOUND)

src/lib/AKAZE.cpp

-102
Original file line numberDiff line numberDiff line change
@@ -421,108 +421,6 @@ void AKAZE::Find_Scale_Space_Extrema(std::vector<cv::KeyPoint>& kpts) {
421421
textrema_ = 1000.0*(t2-t1) / cv::getTickFrequency();
422422
}
423423

424-
/* ************************************************************************* */
425-
/**
426-
* @brief This method finds extrema in the nonlinear scale space
427-
* @param kpts Vector of detected keypoints
428-
*/
429-
void AKAZE::Find_Scale_Space_Extrema_KAZE(std::vector<cv::KeyPoint>& kpts) {
430-
431-
double t1 = 0.0, t2 = 0.0;
432-
float ratio = 0.0, smax = 0.0;
433-
int npoints = 0, sigma_size_ = 0, left_x = 0, right_x = 0, up_y = 0, down_y = 0;
434-
435-
// Set maximum size
436-
if (descriptor_ == SURF_UPRIGHT || descriptor_ == SURF ||
437-
descriptor_ == MLDB_UPRIGHT || descriptor_ == MLDB) {
438-
smax = 10.0*sqrtf(2.0);
439-
}
440-
else if (descriptor_ == MSURF_UPRIGHT || descriptor_ == MSURF) {
441-
smax = 12.0*sqrtf(2.0);
442-
}
443-
444-
t1 = cv::getTickCount();
445-
446-
for (size_t i = 1; i < evolution_.size()-1; i++) {
447-
for (int ix = 1; ix < evolution_[i].Ldet.rows-1; ix++) {
448-
for (int jx = 1; jx < evolution_[i].Ldet.cols-1; jx++) {
449-
450-
bool is_extremum = false, is_out = false;
451-
bool test_same = false, test_lower = false, test_upper = false;
452-
float value = *(evolution_[i].Ldet.ptr<float>(ix)+jx);
453-
454-
// Filter the points with the detector threshold
455-
if (value > dthreshold_ && value >= DEFAULT_MIN_DETECTOR_THRESHOLD) {
456-
457-
// First check on the same scale level
458-
test_same = check_maximum_neighbourhood(evolution_[i].Ldet, 1, value, ix, jx, 1);
459-
460-
// Second check on the lower scale level
461-
if (test_same == true) {
462-
463-
if (evolution_[i].octave > evolution_[i-1].octave)
464-
test_lower = check_maximum_neighbourhood(evolution_[i-1].Ldet, 1, value, ix*2.0, jx*2.0, 0);
465-
else
466-
test_lower = check_maximum_neighbourhood(evolution_[i-1].Ldet, 1, value, ix, jx, 0);
467-
468-
// Third check on the upper scale level
469-
if (test_lower == true) {
470-
if (evolution_[i].octave < evolution_[i+1].octave)
471-
test_upper = check_maximum_neighbourhood(evolution_[i+1].Ldet, 1, value, ix/2.0, jx/2.0, 0);
472-
else
473-
test_upper = check_maximum_neighbourhood(evolution_[i+1].Ldet, 1, value, ix, jx, 0);
474-
475-
if (test_upper == true) {
476-
is_extremum = true;
477-
}
478-
}
479-
}
480-
} // if value > threshold
481-
482-
// Check out of bounds
483-
if (is_extremum == true) {
484-
485-
cv::KeyPoint point;
486-
point.response = fabs(value);
487-
point.size = evolution_[i].esigma*factor_size_;
488-
point.octave = evolution_[i].octave;
489-
point.class_id = i;
490-
ratio = pow(2.f,point.octave);
491-
sigma_size_ = fRound(point.size/ratio);
492-
point.pt.x = jx;
493-
point.pt.y = ix;
494-
495-
// Check that the point is under the image limits for the descriptor computation
496-
left_x = fRound(point.pt.x-smax*sigma_size_)-1;
497-
right_x = fRound(point.pt.x+smax*sigma_size_) +1;
498-
up_y = fRound(point.pt.y-smax*sigma_size_)-1;
499-
down_y = fRound(point.pt.y+smax*sigma_size_)+1;
500-
501-
if (left_x < 0 || right_x >= evolution_[i].Ldet.cols ||
502-
up_y < 0 || down_y >= evolution_[i].Ldet.rows)
503-
is_out = true;
504-
505-
if (left_x < 0 || right_x >= evolution_[i].Ldet.cols ||
506-
up_y < 0 || down_y >= evolution_[i].Ldet.rows)
507-
is_out = true;
508-
509-
if (is_out == false) {
510-
point.pt.x *= ratio;
511-
point.pt.y *= ratio;
512-
kpts.push_back(point);
513-
npoints++;
514-
}
515-
} // if is_extremum == true
516-
517-
} // for jx cols
518-
} // for ix rows
519-
} // for i evolution levels
520-
521-
t2 = cv::getTickCount();
522-
textrema_ = 1000.0*(t2-t1) / cv::getTickFrequency();
523-
524-
}
525-
526424
/* ************************************************************************* */
527425
/**
528426
* @brief This method performs subpixel refinement of the detected keypoints

src/lib/AKAZE.h

-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ class AKAZE {
125125
void Compute_Determinant_Hessian_Response(void);
126126
void Compute_Multiscale_Derivatives(void);
127127
void Find_Scale_Space_Extrema(std::vector<cv::KeyPoint>& kpts);
128-
void Find_Scale_Space_Extrema_KAZE(std::vector<cv::KeyPoint>& kpts);
129128
void Do_Subpixel_Refinement(std::vector<cv::KeyPoint>& kpts);
130129
void Feature_Suppression_Distance(std::vector<cv::KeyPoint>& kpts, float mdist) const;
131130

0 commit comments

Comments
 (0)