28 #ifndef SHAREDSMOOTHIMAGEFUNCTS_H_
29 #define SHAREDSMOOTHIMAGEFUNCTS_H_
54 template <BpImData_t T>
56 unsigned int x_val,
unsigned int y_val,
const T* image_to_filter,
57 float* filtered_image,
unsigned int width_images,
unsigned int height_images,
58 const float* image_filter,
unsigned int size_filter)
60 float filtered_pixel_val = image_filter[0] * ((float)image_to_filter[y_val*width_images + x_val]);
62 for (
unsigned int i = 1; i < size_filter; i++) {
65 (((float)image_to_filter[y_val*width_images + (
unsigned int)
util_functs::GetMax((
int)x_val - (
int)i, 0)]) +
66 ((
float)image_to_filter[y_val*width_images +
util_functs::GetMin(x_val + i, width_images - 1)]));
69 filtered_image[y_val*width_images + x_val] = filtered_pixel_val;
88 template <BpImData_t T>
90 unsigned int x_val,
unsigned int y_val,
const T* image_to_filter,
91 float* filtered_image,
unsigned int width_images,
unsigned int height_images,
92 const float* image_filter,
unsigned int size_filter)
94 float filtered_pixel_val = image_filter[0] * ((float)image_to_filter[y_val*width_images + x_val]);
96 for (
unsigned int i = 1; i < size_filter; i++) {
99 ((float)(image_to_filter[(
unsigned int)
util_functs::GetMax((
int)y_val - (
int)i, 0) * width_images + x_val]) +
100 ((
float)image_to_filter[
util_functs::GetMin(y_val + i, height_images - 1) * width_images + x_val]));
103 filtered_image[y_val * width_images + x_val] = filtered_pixel_val;
Define constraint for data type in belief propagation processing related to image processing.
Define constraints for data type in processing.
Utility functions for belief propagation processing that are used in both optimized CPU and CUDA impl...
Contains namespace with utility functions for implementation.
#define ARCHITECTURE_ADDITION
Namespace for enums, constants, structures, and functions specific to belief propagation processing.
ARCHITECTURE_ADDITION void FilterImageAcrossProcessPixel(unsigned int x_val, unsigned int y_val, const T *image_to_filter, float *filtered_image, unsigned int width_images, unsigned int height_images, const float *image_filter, unsigned int size_filter)
kernel to apply a horizontal filter on each pixel of the image in parallel the input image is stored ...
ARCHITECTURE_ADDITION void FilterImageVerticalProcessPixel(unsigned int x_val, unsigned int y_val, const T *image_to_filter, float *filtered_image, unsigned int width_images, unsigned int height_images, const float *image_filter, unsigned int size_filter)
kernel to apply a vertical filter on each pixel of the image in parallel the input image is stored as...
requires std::is_arithmetic_v< T > ARCHITECTURE_ADDITION T GetMin(T val1, T val2)
requires std::is_arithmetic_v< T > ARCHITECTURE_ADDITION T GetMax(T val1, T val2)