Creating a convolution matrix
In the next example, called ch07_convolution
, we will implement a control, which can apply a filter on a single image. We will hardcode a Sobel filter for this example; however, based on the implementation, you will be able to use any kind of filter, even dynamically. Our implementation will have three stages:
Converting the image to grayscale
Applying the Sobel filter
Normalizing the image
How convolution works
Before creating the control, let's discuss how convolution works in a nutshell. When we convolve an image, we calculate some sort of statistics from the image matrix that is based on every pixel's (or raster's) neighborhood. This is why this method is also referred to as focal statistics or a moving window in geoinformatics. There are two things we need to convolve an image: the pixel data arranged in a matrix and a small matrix with weights in it, which is called a kernel. We apply the kernel to every cell in our image and calculate its new value based on...