-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathblur.cpp
More file actions
105 lines (73 loc) · 1.97 KB
/
Copy pathblur.cpp
File metadata and controls
105 lines (73 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include<opencv2/opencv.hpp>
using namespace cv;
#include <stdio.h>
#include <iostream>
#include <cmath>
using namespace std;
Mat blur(Mat img , int blur_kernel_size)
{
int i,j,k,l;
Mat temp = Mat::zeros(img.rows, img.cols, CV_8UC1);
//cout<<"printing kernel"<<endl;
int highest_elem = pow(2,(2*blur_kernel_size));
if(blur_kernel_size > 0)
{
for(i = blur_kernel_size; i < img.rows - blur_kernel_size ; i++)
{
for(j = blur_kernel_size; j < img.cols - blur_kernel_size; j++)
{
int val = 0;
int intenVal;
int sum = 0;
int qq;
for(k = -blur_kernel_size; k < (blur_kernel_size+1); k++)
{
for(l = -blur_kernel_size; l < (blur_kernel_size+1); l++)
{
intenVal = img.at<uchar>(i+k , j+l);
//float qq = pow(0.5, (abs(k)+abs(l)+(2*blur_kernel_size)));
qq = highest_elem*(abs(k)+abs(l));
sum = sum + qq;
intenVal = qq*intenVal;
val += intenVal;
//cout<<qq<<endl;
}
}
temp.at<uchar>(i, j) = (val/sum);
}
}
return temp;
}
else
{
return img;
}
}
Mat original;
int main(int argc, char **argv)
{
original = imread("noisy.jpeg",CV_LOAD_IMAGE_GRAYSCALE);
String windowName_original = "original lisa";
String windowName_modified = "blurred lisa";
namedWindow(windowName_original,CV_WINDOW_FREERATIO);
namedWindow(windowName_modified,CV_WINDOW_FREERATIO);
imshow(windowName_original,original);
int blur_kernel_size = 1; //((2K+1)*(2K+1) is the kernel size chosen)
createTrackbar("blur kernel size", windowName_original, &blur_kernel_size, 11);
while (true)
{
Mat blurimg;
blurimg = blur(original , blur_kernel_size);
imshow(windowName_modified,blurimg);
// Wait until user press some key for 50ms
int iKey = waitKey(10);
//if user press 'ESC' key
if (iKey == 27)
{
break;
}
// waitKey(0);
//destroyAllWindows();
}
return 0;
}