The basics of convolution

The process described previously was performed in overlapping neighborhoods of the image, but no use of a kernel was mentioned. So, what is this all about? And how does the convolution fit in this framework? Well, the truth is that the process described previously is actually describing the essence of convolution, which is passing a kernel over all possible equally sized neighborhoods of the image and using it to modify the value of the central pixel. The only problem in our case is that we did not use a specific kernel in the process described. Or did we? Let's try to find out using MATLAB code to perform two-dimensional convolution.

The 3x3 neighborhood we used for the described process can be replaced by a 3x3 kernel, as long as the final result remains the same. The kernel that accomplishes this effect is a 3x3 matrix with all pixels set to 1/9. Convolving this kernel with the original image produces the same result as the aforementioned example. To demonstrate the process, we can use the two-dimensional convolution MATLAB function conv2 as follows, to get the result:

>> original = [132  101  101  107  115  121  110   92
  120  124  122  120  129  123  121  129
  134  146  144  134  134  132  134  138
  143  147  136  121  121  115  107  107
  145  147  138  129  119  113  113  122
  162  155  152  149  142  129  118  122
  127  122  115  113  117  102   95   94
   67   74   78   80   89   89  107  109];        % Create original
  image
>> kernel = ones(3,3)*(1/9);         % Create kernel
>> conv_result = conv2(original, kernel,'same'), % Perform
  convolution
>> final_result = round(conv_result)             % Rounding of result

The final result obtained is as follows:

final_result =
    53    78    75    77    79    80    77    50
    84   125   122   123   124   124   122    80
    90   135   133   129   125   124   123    82
    96   142   138   131   124   121   120    80
   100   147   142   134   126   120   116    77
    95   140   136   130   124   116   112    74
    79   117   115   115   112   110   107    72
    43    65    65    66    66    67    66    45

As expected, the result is the same as the one calculated using the analytical process described before. The convolution kernel has done its job. In our process, we used a 8x8 original image and a 3x3 kernel with the values of all pixels as 1/9 (this is what happens when you get a 3x3 matrix with all instances of 1 and multiply it by 1/9, as we did) and finally ordered the conv2 function to produce the result using the padding process described earlier for the borders, hence calculating a result with the same dimensions as the original.

But how did it do it? What exactly is convolution? Now it is time to fully understand convolution. But first, you must get acquainted with its mathematical equations. Since learning math is not the purpose of this book, we will try to give you just the basics, so that you get an idea of what this operation is all about, as it is invaluable for image filtering.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset