From 30737542ed3ccbc854a62fb42ea0bcfb8492a448 Mon Sep 17 00:00:00 2001 From: novak_99 Date: Sun, 21 Nov 2021 22:43:51 -0800 Subject: [PATCH] Added gaussian filter, added laplacian filter. --- MLPP/Convolutions/Convolutions.cpp | 20 ++++++++++++++++++++ MLPP/Convolutions/Convolutions.hpp | 3 +++ 2 files changed, 23 insertions(+) diff --git a/MLPP/Convolutions/Convolutions.cpp b/MLPP/Convolutions/Convolutions.cpp index 9e3d6d9..b5ea669 100644 --- a/MLPP/Convolutions/Convolutions.cpp +++ b/MLPP/Convolutions/Convolutions.cpp @@ -8,6 +8,7 @@ #include "Convolutions/Convolutions.hpp" #include "LinAlg/LinAlg.hpp" #include "Stat/Stat.hpp" +#include namespace MLPP{ @@ -225,6 +226,25 @@ namespace MLPP{ return pooledMap; } + double Convolutions::gaussian2D(double x, double y, double std){ + double std_sq = std * std; + return 1/(2 * M_PI * std_sq) * std::exp(-(x * x + y * y)/2 * std_sq); + } + + std::vector> Convolutions::gaussianFilter2D(int size, double std){ + std::vector> filter; + filter.resize(size); + for(int i = 0; i < filter.size(); i++){ + filter[i].resize(size); + } + for(int i = 0; i < size; i++){ + for(int j = 0; j < size; j++){ + filter[i][j] = gaussian2D(i - (size-1)/2, (size-1)/2 - j, std); + } + } + return filter; + } + std::vector> Convolutions::getPrewittHorizontal(){ return prewittHorizontal; } diff --git a/MLPP/Convolutions/Convolutions.hpp b/MLPP/Convolutions/Convolutions.hpp index 913c965..fb37465 100644 --- a/MLPP/Convolutions/Convolutions.hpp +++ b/MLPP/Convolutions/Convolutions.hpp @@ -14,6 +14,9 @@ namespace MLPP{ double globalPool(std::vector> input, std::string type); std::vector globalPool(std::vector>> input, std::string type); + double gaussian2D(double x, double y, double std); + std::vector> gaussianFilter2D(int size, double std); + std::vector> getPrewittHorizontal(); std::vector> getPrewittVertical(); std::vector> getSobelHorizontal();