#include <stdlib.h>
int compare(const void * a, const void * b)
{
return (*(int*)a - *(int*)b);
}
uchar median(cv::Mat image, int a, int b,int rec_size)
{
uchar* tab = new uchar[rec_size*rec_size];
int tmp = 0;
for (int i = a-rec_size / 2; i < b+rec_size / 2; i++)
{
for (int j = b-rec_size / 2; j < b+rec_size / 2; j++)
{
tab[tmp] = image.at<uchar>(j, i);
tmp += 1;
}
}
qsort(tab, rec_size*rec_size, sizeof(uchar), compare);
uchar med;
if (rec_size*rec_size % 2 == 0)
{
med = (tab[rec_size / 2] + tab[rec_size / 2 + 1]) / 2;
}
else
{
med = tab[rec_size / 2];
}
return med;
}
void filter(cv::Mat& image, int a)
{
for (int i = a / 2; i < image.cols - a / 2; i++)
{
for (int j = a / 2; j < image.rows - a / 2; j++)
{
image.at<uchar>(j, i) = median(image, j, i, a);
}
}
}
int main()
{
std::string img_path = "C:\[..]\lena.png";
cv::Mat img = cv::imread(img_path);
int rozmiar;
filter(img, rozmiar);
img.release();
cv::destroyAllWindows();
return 0;
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}