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++

 // C++ program to generate Gaussian filter #include #include #include using namespace std;   // Function to create Gaussian filter void FilterCreation(double GKernel[][5]) {     // initialising standard deviation to 1.0     double sigma = 1.0;     double r, s = 2.0 * sigma * sigma;       // sum is for normalization     double sum = 0.0;       // generating 5x5 kernel     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];         }     }       // normalising the Kernel     for (int i = 0; i < 5; ++i)         for (int j = 0; j < 5; ++j)             GKernel[i][j] /= sum; }   // Driver program to test above function 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

Article Tags :