Abstract:
Stochastic dithering may be used to reduce the size of the frame buffer and the complexity of the D/A Converters (DACs) in the drive circuitry that are used in a video display system. Hardware for stochastic dithering can be simplified when pixel data is presented in raster order. The hardware adds algebraic noise to the image to be dithered, and thresholds the result.

Description:
FIELD OF THE INVENTION 
     The present disclosure generally relates to image processing. More particularly, the present disclosure relates to dithering of pixels having a reduced bit-depth. 
     BACKGROUND 
     An important feature of small electronic devices is their display, which is often used to present a high-quality color image having limited dimensions at a low price. One of the ways to keep the physical dimensions of a pixel driver chip small (and thus to keep associated production costs low), and to keep power consumption low, is to decrease the amount of information that is used to describe the image. The decrease can be accomplished by reducing the number of bits used to describe each pixel, as well as by using advanced dithering algorithms that are used to try to make the reduction visually imperceptible. 
     A majority of the space on the pixel driver chip is typically occupied by a memory that is used to store image pixels. In many small electronic devices the image is stored as 18 bpp (bits per pixel), which is typically organized as six bits per pixel per color (bppc). Accordingly, when the number of the bits used to represent the image is reduced, the cost of the chip is also reduced. 
     The Human Visual System (HVS) is normally less sensitive to blue colors, so many imaging applications use half of the number of bits for the blue color channel that are used for other color channels. For example, color bit depths can be organized as a 5-5-2 bpp or 5-5-3 bpp scheme, which are used to represent red, green and blue pixels, respectively. However, in a display driver chip of conventional architecture, all of the color channels data are usually transferred using the same data bus. Accordingly, reduction in numbers of blue color plane bits does not necessarily further simplify the hardware, but instead usually adversely affects the image quality. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Non-limiting and non-exhaustive embodiments are described with reference to the following drawings. 
         FIG. 1  is a schematic diagram of a computer system for implementing aspects of the present invention. 
         FIG. 2  is a graph representing the contrast sensitivity of a typical human vision system. 
         FIG. 3  is a schematic diagram of a circuit for dithering pixel values in accordance with aspects of the invention. 
         FIG. 4  is a schematic diagram of an algebraic noise generator for generating algebraic noise in accordance with aspects of the invention. 
         FIG. 5  is a state diagram illustrating logic states of a raster-order algebraic noise generator in accordance with the aspects of the present invention. 
         FIG. 6  is a schematic diagram illustrating a raster-order algebraic noise generator in accordance with the aspects of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     Various embodiments will be described in detail with reference to the drawings, where like reference numerals represent like parts and assemblies throughout the several views. Reference to various embodiments does not limit the scope of the invention, which is limited only by the scope of the claims attached hereto. Additionally, any examples set forth in this specification are not intended to be limiting and merely set forth some of the many possible embodiments for the claimed invention. 
     Throughout the specification and claims, the following terms take at least the meanings explicitly associated herein, unless the context clearly dictates otherwise. The meanings identified below are not intended to limit the terms, but merely provide illustrative examples for use of the terms. The meaning of “a,” “an,” and “the” may include reference to both the singular and the plural. The meaning of “in” may include “in” and “on.” The term “connected” may mean a direct electrical, electro-magnetic, mechanical, logical, or other connection between the items connected, without any electrical, mechanical, logical or other intermediary therebetween. The term “coupled” can mean a direct connection between items, an indirect connection through one or more intermediaries, or communication between items in a manner that may not constitute a connection. The term “circuit” can mean a single component or a plurality of components, active and/or passive, discrete or integrated, that are coupled together to provide a desired function. The term “signal” can mean at least one current, voltage, charge, data, or other such identifiable quantity 
     Briefly stated, the present disclosure generally relates to image processing algorithms used to reduce color depth from, for example, 18 bpp to 12 bpp without significant visual artifacts. The algorithm implementations typically use less memory and use only basic arithmetic operations, facilitating the implementation of the architecture in hardware. Because the algorithm does not depend on the order of processing of image pixels or image color components, conventional chip configurations can be used, which can significantly reduce the cost of designing pixel driver chips. 
     In order to decrease screen bit-depths for pixels (which limits the number of output colors), a multitoning algorithm can be used. Color halftoning (which is typically used in multilevel printing devices) is typically similar to black and white halftoning, where each tone is typically represented by a single binary digit. Each color plane can be dithered independently, and halftone images (color planes) are usually printed on top of each other. Multitoning is similar to color halftoning, except that color planes are not usually represented by single binary digits, but rather the bit-depth of the pixels in each color plane is reduced. 
       FIG. 1  is a schematic diagram of a computer system for implementing aspects of the present invention. System  100  comprises controller  110 , CMOS imager  120 , system CPU  130 , gate driver  140 , passive components  150 , and LCD display panel  160 . Controller  110  is configured to receive, for example, a video signal from CMOS imager  120  or system CPU  130 . Controller  110  comprises a video buffer that is configured to receive the video signal. System CPU  130  can be configured to process information contained in the video signal received by controller  110 . Controller  110  is further configured to present video information stored in the video buffer for displaying on LCD display panel  160 . LCD display panel  160  is driven by column drivers that are typically comprised by controller  110  and by gate driver  140 . Gate drivers  140  typically operate in response to control signals provided by controller  110 . Gate drivers  140  also technically comprise DC-DC converters, which can be stabilized by using passive components  150 . 
       FIG. 2  is a graph representing the contrast sensitivity of a typical human vision system. Beyond a spatial frequency of approximately 5 cycles/degree, the contrast sensitivity (shown by curve  210 ) of the human visual system (HVS) normally decreases with increasing spatial frequency. As a consequence, the minimum threshold above which pattern-like artifacts are visible usually rises with increasing spatial frequency. One approach for increasing spatial frequency is to select low-contrast color combinations wherever possible and to generate finely drawn non-overlapping patterns. Accordingly, bright colors can be dithered using non-overlapping patterns of red, green and blue. Additionally, using finely drawn patterns helps to reduce the visibility of dithering artifacts. 
       FIG. 3  is a schematic diagram of a circuit for dithering pixel values in accordance with aspects of the invention. Circuit  300  comprises adder  310 , dither matrix  320 , and quantizer  330 . Adder  310  is configured to add dither matrix values retrieved from dither matrix  320  to pixels from input video signal I. Input video signal I typically comprises frames, are organized as rows and columns. Accordingly, the Cartesian coordinates x and y can be used to select individual pixel values within input video signal I and dither matrix  310 . Quantizer  330  is arranged to truncate and/or round values received from adder  330  to produce video output signal O. 
     Algebraic noise generation is a method for the creation of dispersed dot dithering screens, which uses only simple arithmetic operations. Algebraic noise generation can be considered to be similar to conventional two-dimensional hashing algorithms because of the ability to generate non-clustering hash keys. Likewise, algebraic noise features non-clustering of dither thresholds. 
     A threshold value M xy  in a algebraic noise dithering matrix can be defined as:
 
 M   xy =( A·x+B·y )mod C   (1)
 
