I know this question may not be very relevant to programming, but if I don't understand the theory behind image processing I'll never be able to implement something in practice.
If I got it right Gaussian filters are convolved with an image for noise reduction since they compute a weighed average of a pixel's neighborhood and they are very useful in edge-detection, since you can apply a blur and derive the image at the same time by simply convolving with the derivative of a Gaussian function.
But can anyone explain me, or give me some references on how are they computed?
E.g. Canny's edge detector talks about a 5x5 Gaussian filter, but how did they get those particular numbers? And how did they go from a continuous convolution to a Matrix multiplication?