3

When using the mean filter in image processing, why should the size of the kernel be odd? It Always takes a odd size as 3x3 or 5x5. Could anyone explain it with reasons?

Cris Luengo
  • 55,762
  • 10
  • 62
  • 120
Mash962
  • 59
  • 1
  • 7

1 Answers1

11

The kernel doesn't need to be odd. It's perfectly possible to define an even-sized kernel. When the kernel size is even, it is less obvious which of the pixels should be at the origin, but this is not a problem. You have seen mostly odd-sized filter kernels because they are symmetric around the origin, which is a good property.

Here is an example in MATLAB where we filter the image with a 4x4 averaging kernel (mean filter):

img = imread('cameraman.tif');
img = imfilter(img,fspecial('average',4));
imshow(img)
Cris Luengo
  • 55,762
  • 10
  • 62
  • 120
  • Thanks for your response.But the only purpose of using odd kernel, only because of it is symmetrical around the origin?Are there any other purposes.Could you explain it. – Mash962 Nov 27 '18 at 11:21
  • 1
    @Mash962: No, there is no other reason. – Cris Luengo Nov 27 '18 at 13:57
  • 7
    A non-symmetric kernel yields a non-symmetric filter response. In the example above, this non-symmetry leads to a shift of the blurred image by half a pixel. – Cris Luengo Nov 27 '18 at 14:02
  • @CrisLuengo Thanks. There is a detailed answer [here](https://datascience.stackexchange.com/questions/23183/why-convolutions-always-use-odd-numbers-as-filter-size). – bartolo-otrit Feb 01 '21 at 14:59