#include #include #define STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_WRITE_IMPLEMENTATION #include "stb_image.h" #include "stb_image_write.h" #define COLOR_CHANNELS 1 #define GRAYLEVELS 256 #define DESIRED_NCHANNELS 1 unsigned long findMin(unsigned long* cdf){ unsigned long min = 0; // grem skozi CDF dokler ne najdem prvi nenicelni element ali pridem do konca for (int i = 0; min == 0 && i < GRAYLEVELS; i++) { min = cdf[i]; } return min; } unsigned char Scale(unsigned long cdf, unsigned long cdfmin, unsigned long imageSize){ float scale; scale = (float)(cdf - cdfmin) / (float)(imageSize - cdfmin); scale = round(scale * (float)(GRAYLEVELS-1)); return (int)scale; } void Equalize(unsigned char * image_in, unsigned char * image_out, int width, int height, unsigned long* cdf){ unsigned long imageSize = width * height; unsigned long cdfmin = findMin(cdf); //Equalize: namig: blok niti naj si CDF naloži v skupni pomnilnik for (int i=0; i