From b4e892ca2cde02695d2de7501bf4bf7f1f1aac38 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Tue, 9 May 2017 15:33:14 +0200 Subject: [PATCH] [CVV] Finished part one of CCV sheet 5 Signed-off-by: Jim Martens --- ccv/sheet5/CMakeLists.txt | 9 +++++++ ccv/sheet5/main.cpp | 50 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 ccv/sheet5/CMakeLists.txt create mode 100644 ccv/sheet5/main.cpp diff --git a/ccv/sheet5/CMakeLists.txt b/ccv/sheet5/CMakeLists.txt new file mode 100644 index 0000000..a9a45e6 --- /dev/null +++ b/ccv/sheet5/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.5) +project(sheet5) + +set(CMAKE_CXX_STANDARD 11) + +find_package( OpenCV REQUIRED ) + +add_executable(sheet5 main.cpp) +target_link_libraries(sheet5 ${OpenCV_LIBS}) diff --git a/ccv/sheet5/main.cpp b/ccv/sheet5/main.cpp new file mode 100644 index 0000000..0ba5489 --- /dev/null +++ b/ccv/sheet5/main.cpp @@ -0,0 +1,50 @@ +#include + +int main(int argc, char** argv) { + if ( argc != 2 ) + { + printf("usage: \n"); + return -1; + } + + std::vector gabor_filters = std::vector(); + cv::Size size = cv::Size(20, 20); + double wavelength = 3; + double standard_deviation = 18; + // g_1 + gabor_filters.push_back(cv::getGaborKernel(size, standard_deviation, (4.0/8.0) * CV_PI, wavelength, 1, 0, CV_32F)); + // g_2 + gabor_filters.push_back(cv::getGaborKernel(size, standard_deviation, (3.0/8.0) * CV_PI, wavelength, 1, 0, CV_32F)); + // g_3 + gabor_filters.push_back(cv::getGaborKernel(size, standard_deviation, (2.0/8.0) * CV_PI, wavelength, 1, 0, CV_32F)); + // g_4 + gabor_filters.push_back(cv::getGaborKernel(size, standard_deviation, (1.0/8.0) * CV_PI, wavelength, 1, 0, CV_32F)); + // g_5 + gabor_filters.push_back(cv::getGaborKernel(size, standard_deviation, 0, wavelength, 1, 0, CV_32F)); + // g_6 + gabor_filters.push_back(cv::getGaborKernel(size, standard_deviation, (7.0/8.0) * CV_PI, wavelength, 1, 0, CV_32F)); + // g_7 + gabor_filters.push_back(cv::getGaborKernel(size, standard_deviation, (6.0/8.0) * CV_PI, wavelength, 1, 0, CV_32F)); + // g_8 + gabor_filters.push_back(cv::getGaborKernel(size, standard_deviation, (5.0/8.0) * CV_PI, wavelength, 1, 0, CV_32F)); + + for (unsigned long i = 0; i < 8; i++) { + cv::namedWindow("g_" + std::to_string(i + 1), CV_WINDOW_NORMAL); + cv::imshow("g_" + std::to_string(i + 1), gabor_filters.at(i)); + cv::waitKey(0); + } + + // read input image + cv::Mat image = cv::imread(argv[1]); + image.convertTo(image, CV_32F); + + for (unsigned long i = 0; i < 8; i++) { + cv::Mat filtered_image; + cv::filter2D(image, filtered_image, -1, gabor_filters.at(i), cv::Point(-1, -1), 0, cv::BORDER_CONSTANT); + cv::namedWindow("filtered_" + std::to_string(i + 1), CV_WINDOW_NORMAL); + cv::imshow("filtered_" + std::to_string(i + 1), filtered_image); + cv::waitKey(0); + } + + return 0; +}