Vous êtes sur la page 1sur 7

# Image convolution examples

## By Utkarsh | Published: August 16, 2010

A convolution is very useful for signal processing in general. There is a lot of complex mathematical
theory available for convolutions. For digital image processing, you dont have to understand all of
that. You can use a simple matrix as an image convolution kerneland do some interesting things!
Simple box blur
Heres a first and simplest. This convolution kernel has an averaging effect. So you end up with a
slight blur. The image convolution kernel is:

Note that the sum of all elements of this matrix is 1.0. This is important. If the sum is not exactly one,
the resultant image will be brighter or darker.
Heres a blur that I got on an image:

A simple blur done with convolutions
Gaussian blur
Gaussian blur has certain mathematical properties that makes it important for computer vision. And
you can approximate it with an image convolution. The image convolution kernel for a Gaussian blur
is:

Heres a result that I got:

Line detection with image convolutions
With image convolutions, you can easily detect lines. Here are four convolutions to detect horizontal,
vertical and lines at 45 degrees:
I looked for horizontal lines on the house image. The
result I got for this image convolution was:

Edge detection
The above kernels are in a way edge detectors. Only thing is that they have separate components for
horizontal and vertical lines. A way to combine the results is to merge the convolution kernels. The
new image convolution kernel looks like this:

Below result I got with edge detection:

The Sobel Edge Operator
The above operators are very prone to noise. The Sobel edge operators have a smoothing effect, so
theyre less affected to noise. Again, theres a horizontal component and a vertical component.

On applying this image convolution, the result was:

The laplacian operator
The laplacian is the second derivative of the image. It is extremely sensitive to noise, so it isnt used
as much as other operators. Unless, of course you have specific requirements.

Heres the result with the convolution kernel without diagonals:

The Laplacian of Gaussian
The laplacian alone has the disadvantage of being extremely sensitive to noise. So, smoothing the
image before a laplacian improves the results we get. This is done with a 55 image convolution
kernel.

The result on applying this image convolution was:

Summary
You got to know about some important operations that can be approximated using an image
convolution. You learned the exact convolution kernels used and also saw an example of how each
operator modifies an image. I hope this helped!
Issues? Suggestions? Visit the Github issue tracker for AI Shack
Related Posts
1. Image Convolutions in OpenCV
2. Convolutions
3. The Sobel and Laplacian Edge Detectors
1. shivda
Posted August 17, 2010 at 1:00 am | Permalink
Dude, nice job summarizing it. My whole PS1 project was based on this.MATLAB has a help page
thats quite gud. It is filled with examples and images.
You dont hav 2 worry abt the *convoluting* matrices in MATLAB. Just type in the name of the
convolution and ull get the edges. Convolutions with matrices of our choice is also possible.
Cheers !!
o Utkarsh
Posted August 17, 2010 at 1:13 am | Permalink
Thats exactly what makes Matlab easy to use.. lots of named constants that do a lot
of work, with minimal effort!
2. mik
Posted August 21, 2010 at 10:16 pm | Permalink
the combined edge kernel and the laplacian with diagonals are the same kernels, however, the
pictures are a little different. do you know why?
3. Praveen
Posted March 23, 2011 at 11:55 am | Permalink
Mik,
I think the images are formed by differnt kernel operations. One with and other without
diagonals.
By Tubes UAS Grafcit | Grafika Citra on December 11, 2011 at 9:16 pm
[...] Untuk image konvolutor, harapannya user bisa melakukan tersting terhadap inputan
matrix konvolusi seperti dicontohkan di situs ini : http://www.aishack.in/2010/08/image-
convolution-examples/ [...]
By Reaaliaikaista kuvanksittely OpenGL ES 2.0:lla | Mobiilikehitys on March 12, 2012 at
7:48 pm
[...] Sample Convolution Kernels for Image Processing [...]