Smoothing
Smoothing, also called blurring, is a simple and frequently used image processing operation. There are many reasons for smoothing, but it is usually done to reduce noise or camera artifacts. Smoothing is also important when we wish to reduce the resolution of an image in a principled way (we will discuss this in more detail in the "Image Pyramids" section of this chapter).
OpenCV offers five different smoothing operations at this time. All of them are
supported through one function, cvSmooth()
,[46] which takes our desired form of smoothing as an argument.
void cvSmooth( const CvArr* src, CvArr* dst, int smoothtype = CV_GAUSSIAN, int param1 = 3, int param2 = 0, double param3 = 0, double param4 = 0 );
The src
and dst
arguments are the usual source and destination for the smooth operation. The cvSmooth()
function has four parameters with the particularly
uninformative names of param1, param2, param3, and param4. The meaning of these parameters
depends on the value of smoothtype
, which may take any of
the five values listed in Table 5-1.[47] (Please notice that for some values of smoothtype, "in place operation", in
which src
and dst
indicate the same image, is not allowed.)
Table 5-1. Types of smoothing operations, meaning of their parameters, and the depth and number of channels (Nc) supported by each operation.
Smooth type |
Name |
In place |
Nc |
src depth |
dst depth |
Brief description |
---|---|---|---|---|---|---|
|
Simple blur |
Yes |
Any |
8u, 32f |
8u, 32f |
Sum over a |
Get Learning OpenCV now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.