Gaussian Filter Generation in C++
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
Last Updated :
11 Sep, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...