Image scaling
First Claim
1. A parallel processing method of scaling a digital source image consisting of a matrix of X by Y pixels into a target image, comprising the steps of:
- mapping the source pixels onto the target pixels;
scaling the source image in the X or Y direction in parallel using a processing element (PE) array, each PE including a number of addressable memory cells for storing values corresponding to one or more pixels, to produce intermediate pixels that are scaled in one direction by determining contributions to each intermediate pixel using a digital filter and accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels, and in which values are shifted in said memory cells during Y scaling such that they are shifted up the array one position when the process crosses a cluster boundary; and
subsequently scaling the intermediate pixels in the other direction in parallel to produce target pixels by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel;
wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels.
5 Assignments
0 Petitions
Accused Products
Abstract
A method and a system for scaling a digital source image consisting of a grid of X by Y pixels into a target image of a different resolution comprises the steps of/tools for:
mapping the source pixels onto the target pixels;
scaling the source image in the X or Y direction to produce intermediate pixels that are scaled in one direction by determining contributions to each intermediate pixel using a digital filter and accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels; and subsequently
scaling the intermediate pixels in the other direction by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel;
wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels.
The method is preferably carried out on a PE array in an SIMD (Simple Instruction Multiple Data) device.
-
Citations
41 Claims
-
1. A parallel processing method of scaling a digital source image consisting of a matrix of X by Y pixels into a target image, comprising the steps of:
-
mapping the source pixels onto the target pixels;
scaling the source image in the X or Y direction in parallel using a processing element (PE) array, each PE including a number of addressable memory cells for storing values corresponding to one or more pixels, to produce intermediate pixels that are scaled in one direction by determining contributions to each intermediate pixel using a digital filter and accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels, and in which values are shifted in said memory cells during Y scaling such that they are shifted up the array one position when the process crosses a cluster boundary; and
subsequentlyscaling the intermediate pixels in the other direction in parallel to produce target pixels by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel;
wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A parallel processing method of scaling a digital source image consisting of a matrix of X by Y pixels into a target image, comprising the steps of:
-
mapping the source pixels onto the target pixels;
scaling the source image in the X or Y direction in parallel to produce intermediate pixels that are scaled in one direction by determining contributions to each intermediate pixel using a digital filter and accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels; and
subsequentlyscaling the intermediate pixels in the other direction in parallel to produce target pixels by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel;
wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels, and in which a processing element (PE) array is used, in which interconnections allow data to be moved (swazzled) along the PE array, each PE including a number of addressable memory cells, in which values corresponding to one or more pixels may be stored, and between which the values may be shifted, and in which the Y scaling step for downscaling includes the steps of multiplying the source pixel by the appropriate filter function values and reading the resultant contributions for each source pixel into the cells in the memory cell array, adding them to any contributions from one or more lines above the present scanline which are already in the cell; and
incrementing to shift the feed into the array by one position and move the top cell value out when a cluster border is crossed.
-
-
19. A parallel Processing method of scaling a digital source image consisting of a matrix of X by Y pixels into a target image, comprising the steps of:
-
mapping the source pixels onto the target pixels;
scaling the source image in the X or Y direction in parallel to produce intermediate pixels that are scaled in one direction by determining contributions to each intermediate pixel using a digital filter and accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels; and
subsequentlyscaling the intermediate pixels in the other direction in parallel to produce target pixels by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel;
wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels, and in which a processing element (PE) array is used, in which interconnections allow data to be moved (swazzled) along the PE array, each PE including a number of addressable memory cells, in which values corresponding to one or more pixels may be stored, and between which the values may be shifted, and in which the Y scaling step for upsealing includes the steps of reading each pixel value into a cell, calculating the contributions for each pixel in the array using the filter function;
summing the contributions (in a number corresponding to the filter width) for each target pixel; and
shifting the source pixel values up one position, to read in a new source pixel and discard an old source pixel when the target boundary is crossed.
-
-
20. A parallel processing method of scaling a digital source image consisting of a matrix of X by Y pixels into a target image, comprising the steps of:
-
mapping the source pixels onto the target pixels;
scaling the source image in the X or Y direction in parallel to produce intermediate pixels that are scaled in one direction by determining contributions to each intermediate pixel using a digital filter and accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels; and
subsequentlyscaling the intermediate pixels in the other direction in parallel to produce target pixels by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel;
wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels, and in which a processing element (PE) array is used, in which interconnections allow data to be moved (swazzled) along the PE array, each PE including a number of addressable memory cells, in which values corresponding to one or more pixels may be stored, and between which the values may be shifted, and in which X scaling involves accumulating contributions in one accumulating PE per cluster, the contributions for each source pixels being swazzled across the PE array to their correct accumulating PE.
-
-
21. A parallel processing method of scaling a digital source image consisting of a matrix of X by Y pixels into a target image, comprising the steps of:
-
mapping the source pixels onto the target pixels;
scaling the source image in the X or Y direction in parallel to produce intermediate pixels that are scaled in one direction by determining contributions to each intermediate pixel using a digital filter and accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels; and
subsequentlyscaling the intermediate pixels in the other direction in parallel to produce target pixels by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel;
wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels, and in which a processing element (PE) array is used, in which interconnections allow data to be moved (swazzled) along the PE array, each PE including a number of addressable memory cells, in which values corresponding to one or more pixels may be stored, and between which the values may be shifted, and in which the method for the X scaling step for downscaling calculates the contributions for each source pixel;
addresses them according to the distance they must travel and stores them in a memory cell array, then shifts each contribution in turn along the PE array to the correct accumulating PE.
-
-
22. A parallel processing method of scaling a digital source image consisting of a matrix of X by Y pixels into a target image, comprising the steps of:
-
mapping the source pixels onto the target pixels;
scaling the source image in the X or Y direction in parallel to produce intermediate pixels that are scaled in one direction by determining contributions to each intermediate pixel using a digital filter and accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels; and
subsequentlyscaling the intermediate pixels in the other direction in parallel to produce target pixels by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel;
wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels, and in which a processing element (PE) array is used, in which interconnections allow data to be moved (swazzled) along the PE array, each PE including a number of addressable memory cells, in which values corresponding to one or more pixels may be stored, and between which the values may be shifted, and in which the method for the X scaling step for upsealing involves loading the PE array with a repeating sequence of the source pixels in the corresponding cluster of the target pixels. - View Dependent Claims (23, 24)
-
-
25. A parallel processing system for scaling a digital source image consisting of a matrix of X by Y pixels into a target image, comprising:
-
a processing element (PE) array, each PE including a number of addressable memory cells for storing values corresponding to one or more pixels;
a mapping tool for mapping the source pixels onto the target pixels;
a first parallel processing scaling tool for scaling the source image in the X or Y direction in parallel to produce intermediate pixels that are scaled in one direction;
a digital filter for determining contributions to each intermediate pixel;
an accumulator for accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels;
shift means for shifting values in the memory cells during Y scaling such that they are shifted up the array one position when the process crosses a cluster boundary;
a second parallel processing scaling tool for scaling the intermediate pixels in the other direction in parallel by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel; and
means for moving data between PEs for X scaling, the data being swazzled a certain distance across a predetermined number of cluster boundaries until it reaches the correct PE for accumulation to make up target pixels, wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels.
-
-
26. A parallel processing method of scaling a digital source image consisting of a matrix of X by Y pixels into a target image, comprising the steps of:
-
mapping the source pixels onto the target pixels;
scaling the source image in the X or Y direction in parallel using a processing element (PE) array, each PE including a number of addressable memory cells for storing values corresponding to one or more pixels, to produce intermediate pixels that are scaled in one direction by determining contributions to each intermediate pixel using a digital filter and accumulating the contributions for each intermediate pixel, wherein each source pixel contributes to one or more intermediate pixels and each intermediate pixel receives contributions from one or more source pixels; and
subsequentlyscaling the intermediate pixels in the other direction in parallel to produce target pixels by determining the contributions to each target pixel using the filter and accumulating the contributions for each target pixel, and in which data is moved (swazzled) between PEs for X scaling, the data being swazzled a certain distance across a predetermined number of cluster boundaries until it reaches the correct PE for accumulation to make up target pixels;
wherein each intermediate pixel contributes to one or more target pixels and each target pixel receives contributions from one or more intermediate pixels. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41)
-
Specification