where, xy denotes Cartesian “(x, y)” coordinates for matrix element M, the “mod” operator denotes a modulo operation, and A, B, and C represent arbitrarily chosen values. M xy  can be scaled to a desired dithering amplitude and then offset so that its mean value is zero.
 
     Algebraic noise has the characteristics of a good dithering pattern. A good dithering pattern has a uniform distribution of brightness levels, contains mainly high spatial frequencies, and appears to be random (or approximately random), with little visible structure. The pattern can be repeated using a “C” by “C” tile size, and C can easily be made relatively large. 
       FIG. 4  is a schematic diagram of an algebraic noise generator for generating algebraic noise in accordance with aspects of the invention. Algebraic noise generator  400  comprises multipliers  410  and  420 , adder  430  and modulo function  440 . Algebraic noise generator  400  can be used to implement Equation (1) when an input image is not provided in raster order. 
     In Equation (1), the threshold values can range from 0 to C−1. When A, B, and C are mutually prime (e.g., contain no factors in common), the threshold values are dispersed over the dithering matrix, which has dimensions of C-by-C. Also, dithering masks do not need to be tiled across the image because the threshold value can be calculated for each image pixel as the image is being processed, which are based on the pixel coordinates (x, y). Accordingly, the effect of dither matrix tiling can be implicitly accomplished by applying algebraic thresholding as shown in Equation (1). 
     In an embodiment, the bit-depth of the image color component can be reduced by pixelwise adding a stochastic halftoning screen (such as a threshold or dithering matrix) to a component intensity matrix, and to set the appropriate number of the lowest bitplanes to zero. The amplitude of the dithering modulation in bits plus the bit-depth of the truncated result should be greater than or equal to the bit-depth of the input. For example, a color component for a pixel can be truncated from eight bits to five bits, with dithering modulation added to the color components of each pixel prior to the truncation. Moreover, each truncated color component can be “over-modulated” by adding four bits of dithering modulation prior to the truncation from eight bits to five bits. 
     Multitoning algorithms can be used to calculate a device output O x,y  at the pixel position of (x, y) as:
 
 O   x,y =└IMG x,y (2 q −1)/(2 p −1)+ M   x,y /256┘  (2)
 
