In image processing, we have two kinds of major kernels that are average kernel and Gaussian kernel. For image segmentation, which is difference between average kernel and Gaussian kernel? I found some paper said that they are similar, and average kernel implement faster than Gaussian kernel, right?When we use average kernel
2 Answers
If you pre calculate the filter coefficients the complexity of the convolution is set by its radius only.
Yet, if all coefficients are the same, it could be reduced into summation and one normalization multiplication.
Yet, I don't think it will have major effect on modern CPU's.
Certainly not on those who supports fused multiply and addition.
-
$\begingroup$ Except that for an average filter the coefficient for each input point is 1, so you only have one multiplication. $\endgroup$– Paul RAug 1, 2014 at 7:10
-
-
$\begingroup$ I read that average kernel similar gaussian kernel but it take larger error than gaussian kernel. So, when we use average kernel? $\endgroup$– JohnAug 1, 2014 at 8:20
-
$\begingroup$ What can be done is to approximate the Gaussian Blur by "Box Blur" (Average Blur). See my answer here: stackoverflow.com/questions/23489902/… $\endgroup$– RoyiAug 1, 2014 at 8:31
-
1$\begingroup$ Why would you need 2N-2 adds? Calculating a running sum for each row takes one add per pixel, calculating a box filter from that takes another subtraction. Then repeat that for each column. That makes 4 additions and one multiplication per pixel, no matter what N is. $\endgroup$ Aug 1, 2014 at 8:51
Average Filter (Box Blur) can be approximated using Integral Images / Running Sums.
In those efficient methods their complexity depends on the size of the image only and not the radius of the filter.
Gaussian Blur is often approximated by repetitive Box Blur (Hence, in this method, is slower) hence also has ability to be approximated by operation with complexity of the size of the image only.