diff --git a/include/filters.hpp b/include/filters.hpp index c86c095..80a6d37 100644 --- a/include/filters.hpp +++ b/include/filters.hpp @@ -17,6 +17,7 @@ enum FILTERS_IMPLEMENTATIONS { OPENCV, // Add your enum value here // YOUR_NAME, + MAKAROVA, NUM_IMPLS }; diff --git a/src/filters_factory.cpp b/src/filters_factory.cpp index c977bf3..37800f3 100644 --- a/src/filters_factory.cpp +++ b/src/filters_factory.cpp @@ -3,6 +3,7 @@ Filters* createFiltersOpenCV(); // Declare your implementation here // Filters* createFiltersYourName(); +Filters* createFiltersMakarova(); Filters* createFilters(FILTERS_IMPLEMENTATIONS impl) { @@ -15,4 +16,8 @@ Filters* createFilters(FILTERS_IMPLEMENTATIONS impl) default: return 0; } + + switch (MAKAROVA){ + + } } diff --git a/src/filters_makarova.cpp b/src/filters_makarova.cpp new file mode 100644 index 0000000..2d8456d --- /dev/null +++ b/src/filters_makarova.cpp @@ -0,0 +1,69 @@ +#include +#include "filters.hpp" + +std::vector; + + +class FiltersMakarova: public Filters +{ +public: + virtual void boxFilter(const Matrix &src, Matrix& dst, const int kSize = 3) + { + Matrix new_src(src.rows()+kSize/2, src.cols()+kSize/2); + for(int i = kSize/2; i < src.rows()+kSize/2-1; i++) + { + for(int j = kSize/2; j < src.cols()+kSize/2-1; j++){ + new_src[i][j] = src[i-kSize/2][j-kSize/2]; + + } + } + } + virtual void filter2d(const Matrix &src, Matrix& dst, const Matrix &kernel) + { } + virtual void median(const Matrix &src, Matrix &dst, const int kSize = 3) + { + Matrix filter(kSize, kSize); + Matrix new_src(src.rows()+kSize/2, src.cols()+kSize/2); + new_src.Zeros(); + for(int i=1; i vector_sort; + for(int i=0; i