A method and apparatus for interpolating color image information are provided. One or more image data values for a portion of a digital image in a vicinity of a target pixel are received and stored in a local array. A processor determines whether there is an edge in the vicinity of the target pixel based on the data values in the local array. If there is not an edge in the vicinity of the target pixel, then long scale interpolation is performed on the image data values in the local array, in order to result in interpolating color information that is missing from the image. If there is an edge in the vicinity of the target pixel, then short scale interpolation is performed using image data values in a subset of the local array in a closer vicinity of the target pixel. As a result, accurate color rendering of a digital image is achieved, even in the presence of an edge portion that exhibits great contrast between regions of the image.
Legal claims defining the scope of protection, as filed with the USPTO.
1. An image processing circuit that generates a plurality of color values each representing color components of a pixel of a digital image, the circuit comprising: a register array that is organized in a plurality of lines of registers and that represents a portion of an array of pixels of the digital image; a plurality of shift registers, in which each of the shift registers is coupled to receive an input from one of the lines of registers and to shift said input to another one an input from one of the lines of registers and to shift said input to another one of the lines of registers; a plurality of directed linear product modules, each coupled to the register array, each of which generates an interpolated color value based on the register array; and an interpolator module configured to receive image data values stored in the register array into the directed linear product modules, select at least one of the directed linear product modules for use in generating one of the color values, and generate the color values based on at least a result of the selected directed linear product module.
2. An image processing circuit that generates a plurality of color values each representing color components of a pixel of a digital image, the circuit comprising: a register array that is organized in a plurality of lines of registers and that represents a portion of an array of pixels of the digital image; a plurality of shift registers, in which each of the shift registers is coupled to receive an input from one of the lines of registers and to shift said input to another one an input from one of the lines of registers and to shift said input to another one of the lines of registers; plurality of dot product modules, each coupled to the register array, each of which generates an interpolated color value based on the register array; a plurality of directed linear product modules, each coupled to the register array, each of which generates an interpolated color value based on the register array; an edge detection module coupled to the register array and which generates at least one gradient value based on the register array; and an interpolator module configured to receive the at least one gradient value, determine if the at least one gradient value exceeds a threshold value, if the at least one gradient value exceeds the threshold value, then receive image data values stored in the register array into the directed linear product modules, select at least one of the directed linear product modules for use in generating one of the color values, and generate the color values based on at least a result of the selected directed linear product module, and if the at least one gradient value does not exceed the threshold value, then receive image data values stored in the register array into the dot product modules, select at least one of the dot product modules for use in generating one of the color values, and generate the color values based on at least a result of the selected dot product module.
3. An image processing circuit that generates a plurality of color values each representing color components of a pixel of a digital image, the circuit comprising: a register array that represents a portion of an array of pixels of the digital image; a plurality of directed linear product modules, each coupled to the register array, each of which generates an interpolated color value at a target pixel based on the register array; an edge detection module coupled to the register array and which generates a gradient value based on the register array; and an interpolator module configured to receive the gradient value, determine if the gradient value exceeds a threshold value, and if the gradient value exceeds the threshold value, then receive image data values stored in the register array into the directed linear product modules, select at least one of the directed linear product modules for use in generating one of the color values, and generate the color values based on at least a result of the selected directed linear product module.
4. The image processing circuit of claim 3 , wherein: the image processing circuit further comprises a plurality of dot product modules, each coupled to the register array, each of which generates an interpolated color value based on the register array; the interpolator module is further configured to receive image data values stored in the register array into the dot product modules, select at least one of the dot product modules for use in generating one of the color values, and generate the color values based on at least a result of the selected dot product module, if it is determined that the gradient value does not exceed the threshold value.
5. The image processing circuit of claim 3 , each module of the plurality of directed linear product modules further configured to use image data values from a subset of the register array in a vicinity of the target pixel.
6. The image processing circuit of claim 5 , a particular module of the plurality of directed linear product modules further configured to discard a greatest value and a least value of the image data values for one color.
7. The image processing circuit of claim 5 , a particular module of the plurality of directed linear product modules further configured to average a first value and a second value of the image data values for one color, wherein the first value and the second value are no farther apart than any other pair of values for the one color in the subset of the register array.
8. The image processing circuit of claim 5 , a particular module of the plurality of directed linear product modules further configured to discard a value of the image data for one color at a certain pixel, if an edge detected by the edge detector module lies between the certain pixel and the target pixel.
9. The image processing circuit of claim 3 , the edge detection module further configured to compute an absolute value of a difference between a first value of the image data values for one color and a second value of the image data values for the same color, wherein the first value is at a first pixel located in a corner of the register array and the second value is at a second pixel located in an opposite comer of the register array.
10. The image processing circuit of claim 3 , the edge detection module further configured to compute an absolute value of a difference between a first value of the image data values for one color and a second value of the image data values for the same color, wherein the first value is at a first pixel located toward a first end of a column of the register array, the column containing the target pixel, and the second value is at a second pixel located toward an opposite end of the column.
11. The image processing circuit of claim 3 , the edge detection module further configured to compute an absolute value of a difference between a first value of the image data values for one color and a second value of the image data values for the same color, wherein the first value is at a first pixel located toward a first end of a row of the register array containing the target pixel, and the second value is at a second pixel located toward an opposite end of the row.
12. The image processing circuit of claim 3 , wherein the threshold is selected in a range from about 5% of a peak pixel value to about 40% of the peak pixel value.
13. The image processing circuit of claim 3 , wherein the threshold is selected in a range from about 10% of a peak pixel value to about 20% of the peak pixel value.
14. The image processing circuit of claim 3 , wherein the image processing circuit further comprises an auto-focus module which provides a sum of absolute values of a first difference and a second difference, the first difference between a first value of the image data values and a second value of the image data values, and the second difference between a third value of the image data values and a fourth value of the image data values; the edge detection module is coupled to the auto-focus circuit; and the threshold is selected in a range from about 10% of a peak pixel value to about 80% of the peak pixel value.
15. The image processing circuit of claim 3 , the edge detection module further configured to compute an absolute value of a difference between a first value of the image data values for one color and a second value of the image data values for the same color, wherein the first value is at a first pixel located in a corner of a subset of the register array in a vicinity of the target pixel, and the second value is at a second pixel located in an opposite corner of the subset of the register array.
16. The image processing circuit of claim 3 , the edge detection module further configured to compute an absolute value of a difference between a first value of the image data values for one color and a second value of the image data values for the same color, wherein the first value is at a first pixel located toward a first end of a column in a subset of the register array in a vicinity of the target pixel, the column containing the target pixel, and the second value is at a second pixel located toward an opposite end of the column.
17. The image processing circuit of claim 3 , the edge detection module further configured to compute an absolute value of a difference between a first value of the image data values for one color and a second value of the image data values for the same color, wherein the first value is at a first pixel located toward a first end of a row in a subset of the register array, the row containing the target pixel, and the second value is at a second pixel located toward an opposite end of the row.
18. The image processing circuit of claim 3 , the edge detection module further configured to compute a long scale absolute value of a difference between a first value of the image data values in a first row or column of the register array and a second value of the image data values in a last row or column of the register array; compute a short scale absolute value of a difference between a third value of the image data values in a first row or column of a subset of the register array and a fourth value of the image data values in the last row or column of the subset of the register array; and generate the gradient value in response to a greatest absolute value of the long scale absolute value and the short scale absolute value.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
July 14, 2000
March 16, 2004
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.