where IMG x y  represents the image intensity value at (x, y), parameter p is number of bits in the input color plane, and q is number of bits in the target bitplane, M x,y  represents the threshold value in dithering matrix M, and 256 is number of thresholds in a standard dithering matrix. When algebraic noise is being used, the number of thresholds in dithering matrix is a function of parameter C, such that M can be normalized by dividing by C as shown in Eq. (3) below. The “└*┘” is a rounding operator which, for example, can round the number to the nearest smaller integer value. Accordingly, the device output can be given as:
 
 O   x,y =└IMG x,y (2 q −1)/(2 p −1)+ M   x,y   /C┘   (3)
 
where O x,y  is in the range [0:2 q −1], └IMG x,y  is in the range [0:2 p −1], and M x,y  is in the range [0:C−1].
 
     An algorithm based on Equation (3) can be implemented using different halftoning screens for different color components, which minimizes visual artifacts. However, using halftoning in small electronic devices is often not cost efficient because good fixed halftoning screens typically require dimensions of at least 256×256 pixels. The storage of such a large dither matrix in a display driver chip is not usually cost-effective. 
     The goal of bit-depth reducing algorithms for generating multitone screens in small electronic devices is to reduce production costs of the display driver chip. The cost can be reduced by reducing the amount of memory used to store the dither matrix (whereas the use of pre-set screens would require a significant amount of costly memory). If an error diffusion algorithm for bit-depth reduction is used (instead of the bit-depth reducing algorithm) additional memory would be required to record at least one row of the displayed image (and possibly three rows if the image is transferred in interleaved mode—one row from each color plane at the time). Error diffusion also requires at least four adders and several fixed-constant multipliers. Use of the bit-depth reducing algorithm of the present invention does not typically require memorization of the threshold values, or memorization of the dithering error because the threshold values and the dithering error can be calculated at run-time. 
     The performance of the bit-depth reducing algorithm for generating multitone screens can be improved by using additional memory to calculate field statistics. For example, maximal spatial dispersion between overlapping dithering algebraic noise matrices is obtained when the modulo of ±C/3 (e.g., ±C/3 mod C) is added to green and blue dither matrices, and red dither matrix remains unchanged. As a result of this operation, three dither matrices R, G, and B can be defined as:
 
R xy =M xy   (4)
 
 G   xy =( M   xy   +C/ 3)mod C   (5)
 
 B   xy =( M   xy +2 C/ 3)mod C   (6)
 
     The R, G, and B matrices can thus be used to dither red, green, and blue components of the input image, respectively. The dithering results can be further improved by using local and global image statistics f(Image) and g(x,y), respectively as shown below in Equations (7)-(9). However, to determine such information, additional memory is used, which can be disadvantageous for some small devices where memory is sufficiently limited.
 
