Skip to main content

Gaussian image smoothing using OpenCV

Image smoothing is often used in digital image processing to reduce noise or camera artifacts. An example of a common algortihm used to perform image smoothing is Gaussian. Gaussian filtering is done by convolving each pixel in the input image with a Gaussian Kernal and then summing to produce the output image.

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"

int _tmain(int argc, _TCHAR* argv[])
{
// open and display input image
IplImage* input = cvLoadImage("test.jpg");
cvNamedWindow("Input", CV_WINDOW_AUTOSIZE);
cvShowImage("Input", input);

// create the output
IplImage* output = cvCreateImage(cvSize(input->width, input->height), input->depth, input->nChannels);
cvSmooth(input, output, CV_GAUSSIAN, 9);

// display the output image
cvNamedWindow("Output", CV_WINDOW_AUTOSIZE);
cvShowImage("Output", output);

// wait for user
cvWaitKey(0);

// garbage collection
cvReleaseImage(&input);
cvReleaseImage(&output);
cvDestroyWindow("Input");
cvDestroyWindow("Output");

return 0;
}

[caption id="attachment_111" align="alignnone" width="300" caption="Input image"][/caption]

[caption id="attachment_113" align="alignnone" width="300" caption="Output Image after smoothing"][/caption]

Adverts