Gaussian Filter Generation in C++
Last Updated :
11 Sep, 2023
Gaussian Filtering is widely used in the field of image processing. It is used to reduce the noise of an image. In this article we will generate a 2D Gaussian Kernel. The 2D Gaussian Kernel follows the below given Gaussian Distribution. Where, y is the distance along vertical axis from the origin, x is the distance along horizontal axis from the origin and ? is the standard deviation.
Implementation in C++
C++
#include <cmath>
#include <iomanip>
#include <iostream>
using
namespace
std;
void
FilterCreation(
double
GKernel[][5])
{
double
sigma = 1.0;
double
r, s = 2.0 * sigma * sigma;
double
sum = 0.0;
for
(
int
x = -2; x <= 2; x++) {
for
(
int
y = -2; y <= 2; y++) {
r =
sqrt
(x * x + y * y);
GKernel[x + 2][y + 2] = (
exp
(-(r * r) / s)) / (M_PI * s);
sum += GKernel[x + 2][y + 2];
}
}
for
(
int
i = 0; i < 5; ++i)
for
(
int
j = 0; j < 5; ++j)
GKernel[i][j] /= sum;
}
int
main()
{
double
GKernel[5][5];
FilterCreation(GKernel);
for
(
int
i = 0; i < 5; ++i) {
for
(
int
j = 0; j < 5; ++j)
cout << GKernel[i][j] <<
"\t"
;
cout << endl;
}
}
Output:
0.00296902 0.0133062 0.0219382 0.0133062 0.00296902
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.0219382 0.0983203 0.162103 0.0983203 0.0219382
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.00296902 0.0133062 0.0219382 0.0133062 0.00296902
References: https://en.wikipedia.org/wiki/Gaussian_filter
Like Article
Suggest improvement
Share your thoughts in the comments
Add Your Comment
Please Login to comment...