Summed area table

A summed area table is a data structure and algorithm for quickly and efficiently generating the sum of values in a rectangular subset of a grid. In the image processing domain, it is also known as an integral image. It was introduced to computer graphics in 1984 by Frank Crow for use with mipmaps. In computer vision it was popularized by Lewis[1] and then given the name "integral image" and prominently used within the Viola–Jones object detection framework in 2001. Historically, this principle is very well known in the study of multi-dimensional probability distribution functions, namely in computing 2D (or ND) probabilities (area under the probability distribution) from the respective cumulative distribution functions.[2]

The algorithm

As the name suggests, the value at any point (x, y) in the summed area table is just the sum of all the pixels above and to the left of (x, y), inclusive:[3][4]

 I_{\sum}(x,y) = \sum_{\begin{smallmatrix} x' \le x \\ y' \le y\end{smallmatrix}} i(x',y')

Moreover, the summed area table can be computed efficiently in a single pass over the image, using the fact that the value in the summed area table at (x, y) is just:

 I(x,y) = i(x,y) + I(x-1,y) + I(x,y-1) - I(x-1,y-1)\,
A description of computing a sum in the Summed Area Table data structure/algorithm

Once the summed area table has been computed, the task of evaluating the intensities over any rectangular area requires only four array references. This allows for a constant calculation time that is independent of the size of the rectangular area. That is, using the notation in the figure at right, having A=(x0, y0), B=(x1, y0), C=(x0, y1) and D=(x1, y1), the sum of i(x,y) over the rectangle spanned by A, B,C and D is:

\sum_{\begin{smallmatrix} x_0 < x \le x_1 \\ y_0 < y \le y_1 \end{smallmatrix}} i(x,y) = I(D) + I(A) - I(B) - I(C)

Extensions

 \sum_{p\in\{0,1\}^d }(-1)^{d-\|p\|_1} I(x^p) \,

where I(x) is the integral image at x and d the image dimension. The notation x^p correspond in the example to d=2, A=x^{(0,0)}, B=x^{(1,0)}, C=x^{(1,1)} and D=x^{(0,1)}. In neuroimaging, for example, the images have dimension d=3 or d=4, when using voxels or voxels with a time-stamp.

To compute variance or standard deviation of a block, we need two integral images:

 I(x,y) = \sum_{\begin{smallmatrix} x' \le x \\ y' \le y\end{smallmatrix}} i(x',y')
 I^2(x,y) = \sum_{\begin{smallmatrix} x' \le x \\ y' \le y\end{smallmatrix}} i^2(x',y')

The variance is given by:

 \operatorname{Var}(X) = \frac{1}{n} \sum_{i=1}^n (x_i - \mu)^2.

Let S_1 and S_2 denote the summations of block ABCD of I and I^2, respectively. S_1 and S_2 are computed quickly by integral image. Now, we manipulate the variance equation as:

 \operatorname{Var}(X) = \frac{1}{n} \sum_{i=1}^n (x_i^2 - 2\cdot\mu\cdot x_i + \mu^2) 
= \frac{1}{n} (\sum_{i=1}^n (x_i)^2 - 2\cdot\sum_{i=1}^n(\mu\cdot x_i) + \sum_{i=1}^n(\mu^2))
= \frac{1}{n} (\sum_{i=1}^n (x_i)^2 - 2\cdot\sum_{i=1}^n(\mu\cdot x_i) + n\cdot(\mu^2))

= \frac{1}{n} (\sum_{i=1}^n (x_i)^2 - 2\cdot\mu \cdot \sum_{i=1}^n(x_i) + n\cdot(\mu^2))
= \frac{1}{n} (S_2 - 2\cdot S_1/n \cdot S_1 + n\cdot((S_1/n)^2))
= \frac{1}{n} (S_2 - (S_1)^2/n)

Where \mu=S_1/n and S_2=\sum_{i=1}^n (x_i^2).

Similar to the estimation of the mean (\mu) and variance (Var), which requires the integral images of the first and second power of the image respectively (i.e. I, I^2); manipulations similar to the ones mentioned above can be made to the third and fourth powers of the images (i.e I^3(x,y), I^4(x,y).) for obtaining the skewness and kurtosis.[6] But one important implementation detail that must be kept in mind for the above methods, as mentioned by F Shafait et al.[7] is that of integer overflow occurring for the higher order integral images in case 32-bit integers are used.

References

  1. Lewis, J.P. (1995). Fast template matching. Proc. Vision Interface. pp. 120–123.
  2. 1 2 Finkelstein, Amir; neeratsharma (2010). "Double Integrals By Summing Values Of Cumulative Distribution Function". Wolfram Demonstration Project.
  3. Crow, Franklin (1984). "Summed-area tables for texture mapping" (PDF). SIGGRAPH '84: Proceedings of the 11th annual conference on Computer graphics and interactive techniques. pp. 207–212.
  4. Viola, Paul; Jones, Michael (2002). "Robust Real-time Object Detection" (PDF). International Journal of Computer Vision.
  5. Tapia, Ernesto (January 2011). "A note on the computation of high-dimensional integral images". Pattern Recognition Letters 32 (2). doi:10.1016/j.patrec.2010.10.007.
  6. 1 2 Phan, Thien; Sohoni, Sohum; Larson, Eric C.; Chandler, Damon M. (22 April 2012). "Performance-analysis-based acceleration of image quality assessment" (PDF). 2012 IEEE Southwest Symposium on Image Analysis and Interpretation: 83. doi:10.1109/SSIAI.2012.6202458.
  7. Shafait, Faisal; Keysers, Daniel; M. Breuel, Thomas (January 2008). "Efficient implementation of local adaptive thresholding techniques using integral images" (PDF). Electronic Imaging. doi:10.1117/12.767755.

External links

Lecture videos
This article is issued from Wikipedia - version of the Thursday, March 31, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.