R xy =M xy   (7)
 
 G   xy   =R   xy   +f (Image)+ g ( x,y )  (8)
 
 B   xy   =G   xy   +f (Image)+ g ( x,y )  (9)
 
     Although no image-processing prior to multitoning is necessarily required, the bit-depth reducing algorithm for generating multitone screens can be used to successfully reduce color depth without significant visual artifacts. Additionally, a system using bit-depth reducing algorithm for generating multitone screens typically requires very little memory (only three numerical values are stored), which facilitates hardware implementation. The numerical values are determined using calculations such as addition, multiplication and modulo, which are easy to realize “in silicon.” The price of gates is typically much lower than the price of implementing entire matrices, which makes this solution extremely cost effective. 
     Additionally, the algorithm for bit-depth reducing algorithm for generating multitone screens does not depend on the order of processing of image pixels (such as column-wise, row-wise, color plane-wise, and the like), which results in increased implementation flexibility. The relative simplicity of the bit-depth reducing algorithm for generating multitone screens and the lack of dependency on information about neighboring pixels enables on-the-fly calculation, and eliminates the need for a receiving (intermediate) buffer. The bit-depth reducing algorithm for generating multitone screens can thus be used in most existing chip configurations without requiring a complete chip redesign. Using existing chip configurations can significantly reduce the cost of the new product design. 
     If the image data arrives in raster-order, the multipliers shown in  FIG. 4  may be eliminated as shown in  FIG. 5  and  FIG. 6 .  FIG. 5  is a state diagram illustrating logic states of a raster-order algebraic noise generator in accordance with the aspects of the present invention. As shown below with reference to  FIG. 6 , an example algebraic noise generator can be implemented using two N-bit constants (“A” and “B”), two N-bit registers (“M” and “X0”), and one N-bit unsigned adder, which is used to calculate a value “M” for each new column, and to calculate “X0” at the start of each line. When “C” is assigned the value of 2 N , the unsigned addition operation of (X0+B) mod C is repeated “C” times. Likewise, the unsigned addition operation of (M+A) mod C is also repeated “C” times. Thus an image of dimensions “C” by “C” can be dithered. When N is equal to twelve bits, example values for A, B, and C can be 2365, 3111, 4096, respectively. When N is equal to eight bits, example values for A, B, and C can be 149, 197, and 256, respectively. 
     The raster-order algebraic noise generator changes states in accordance with signal FLV as shown in state diagram  500 . Signal FLV represents, for example, logic states associated in a video signal for the start of new frame, a new line, and a new column, respectively. For example, state  510  is entered upon a reset condition or when a new frame is present. When signal FLV indicates the logic state of “1XX” (where “1” represents a “true” state, and “X” represents a “don&#39;t care” state), the state of  510  is entered. Other states are entered when new addresses for rows and columns of a frame are encountered. 
     State  520  is entered when a new line is encountered, such as when signal FLV is equal to the logic state of “01X.” When state  520  is entered, a new value for X0 is calculated using the equation (X0+B) mod C (which uses the previous value of X0 that has been previously stored in a register). Additionally the value M is assigned the value of X0. The desired number of most significant bits (MSBs) from M can be used as the desired dither value. 
     State  530  is entered when a new column is encountered, such as 160 FLV is equal to the logic state of “001.” When state  530  is entered, a new value for M is calculated using the equation (M+A) mod C (which uses the previous value of M that has been previously stored in a register). The logic flow remains in state  530  while signal FLV remains in the logic state “001.” 
     State  540  can be entered from state  520  when signal FLV still remains in the logic state of “01X” and new values for X0 and M have been assigned. The logic flow remains in state  540  while signal FLV remains in the logic state “01X.” 
     State  550  can be entered from state  530  one signal FLV remains in the logic state of “000” and a new value for M has been assigned. The logic flow remains in state  550  while signal FLV remains in the logic state “001.” 
       FIG. 6  is a schematic diagram illustrating a raster-order algebraic noise generator in accordance with the aspects of the present invention. Generator  600  is arranged to operate in accordance with the state diagram  500  as discussed above. Generator  600  comprises six multiplexers ( 610 ,  620 ,  640 ,  650 ,  660 , and  690 ), one adder ( 630 ), and two registers ( 670  and  680 ). 
     The reset signal is used to initialize registers  670  and  680  to a zero value. The new frame signal uses multiplexer  690  to reinitialize M XY  to a value of zero and uses multiplexer  660  to reinitialize X 0 . The new column signal stores new values for M XY  and X 0  using register  670  and  680 , respectively. The new lines signal is used to select between coefficients A and B using multiplexers  610 , and between M XY  and X 0  using multiplexer  620 . The selected values are summed using adder  630 . The new line signal uses multiplexer  640  to select between the summed value from adder  630  and the current value X 0  using. Additionally, the new line signal uses multiplexer  650  to select between the summed value from adder  630  and the output of multiplexer  660 . 
     Although the invention has been described herein by way of exemplary embodiments, variations in the structures and methods described herein may be made without departing from the spirit and scope of the invention. For example, the positioning and/or sizing of the various components may be varied. Individual components and arrangements of components may be substituted as known to the art. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention is not limited except as by the appended claims.