Abstract:
The proposed systems and methods automatically select the node locations of a multi-dimensional lookup table transformation in accordance with the relative importance of multi-dimensional input values. Such importance, as an example could be quantified by the statistical distribution of the input data. Additionally, the proposed scheme is efficient and works for inputs of arbitrary dimensionality. Finally, the proposed method accounts the characteristics of the input-data and the geometry of the input space. The proposed systems and methods are generally applicable to a large number of practical scenarios including, but not limited to, color imaging applications where input adaptive color look-up tables are desired.

Description:
TECHNOLOGY 
       [0001]    Present systems and methods relate to the art of color image processing. More specifically, present systems and methods provide for real-time selection of the node locations for a multi-dimensional look-up table based upon the characteristics of each image. 
       BACKGROUND 
       [0002]    An image prepared for rendering on an electronic device is represented by a set of pixels that each describes a small portion of the image in terms of digital values that represent the colorants available to the rendering device. For example, in an image prepared for display on a video monitor, each pixel typically describes the intensity of the red (R), green (G) and blue (B) components of light that are illuminated to reproduce the color at the associated region of the screen. Similarly, in an image prepared for rendering on a printing device operating in a CMYK color space, each pixel describes the amount of cyan (C), magenta (M), yellow (Y) and black (K) colorants to applied to the print medium in order to reproduce the color at the associated region of the rendered image. 
         [0003]    In an 8-bit system, the pixel value for each colorant can range from 0 to 255, with 255 representing the maximum or fully saturated amount of colorant, For an RGB color space, for example, fully saturated red is represented by the pixel value R=255, G=0, B=0 and ideally, a printer operating in a CMYK color space, for example, would reproduce the fully saturated red in response to the pixel value C=0, M=255, Y=255, K=0. In other words, the magenta and yellow colorants, when combined through simple subtractive mixing, would be perceived as red. 
         [0004]    However, the spectral properties of the red phosphor used in the video monitor typically differ from those of the subtractively mixed magenta and yellow colorants of a particular printer. As a result, the visual appearance of the red described in RGB space and displayed on the video monitor will usually not match that of the red described in CMYK space and printed on a page. Further, even when rendered on different devices of the same type (e.g., two CMYK printers), the colors reproduced in response to the same color value (e.g., CMYK) will often differ in visual appearance. Accordingly, color transformations are typically required when color matching between two rendering devices is required. In the example described above, the saturated red pixel with RGB color value 255, 0, 0 may be mapped to a CMYK printer pixel that represents, for example, magenta and/or yellow that is less than fully saturated and also calls for a small cyan component, e.g., C=27, M=247, Y=255, K=0. 
         [0005]    Color transformations are often complex, multidimensional functions that correct for the nonlinear behavior of both digital color devices and the human visual system, which would require a significant amount of memory in order to process large images in real-time. To reduce the computational cost, these functions are typically implemented as multidimensional lookup tables. A look-up table is essentially a rectangular grid that spans the input color space of the transform. Output values corresponding to each node, i.e., intersection point, of the grid are pre-computed and stored in the look-up table. Input colors are processed through the look-up table by i) retrieving the cell to which the input color belongs, and ii) performing an interpolation among a subset of the surrounding cell vertices to compute the output color value. 
         [0006]    The size of a look-up-table is typically limited by the amount of available processor RAM and cache memory. Accordingly, look-up tables are built with an input node sampling that is as sparse as is practical under the circumstances. For example, while a 24-bit RGB vector would be capable of describing over 16 million colors, it would not be unusual for the corresponding RGB-to-CMYK look-up table to be partitioned into 16×16×16 (4096) table locations or nodes, with one CMYK value stored at each node. CMYK values of points not directly represented by nodes are then determined by interpolation among nodes or some other suitable calculation and thus, the issue of “node placement” becomes very important. 
         [0007]    In spite of this significance, however, input nodes are typically positioned on a uniformly spaced lattice and even. In cases where the nodes are adapted to lie on a non-uniform lattice, node locations are usually selected based on the curvature of the function that describes the multi-dimensional transform. Simple mathematical operators such as the second derivative can be used to yield a measure of curvature. However, even in those scenarios, the distribution or relative importance of the values of the input values is usually ignored, which often leads to poor node placement and consequently, to inaccurate transforms. 
         [0008]    Techniques for “truly optimal” node placement are search based and hence very intensive in computation. That is, the identification of truly optimal locations of a lattice for the placement of the nodes of a multi-dimensional look-up table would entail a search on all candidate nodes to eliminate as many locations as possible for optimal memory/cost reduction while maintaining the accuracy of the required color transformations. Since the set of candidate nodes in general is very large, particularly for high-dimensional inputs, a search of every node would also be very expensive and thus, is an impractical solution. 
       BRIEF SUMMARY 
       [0009]    In one aspect, a look-up table, includes a multi-dimensional grid having a node located at each intersection point thereof, the multi-dimensional grid having an output value stored at each node, with each the node being accessible by an input index value, and with at least one of the nodes having been selected based upon an importance of a transformation accuracy of a characteristic of an input image. 
         [0010]    In another aspect, a method includes obtaining a significance function describing the relative importance of a transformation accuracy of input variables to a multi-dimensional look-up table; selecting as an output node, a significance function output that satisfies a node selection criteria; weighting the significance function with a distance penalty function; and selecting as a next output node, a significance function output that satisfies the node selection criteria. 
         [0011]    In yet another aspect, a printing system includes an image acquisition system configured to provide electronic image data representing an input color image; an image processing system configured to transform electronic image data color values representing the input color image from an input color space to an output color space by retrieving output color values from storage locations of a multi-dimensional look-up table linked to each respective input color value, the multi-dimensional look-up table having nodes selected based upon an importance of a transformation accuracy of a characteristic of an input image; and an image output system configured to generate an hardcopy output image based upon the output color values retrieved from the multi-dimensional look-up table. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0012]      FIG. 1  is a depiction of a portion of a multi-dimensional look up table having uniform tiling; 
           [0013]      FIG. 2  is a depiction of a portion of a multi-dimensional look up table built using adaptive node selection; 
           [0014]      FIG. 3  is a flow chart showing a method of building a multi-dimensional look-up table using adaptive node selection; 
           [0015]      FIG. 4  is a flow chart showing a method of post processing for improved node spacing in a look-up table built using adaptive node selection; 
           [0016]      FIG. 5  is a flow chart showing a method of post processing to add nodes in a look-up table built using adaptive node selection; and 
           [0017]      FIG. 6  is a block diagram showing the transformation a process for building an accurate color transformation look-up table from a source profile to a scanner profile. 
       
    
    
     DETAILED DESCRIPTION 
       [0018]      FIG. 1  provides an example of the type of look-up table  112  that is commonly used for RGB to CMYK color transformations. An input RGB value is used to determine R, G and B index values that locate the transformation data within the table. Index values corresponding to the nodes  120  are used to directly access the color values that are pre-computed and stored at the respective node  120 . Since, the index values corresponding to a point  116  do not coincide with any node location  120 , i.e., a transformation value is not directly available from the table  112 , the conversion is accomplished by interpolating between the CMYK values stored in nodes  124  at the vertices surrounding to the point  116 . Since the input RGB color is defined in three dimensions, the interpolation is done in three dimensions. The RGB index values for look-up table  112  were generated via the quantization or “tiling” of the color space into equal, regularly sized and regularly shaped tiles. Accordingly, tiling in look-up table  112  is even and regular. 
         [0019]    Adaptive node selection provides a way to build a look-up table  114  such as that illustrated in  FIG. 2 , with nodes  130  selected based upon the characteristics of an input image. As before, an input RGB value determines index values r, g, b, which are used to locate the transformation data within the table  114  and the transformation value corresponding to point  126  is accomplished by interpolation, rather than by retrieving it directly from storage using a single index value. While tiling in look-up table  112  of  FIG. 1  is even and regular, present systems and methods provide a look-up table  114  with tiling that is arranged based upon the characteristics of the input image. In the example shown, index values on the R axis are uniformly distributed, while the values on the G axis are concentrated toward the center of the input space and the values on the B axis are concentrated toward the ends. A look-up table such as that shown in  FIG. 2  may be useful for transforming a color image with multiple shades of green at the center of the image. 
         [0020]    Turning to  FIG. 3 , a method  10  of selecting node locations for a multi-dimensional look-up table  12  begins at block  101  with a set S of input values. Generally, S is a set of values in the input vector space V that are determined to be statistically representative of color values in the input image or a region thereof. In one aspect, S is a set of color values for the most significant colors in the input image. Set S may be selected in many different ways. For example, it may simply be the set of all possible input RGB values. In another aspect, S is selected by a user based upon a visual inspection of the input image. For example, if a large region if the image has one or more objects with the same color, the user may select S to increase the significance of that color during node selection to locate a higher number of nodes, and thus increase the accuracy of the color transformations, in the vicinity of that color. Thus, for a close up image of a red flower generated in an RGB color space, S may include color values 255, 0,0; 245, 0,30; 252, 0,45; 248, 0,60; 255, 0,90, etc that represent the different shades of red displayed in the flower petals. 
         [0021]    In one aspect, present systems and methods then define a significance function p(x) and a distance weighting function d(x, y) at block  103 . Generally, significance function p(x) determines the relative importance of a color x in set S, with “importance” defined in the context of the color transformation to be applied to the image. That is, with respect to the visual appearance of the image, how important it is to accurately transform that color. In one aspect, p(x) is selected based upon a multi-dimensional probability distribution, i.e., histogram, of colors x within the chosen subset S of input values, in which case, importance is dictated by the frequency of the colors within S. In another aspect, p(x) may be a user defined function that emphasizes certain memory colors, i.e., colors such as neutral colors and skin tones, for which the characteristic of an object influences the human perception of its color, in favor for other colors. 
         [0022]    The distance weighting function of block  103  is selected such that: 
         [0000]        d ( x,y )≧0 ,∀x,yεV    
         [0000]        d ( x,y )=0           x=n   max    
         [0023]    Distance weighting function d(x, y) serves to balance the significance function against the relative positioning of all of the nodes in look-up table  12 . More specifically, the distance weighting function forces the significance of the just considered node to 0 so it will not be selected again and also, prevents nodes of look-up table  12  that are within a region of high significance from being positioned too closely together. 
         [0024]    In one aspect, present systems and methods distance apply a function d(x, y) defined as: 
         [0000]        d ( x,y )=(1 −e   −α∥x−y∥     2   ) 
         [0000]    and the distance between adjacent nodes can be controlled by varying α. Generally, α is a positive, scalar value. Thus, for a given x and y, an increase in a will result in a decrease in e−α∥x−y∥ 2  and cause d(x, y) to approach 1. In one aspect, the value of α may be specified by the user, e.g., based upon previous knowledge, trial and error, etc. 
         [0025]    In one aspect, at block  107 , method  10  identifies x max , the location where the input has maximum significance. Generally, the identification of x max  includes sorting the significance values for all of the inputs in the subset S, then selecting the input value where the significance value is the highest as the node. 
         [0026]    It is understood that method  10  may select several node locations that are very close together, such as, for example for example when an image has two or more dominant colors that are very close in visual appearance. i.e. the color values could be stored at nodes that are separated by a very small distance in the multi-dimensional input space. Accordingly, in one aspect, present systems and methods provide P(x), a distance-weighted significance function of the input at block  109  by applying distance function d(x, x max ) to the significance function p(x) of block  105 . More specifically, distance weighting function d(x, x max ) is applied to input significance p(x) to attach a “distance penalty” that prevents the nodes from being positioned in locations that are too close to x max . 
         [0027]    It is understood that the value of distance weighting function d(x, y) is generally dependent upon the characteristics of the image, i.e., d(x, y) has the biggest impact when an undesirable number of nodes would otherwise be positioned in very close proximity. 
         [0028]    In one aspect, processing of method  10  may terminate when the number of high significance input locations that have been considered is sufficient. More specifically, in one aspect, present systems and methods cease processing when the area under the distance-weighted input distribution P(x) exceeds a threshold T, as indicated in block  111 . Generally, the area under P(x) represents a rough estimation of the approximation error of look-up table  12 . Thus, for a given input distribution p(x) and distance weighting d(x,y), the threshold T automatically determines the number of nodes selected through the process, i.e. smaller T results in a greater number of nodes. The processing of method  10  then concludes with constructing a set of nodes N. 
         [0029]    As explained above, each node n j  is a multi-dimensional vector, with component values n j (k) along the k-th dimension. Thus on some occasions, the projections of the nodes on-to their individual dimensions, i.e. the component values, may be coincident or very close to each other, even when the node vectors n j  are sufficiently separated in multi-dimensional space. In such cases, additional processing to eliminate one or more nodes may be desirable. 
         [0030]      FIG. 4  is a block diagram of a post-processing method  20  that may optionally be applied to the set of nodes N to eliminate nodes that are spaced too closely in look-up table  12 . For example, saturated red, which is represented by RGB coordinates [255 0 0] and a strong magenta color, e.g., RGB coordinates [240 0 255] are quite different in both visual appearance and numerical value, but have very close red components. If an image containing both colors is rendered in a RGB color space, method  10  could include both values in the set of nodes N. Accordingly, in one aspect, method  20  may optionally be applied to eliminate one or more values from set N. 
         [0031]    The following definitions are provided for the post-processing node elimination method  20  of  FIG. 4 .
       M is the number of nodes selected prior to termination of method  10 , i.e.,   n j , j=1,2, . . . M;   n 1 , n 2 , . . . , n M  are the sorted scalar values of the nodes in the kth dimension, i.e., n 1 ≦n 2 ≦ . . . n M ;   Δ min  is the minimum allowable node-spacing along the kth dimension;   n min  and n max  are the “boundary values” that must be appended to the node vector, with n min ≦n 1  and n max ≦n M ; the set of M+2 nodes with boundary values added to the set N is denoted by N′.   pk(n) is the separable weighting function for the k-th dimension obtained from the joint multi-dimensional profile p(x);   n 0 =n min  and n M+1 =n max ; and   p(n min )=p(n max )=1       
 
         [0040]    The final assumption ensures that the boundary values will always appear in the final node selection. 
         [0041]    In one aspect, method  20  first generates node set N′ by adding boundary nodes n min  and n max  to node set N. Beginning with n j =n max , method  20  determines at block  201  whether the difference between n j+1  and n j  is less than Δmin. If not, the spacing between the node levels is sufficient, and method  20  determines at block  209  whether set N′ has other nodes to be considered and if so, decrements the counter and returns to block  201  and determines whether n j+1 −n j  is less than Δmin for the node with the next highest significance. If n j+1 −n j &lt;Δmin at block  201 , method  20  compares the value of the weighting function at n j+1  to the value at n j  at block  203 . If p(n j+1 )≧p(n j ) at node level n j , node level n j+1  is retained and node level n j  is eliminated as shown at block  205 . Conversely, if p(n j+1 )≦p(n j ) node level n j  is retained and level node n j+1  is eliminated at block  207 . In either case, method  20  determines at block  209  whether set N′ has other nodes to be considered and if so, decrements the counter and performs the comparison of block  201  again for any remaining nodes. Once all nodes of set N′ have been considered, method  20  generates a set N″ of properly spaced look-up table nodes at bock  211 . 
         [0042]    There may also be cases in which the number of nodes generated by method  10  is too small for a desired application. For example, an application may require the number of node levels to be the same along each dimension or it may be necessary to impose constraints on the number of node levels for some other reason. Accordingly, it may sometimes be desirable to process the output of method  10  to add nodes. 
         [0043]    As shown in  FIG. 5 , a post-processing method  30  may optionally be applied to P(x) to add nodes in one or more input dimensions of look-up table  12  such as, for example, to use ICC profiles, which require the same number of node levels along each dimension. 
         [0044]    As before, M is the number of nodes selected prior to termination of method  10 , i.e., n j , j=1,2, . . . M. Further, post-processing node addition method  30  of  FIG. 4  also has:
       P k =the desired size of the look-up table in the kth dimension, k=1,2, . . . m, wherein P k &gt;=M, e.g., a 3-D input look-up table would make a lattice of size P 1 ×P 2 ×P 3 ; and   nodes n 1  through n N , are the sorted scalar values of the nodes in the kth dimension, with N&lt;P k :       
 
         [0047]    In one aspect, method  30  first determines an index i such that i is in 1,2, . . . M and i=argmax |n j+1 −n j |, i=1,2, . . . M at block  301 . Method  30  inputs node set N′ at bock  303  with boundary nodes n min  and n max  added to node set N. A node n*=(n j +n j+1 )/2 is then inserted between n j  and n j+1  a at block  305  and M is then incremented at block  307  to process the remaining nodes until n*=n M . 
         [0048]    In one aspect, post-processing methods  20  and  30  may be performed separately in each dimension to obtain a final lattice of size 
         [0000]    
       
         
           
             
               L 
               
                 i 
                 = 
                 1 
               
               m 
             
              
             
               Π 
                
               
                   
               
                
               
                 P 
                 k 
               
             
           
         
       
     
         [0049]    Present systems and methods may be useful, for example, in an application that attempts to match the colors of a legacy hardcopy. For example, a user with a hardcopy color proof that printed on an unknown print engine and a corresponding electronic file may wish to transform the colors in the electronic file to obtain a near exact reproduction of the hardcopy proof using an identified print engine. 
         [0050]      FIG. 6  is a block diagram showing an example of how present systems and methods may be used to accomplish the desired color transformation. In one aspect, the hardcopy may be scanned at block  41  using a desktop scanner or other suitable device and a scanner profile is generated at block  42  to obtain device independent colors corresponding to the scanned file. In the example of  FIG. 6 , the device independent colors corresponding to the scanned image, identified as CIELabScan  43 , are generated in the CIELab color space. It is understood, however, that other color spaces may also be used. 
         [0051]    Similarly, at block  51 , a source profile of the electronic original is processed to convert the electronic version of the image to the device independent color file CIELabIn  53 . The goal is to then generate a look-up table that can be used to accurately transform data samples CIELabIn  53  to CIELabScan  43 . The most crucial aspect of such a task is typically deriving the 3-D CIELabIn-&gt;CIELabScan look-up table  65  from the electronic file and the scanned data acquired from the proof being matched. 
         [0052]    An image-adaptive color transformation such as that of the present systems and methods may be highly beneficial under these circumstances. Notably, the primary concern is the accurate reproduction of the colors in the image that correspond to those contained in the proof, which are likely to be sparsely or non-uniformly distributed in color space. 
         [0053]    Present systems and methods maintain an access speed comparable to that of prior art look-up tables, yet avoid the disadvantage of using regularly spaced nodes by positioning look-up table nodes in locations that are selected based on a priori knowledge of the statistical distribution or other data defining significance of the input data. The computational burden imposed by use of such methods and systems is very small per iteration. In the case of a M m  look-up table, the number of iterations required to process the entire image is proportional to M, where m is the dimensionality of the input variables. 
         [0054]    It should be understood that the principles of the present system and method are applicable to a very wide range of apparatus, for example, copiers, facsimile machine, printers, scanners, and multifunction devices and that they are useful in machines that reproduce any type of image, e.g., black and white or color images that are generated by depositing ink, toner and other marking materials. 
         [0055]    While present systems and methods have been described in conjunction with embodiments thereof, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. It is appreciated that various of the above-disclosed and other features and functions, or alternatives thereof, may be desirably combined into other different systems or applications. Also, it is understood that various presently unforeseen or unanticipated alternatives, modifications, variations or improvements therein may be subsequently made by those skilled in the art which are also intended to be encompassed by the following claims.