Talk:Image convolution

From Rosetta Code
Revision as of 16:35, 30 June 2014 by rosettacode>Ooorah (Border Handling: fixed "partial convolution" idea)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


I haven't been able to find the explanation of this technic on the English wikipedia. There is an article about convolution but it does not talk at all about how to apply it on image processing. In the French area it is in this article:

but when I grep in the English equivalent I find nothing. Nothing too in the article linear filter even if the word convolution appears, but without details.
Maybe someone else will be more lucky than me to find where it is (or maybe there is a lack). Blue Prawn 19:31, 7 December 2008 (UTC)

I've found the following, even though some are still too technical. (First time I've heard about convolution kernels, it was about CA, so my search started from there)
  • Effective Computation of 2D Coupled Map Lattices; this is very interesting to me, but too complex and maybe not so useful for the specific case
  • CA in 2D; here the convolution of a kernel is used, but it is not clear where and how... nonetheless, could be interesting
  • Additive CA; this page tells about the link between convolution explained into Wikipedia and its CA-related analog
  • CA dynamics; this one maybe is the best, showing how a CA can be defined in term of convolution kernel (both 1D and 2D); from here it is very easy to implement the code for applying a convolution kernel to an image.
--ShinTakezou 13:22, 17 December 2008 (UTC)

Border Handling

I don't know if this is common knowledge that I'm missing, but maybe the task should specify how to handle the border pixels. I think the standard method is padding the image with zeroes (or something of that equivalence) so that the convolution can be taken on all pixels. Some functions, like edge-detection, are benefited from the zero-padding. Others, like smoothing or blurring, are benefited more by not padding and not taking the convolution on the border pixels. Maybe the kernal matrix could be adapted on a step-by-step basis (at least for the border pixels) to still process the border, but normalize the weight of the valid pixels that will be processed (e.g. if on left edge and ker = [0.25 0.5 0.25] the kernal will be adjusted to [0 0.666 0.333] before taking convolution of those pixels).

I would suggest making it clear which should be used in the task, and perhaps make other options extra credit.--Ooorah (talk) 13:54, 30 June 2014 (UTC)