#ifndef MLPP_CONVOLUTIONS_H #define MLPP_CONVOLUTIONS_H #include #include #include "core/math/math_defs.h" #include "core/object/reference.h" class MLPPConvolutions : public Reference { GDCLASS(MLPPConvolutions, Reference); public: std::vector> convolve_2d(std::vector> input, std::vector> filter, int S, int P = 0); std::vector>> convolve_3d(std::vector>> input, std::vector>> filter, int S, int P = 0); std::vector> pool_2d(std::vector> input, int F, int S, std::string type); std::vector>> pool_3d(std::vector>> input, int F, int S, std::string type); real_t global_pool_2d(std::vector> input, std::string type); std::vector global_pool_3d(std::vector>> input, std::string type); real_t gaussian_2d(real_t x, real_t y, real_t std); std::vector> gaussian_filter_2d(int size, real_t std); std::vector> dx(std::vector> input); std::vector> dy(std::vector> input); std::vector> grad_magnitude(std::vector> input); std::vector> grad_orientation(std::vector> input); std::vector>> compute_m(std::vector> input); std::vector> harris_corner_detection(std::vector> input); std::vector> get_prewitt_horizontal(); std::vector> get_prewitt_vertical(); std::vector> get_sobel_horizontal(); std::vector> get_sobel_vertical(); std::vector> get_scharr_horizontal(); std::vector> get_scharr_vertical(); std::vector> get_roberts_horizontal(); std::vector> get_roberts_vertical(); MLPPConvolutions(); protected: static void _bind_methods(); std::vector> _prewitt_horizontal; std::vector> _prewitt_vertical; std::vector> _sobel_horizontal; std::vector> _sobel_vertical; std::vector> _scharr_horizontal; std::vector> _scharr_vertical; std::vector> _roberts_horizontal; std::vector> _roberts_vertical; }; #endif // Convolutions_hpp