1
+ #include < stdio.h>
2
+ #include < iostream>
3
+ #include < immintrin.h>
4
+ #include < opencv2/opencv.hpp>
5
+ using namespace cv ;
6
+ using namespace std ;
7
+
8
+
9
+
1
10
// 针对灰度图的中值滤波+CVPR 2019的SideWindowFilter
2
11
// 其他种类的滤波直接换核即可
3
12
@@ -78,7 +87,8 @@ Mat MedianSideWindowFilter(Mat src, int radius = 1) {
78
87
for (int x = -radius; x <= radius; x++) {
79
88
for (int y = -radius; y <= radius; y++) {
80
89
// if (x == 0 && y == 0) continue;
81
- if (filter[k][id]) now.push_back (src.at <uchar>(i + x, j + y) * filter[k][id++]);
90
+ if (filter[k][id]) now.push_back (src.at <uchar>(i + x, j + y) * filter[k][id]);
91
+ id++;
82
92
// val += src.at<uchar>(i + x, j + y) * filter[k][id++];
83
93
}
84
94
}
@@ -96,7 +106,8 @@ Mat MedianSideWindowFilter(Mat src, int radius = 1) {
96
106
for (int x = -radius; x <= radius; x++) {
97
107
for (int y = -radius; y <= radius; y++) {
98
108
// if (x == 0 && y == 0) continue;
99
- if (filter[pos][id]) now.push_back (src.at <uchar>(i + x, j + y) * filter[pos][id++]);
109
+ if (filter[pos][id]) now.push_back (src.at <uchar>(i + x, j + y) * filter[pos][id]);
110
+ id++;
100
111
// val += src.at<uchar>(i + x, j + y) * filter[k][id++];
101
112
}
102
113
}
@@ -127,7 +138,8 @@ Mat MedianSideWindowFilter(Mat src, int radius = 1) {
127
138
for (int y = -radius; y <= radius; y++) {
128
139
// if (x == 0 && y == 0) continue;
129
140
// val += src.at<Vec3b>(i + x, j + y)[c] * filter[k][id++];
130
- if (filter[k][id]) now.push_back (src.at <Vec3b>(i + x, j + y)[c] * filter[k][id++]);
141
+ if (filter[k][id]) now.push_back (src.at <Vec3b>(i + x, j + y)[c] * filter[k][id]);
142
+ id++;
131
143
}
132
144
}
133
145
sort (now.begin (), now.end ());
@@ -145,7 +157,8 @@ Mat MedianSideWindowFilter(Mat src, int radius = 1) {
145
157
for (int y = -radius; y <= radius; y++) {
146
158
// if (x == 0 && y == 0) continue;
147
159
// val += src.at<Vec3b>(i + x, j + y)[c] * filter[k][id++];
148
- if (filter[pos][id]) now.push_back (src.at <Vec3b>(i + x, j + y)[c] * filter[pos][id++]);
160
+ if (filter[pos][id]) now.push_back (src.at <Vec3b>(i + x, j + y)[c] * filter[pos][id]);
161
+ id++;
149
162
}
150
163
}
151
164
sort (now.begin (), now.end ());
0 commit comments