Patent ID: 8340458

Claim:
A method for smoothing a digital input image using a non-orthogonal convolution kernel image, wherein more than one convolution kernels are required to smooth the input image and each of the more than one convolution kernels having an anchor pixel which identifies the particular pixel in the input image that is to be smoothed when the convolution kernel is applied, the method comprising: (a) calculating Skip-Lengths and Run-Lengths for each row of pixels in the non-orthogonal convolution kernel; (b) performing a convolution for the first anchor pixel in the input image to obtain a first smoothed output pixel data and storing the smoothed output pixel data in a data storage unit; (c) remapping the convolution kernel image into an orthogonal coordinate map of a memory space and generate a remapping template; (d) remapping the input image into the orthogonal coordinate of the memory space using the remapping template; (e) dividing the convolution kernel into two sections; (f) further dividing one of the two sections into two subsections and extending the two subsections in the remapped input image to cover all neighborhood pixels corresponding to all of the anchor pixels, the first extended subsection representing pixels that are inside the kernel and the second extended subsection representing pixels that are outside the kernel; (g) realigning the pair of extended subsections within the memory space in decrement order or increment order; (h) for the pair of extended subsections, summing the pixel values in each column and then substracting the summed values from the second extended subsection from the summed values from the first extended subsection and generate an array H first section representing the difference in the kernel values from one kernel to the next in the first section; (i) repeating the steps (f)-(h) for the second of the two sections and generating an array H second section representing the differences in the kernel values from one kernel to the next in the second section; (j) adding the arrays H first section and H second section to obtain a summed array H representing the differences in the kernel values from one kernel to the next associated with the anchor pixels other than the first anchor pixel; (k) adding the value of the first smoothed output pixel data to the first element of the summed array H and storing the result as the second smoothed output pixel data in the data storage unit; (l) adding the value of the most recently calculated smoothed output pixel data to the next element of the summed array H and storing the result as the next smoothed output pixel data in the sequence; and (m) repeating the step (l) until the last element of the summed array H is processed by the step (l) and storing the result as the smoothed output pixel data for the last anchor pixel.