1. Field
The present disclosure relates generally to color rendering to an output device, and more specifically to methods and apparatus for color rendering for output to display devices, such as binary, high-dimensional output display devices.
2. Background
For display devices, in order to produce intended colors that will be displayed on a target display device, normally a source color (e.g. source color space expressed as a tuple of numbers in standard RGB (sRGB)) must be converted to a color space of the target device (e.g. the device RGB of an LCD display, for example, or the device CMYK of a printer). This can be a computationally intensive process due to sophisticated algorithms applied for gamut mapping, color separation, etc. The most direct way of getting from a source to a destination device color space is to set up a direct transformation, such as through a look-up table (LUT) where destination color values are stored for a regular sampling of the source color space. To convert colors fast enough for practical applications, the color conversion is typically pre-computed offline and stored in the LUT. A color in the source color space is then transformed to the target device color space in real time using the pre-computed LUT.
A known approach is to compute a LUT that contains all of the combinations of the source colors. For example, in an 8-bit/channel sRGB color space, a LUT that contains 256×256×256 nodes must be produced for this purpose (since the color space is 3 dimensional). Due to practical hardware limitations, especially in mobile devices, it is known to utilize a much smaller LUT computed from the full 256×256×256 LUT, for example, and a real-time interpolation process is then applied in conjunction with the smaller LUT to transform colors from the input color space to the output color space.
Even with a reduced size LUT, however, in certain display devices, such a binary high-dimensional output devices, conventional interpolation methods do not work. For example, given a standard sRGB color space input, situations arise during interpolation to the device color space for a constrained high-dimensional binary output device (i.e., constrained to three output colors) where conventional interpolation would cause such devices to simultaneously have more than three different pixel color settings in an array of pixels modulating colors, which is not tenable when constrained to three colors to be used for rendering the particular interpolated color. Thus, there is a need for methods and apparatus for color rendering in such devices operating under such color constraints, as well as a reduction in the diffusion error for subsequent neighboring pixels yet to be rendered.
The examples described herein provide methods and apparatus for color rendering for display devices that afford a reduction in diffusion error, especially in high-dimensional binary output devices. Thus, according to a first aspect, a method for color rendering is disclosed that includes receiving color space data and mapping this received color space data to an intermediate color space. The method further includes color rendering from the intermediate space using a pre-generated plurality of extended primary colors for temporal modulation, wherein each of the pre-generated plurality of extended primary colors comprises a combination of at least two subframes with each subframe having a respective primary color.
According to another aspect, an apparatus is disclosed for color rendering including means for receiving color space data, and means for mapping the received color space data to an intermediate color space. The disclosed apparatus also includes means for color rendering from the intermediate space using a pre-generated plurality of extended primary colors for temporal modulation, wherein each of the pre-generated plurality of extended primary colors comprises a combination of at least two subframes with each subframe having a respective primary color.
According to yet another aspect, an apparatus for color rendering is disclosed having at least one processor configured to receive color space data, and map the received color space data to an intermediate color space. The at least one processor is also configured to color render from the intermediate space using a pre-generated plurality of extended primary colors for temporal modulation, wherein each of the pre-generated plurality of extended primary colors comprises a combination of at least two subframes with each subframe having a respective primary color. Further, the apparatus includes at least one memory device communicatively coupled to the at least one processor.
In yet another disclosed aspect, a computer program product, comprising a computer-readable medium includes code for causing a computer to receive an input color space data. The medium further includes code for causing a computer to map the received color space data to an intermediate color space. Also, the medium includes code for causing a computer to color render from the intermediate space using a pre-generated plurality of extended primary colors for temporal modulation, wherein each of the pre-generated plurality of extended primary colors comprises a combination of at least two subframes with each subframe having a respective primary color.
The present disclosure concerns methods and apparatus for color rendering in display output devices and, in particular, with devices having color constraints such as an Adjustable Interferometric Modulation Display (AIMOD) type display. The disclosed methods and apparatus employ temporal modulation to an intermediate color space having primaries that are constrained to binary values, such as in an AIMOD display. This temporal modulation engenders new primaries that are useful in reducing diffusion error for subsequent neighboring pixels yet to be rendered
Before discussing the present apparatus and methods, it is first noted at the outset that the word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment or example denoted herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or examples.
As discussed previously, the color rendering process includes mapping of the input color space to the output device color space in a manner to best optimize faithful reproduction of the input color space in the output device. As illustrated in
Although the example in
In multi-primary devices, such as an AIMOD device, such devices can produce many primary colors instead of just three (e.g., more colors than the standard Red, Green, and Blue).
In order to be able to show grayscale shades or different levels of intensity of a pixel between the black and the bright states using an array of AIMOD elements, either spatial or temporal dithering can be used. Spatial dithering divides a given subpixel into many smaller addressable elements, and drives each of a plurality of individual elements (e.g., a plurality of element 300) separately in order to obtain the gray shade levels. For example, three of the elements 300 each having a respective red, green, and blue primary could be each addressed. Temporal dithering, on the other hand, works by splitting each field or frame of data into subfields or subframes with that occur in time, where some subfields last longer than the others to generate a desired intensity level with the mixture as perceived by the human optical system due to persistence of vision.
A unique primary color is thus produced by adjusting the air-gap, i.e., each primary corresponds to a respective air-gap distance. Assuming only three air gaps (i.e., three primary colors) are allowed to be used for temporal modulation with three sub-frames, a 17×17×17 sRGB LUT may be computed to convert sRGB to AIMOD device output colors. Each node of the LUT contains the fraction of modulation time of three air gaps used to produce the output color.
Moreover, conventional color imaging devices are designed to have a very limited number of primary colors (typically 3 to 6 primaries) for color mixing, and any color that may be produced by mixing these primaries. If an “n” number of primaries is assumed, a color at a node of a LUT is mixed with up to n primary colors. A color that is not at a node is interpolated using the LUT and the resulting color is still the combination of up to n primary colors. As mentioned before, an AIMOD display, in which air gaps are tunable, is capable of creating a large number of primary colors. The number of primaries, n, is a very large number, and could be a few hundred, for example. However, a color to be displayed is only mixed by very few primaries. For purposes of this disclosure, the value “m” denotes the maximum number of primaries allowed to mix a color, where m is much smaller than n. Using a conventional color processing method to transform colors as shown in
To resolve the problem, the present methods and apparatus utilize a pre-computed LUT for color transformation that is used only for gamut mapping and transforming colors to an intermediate color space. This intermediate color space may be a device-independent uniform color space, such as CIELUV, CIELAB, or a CIECAM based color spaces, as determined by the International Commission on Illumination (CIE). Colors in the intermediate color space are then rendered by transforming the intermediate color space to the output device color space (the corresponding air-gaps) by vector error-diffusion and temporal modulation, which will be discussed below.
For purposes of explaining the present methods and apparatus, it is assumed that a source color space is sRGB, and that gamut mapping is performed in CIECAM02 JAB color space, the intermediate color space is CIELAB, and a 17×17×17 LUT is to be created to convert colors from sRGB to L*, a*, b* color space (i.e., CIELAB color space). The sRGB color gamut and the AIMOD color gamut are produced in CIECAM02 JAB color space, where each sRGB color at a node of the LUT is converted to JAB, gamut mapped to the AIMOD gamut, and then converted to LAB color space. Of course, these constraints are merely exemplary, and other color spaces or standardized color spaces are contemplated for use in the present methods and apparatus.
It is further noted that since AIMOD multi-primary devices, for example, produce high brightness primary colors, white and black states, the, reflective intensity of colors may be modulated by spatial dithering, involving local groups of pixels, as discussed before. An error diffusion method may be applied to determine a primary (e.g., an air-gap distance) to produce the color, and the color error is propagated to neighboring pixels that have not been dithered yet, as is known in error diffusion dithering.
Because the intensity of each primary in an AIMOD display cannot be changed due to its binary nature, each triangle (e.g. 500) encompassed by the White primary, the Black primary, and a color primary P is large, and therefore the color error ΔE to be spread to neighbor pixels due to dithering can be large. This may result in unacceptable visible halftone patterns. Reducing the ΔE to be spread to other colors will reduce or eliminate the halftone artifact. This can be achieved by temporal modulation. Accordingly, by using multiple sub-frames for temporal modulation according to the present disclosure, an intermediate intensity step or color may be produced for each primary.
Further, by mixing two half-primaries, “new” primaries are created (i.e., new in the sense of being an expanded primary mixed by temporal modulation and treated as primaries). For example, as may be seen in
With 2-subframe temporal modulation as illustrated in
According to a further aspect of the presently disclosed methodology, given a two subframe constrained temporal modulation the following conditions could be applied in an exemplary implementation:
WK=0.5W+0.5K,
WP=0.5W+0.5P, and
KP=0.5K+0.5P; and
The received color space is gamut mapped to an intermediate, temporal color space (i.e., gamut mapping) as shown in block 704. The temporal color space may be a standardized color space, such as CIELAB, for example. Process 704 effects color space conversion from the sRGB color, for example, to an intermediate color space; e.g., a standardized CIELAB color space. The process(es) of block 704 may be implemented by a processor, such as processor 102.
From the intermediate color space created in block 704, flow proceeds to block 706 where, spatial dithering between adjacent pixels in a display device may be applied to engender varied luminance a perceived by the human eye over the space between the pixels. It is noted, that the spatial dithering may be effected through the error diffusion process. The output of this step may be physical primaries, as well as expanded primaries produced with temporal modulations.
After block 706, flow proceeds to block 708 between from the intermediate color space, color rendering may be effected from the intermediate space using the temporally modulated expanded primaries illustrated by
After the process of block 708, the determined primaries (or air gap in the case of an AIMOD) using the temporal modulation are used for color rendering in an output device's color space (e.g. devRGB) as indicated in block 710. The process in block 710 block 708 may be carried out by a processor and memory (or database) for a LUT, or alternatively by logic circuitry and an associated memory or storage.
From the intermediate color space, spatial dithering by a processor 804 may be performed. Further, a processor 806 for extending the based primary colors determines temporally modulated extended primaries for use in temporal modulation. Processor 806 may utilize a LUT 808 or similar storage device or database containing pre- generated temporally modulated primaries. According to an aspect, the temporally modulated primaries are constructed using the primary colors white (W), black (K), and another primary (P). Additionally, processor 806 may be configured to receive an input of the number of subframes used for temporal modulation, such as two (2) in the example of
The extended primary colors (or the air gaps in the case of AIMOD devices) are then used to perform temporal modulation with a processor 810. In the instance of multiple primary binary devices with constrained temporal modulation (i.e., binary states), such as with air gaps of AIMOD devices, the extended primaries using multiple subframes temporally modulated allow for different shades/intensities, while yet ensuring that no multiple contradictory air gaps will not occur, as explained before with respect to
It is noted that the processing devices, modules, or means (or equivalents thereof) illustrated in
As mentioned above, if more sub-frames for temporal modulation can be afforded, more shades or colors will be produced. Accordingly, rules similar to 2-subframe modulation are applied for primary expansion for greater than 2 subframe modulation. As an example,
As an example of 3-subframe modulation, the rules would be as follows:
WWK=(W+W+K)/3
WKK=(W+K+K)/3
WWP=(W+W+P)/3
WPP=(W+P+P)/3
KPP=(K+P+P)/3
KKP=(K+K+P)/3, and
WKP=(W+K+P)/3; and
As may be further seen in
WWWK=(W+W+W+K)/4
WWKK=(W+W+K+K)/4
WKKK=(W+K+K+K)/4
KKKK=(K+K+K+K)/4
WWWP=(W+W+W+P)/4
WWPP=(W+W+P+P)/4
WPPP=(W+P+P+P)/4
KPPP=(K+P+P+P)/4
KKPP=(K+K+P+P)/4
KKKP=(K+K+K+P)/4
WWKP=(W+W+K+P)/4
WKKP=(W+K+K+P)/4, and
WKPP=(W+K+P+P)/4; and
As may be further seen in
It is further noted that the constrained temporal modulation can be applied to any number of various known frame rates. Ideally, the frame rate is selected to be high enough to avoid noticeable flicker.
Apparatus 1200 further includes means 1208 for applying pre-generated extended primaries (or air gaps for AIMOD devices) in constrained temporal modulation, the extended primaries being engendered with temporal subframes. Means 1208 may include a processor, as well as a storage device, such as a LUT to store the pre-generated extended primaries. Additionally, means 1208 may receive an input number of temporal subframes to be used, which affects the number and location of extended primaries to be used. In an aspect, the locations and the number of based primaries (air-gaps) for modulation and the number of sub-frames are optimized for the balance of performance and image quality. Further, apparatus 1200 includes means 1210 for vector error diffusion to render a color (e.g., color C) to a primary. In an aspect, the color is rendered to a primary through vector error diffusion.
According to the foregoing, the present apparatus and methods utilize temporal modulation for primary color expansion (i.e., new colors mixed by temporal modulation are treated as primaries). In an aspect, the colors mixed in the temporal modulation are White, Black, and a color primary to produce the new primaries. In a further aspect, for a constrained output device having binary multi-primaries, this modulation affords the ability to better modulate intensity of a color to be rendered.
It is noted that the word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment or example described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or examples. It is also understood that the specific order or hierarchy of steps in the processes disclosed is merely an example of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged while remaining within the scope of the present disclosure. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
Those of skill in the art will understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
Those of skill will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, an application specific integrated circuit (ASIC), a digital signal processor (DSP), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The steps of a method or algorithm described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium or computer-readable medium is coupled to the processor such the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal In the alternative, the processor and the storage medium may reside as discrete components in a user terminal The storage medium may be considered part of a “computer program product,” wherein the medium include computer codes or instructions stored therein that may cause a processor or computer to effect the various functions and methodologies described herein.
The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.