Patent Publication Number: US-11035733-B2

Title: Method for chromatic calibration of an embedded camera of a mobile wireless device

Description:
BACKGROUND 
     Field of the Invention 
     The present disclosure relates chromatic calibration systems and methods for devices having an embedded camera including determining color calibration data from captured images. 
     Description of the Related Art 
     High quality of images captured by embedded cameras, such as those in modern smartphones, has not only become expected, but is a particularly salient selling point in the marketplace. However, the colors represented in image data captured by such embedded cameras are not always faithful to those of the scene or object from which the image data were acquired. This is due to, among other things, limited detector responsiveness to different colors and shortcomings in image processing software on some devices. 
     Chromatic calibration seeks to measure and adjust the color response of image capture and/or display devices so that colors are represented as close as possible to those of a known color space (e.g., RGB (red, green, blue) CMYK (cyan, magenta, yellow, black) etc.). To calibrate a camera, a known calibration target is photographed and the resulting output from the camera is converted to color values. A correction profile is then built using the difference between the camera result values and the known reference values. Typically, such calibration is performed on each device separately and efforts to relieve the time consuming process of individualized chromatic calibration are ongoing. 
     SUMMARY 
     An aspect of the invention includes a method of chromatic calibration of a device having an embedded camera that proceeds by illuminating a plurality of color references with at least one light source. Images of the respective illuminated color references are captured with the embedded camera. Color calibration data are determined from the captured images and the color calibration data are stored in association with an identifier of the device. 
     In an embodiment illuminating includes illuminating the color references with a white light source. 
     In an embodiment a white light source is a camera flash light on the embedded device. 
     In an embodiment a determining the color calibration data includes selecting a color model with which a color space is represented in the captured images; determining chromatic values in each of the color channels in the captured images; and subtracting the color channel chromatic value from an ideal chromatic value of the color channel. 
     In an embodiment the illuminating includes selecting a color of the light source to be of like color as one the color references; and selecting another color of the light source to be of like color as another one of the color references subsequent to capturing the images of the color references under illumination by the previously selected light source. 
     In an embodiment the determining includes selecting a color model with which a color space is represented in the captured images; determining chromatic values in each of the color channels; and subtracting the color channel chromatic value from an ideal chromatic value of the color channel. 
     In an embodiment the method may be performed on a device in an enclosure having an aperture formed therein through which the embedded camera is optically aligned and in which the color reference is installed to be optically aligned with the camera. 
     In another aspect the invention includes an apparatus for chromatic calibration of a an embedded camera that includes an enclosure having an aperture formed therein through which the embedded camera is optically aligned; a plurality of color references each being selectively installable within the enclosure; a processor configured to illuminate the color references with at least one light source; obtain images of the respective illuminated color references captured with the embedded camera; and determine color calibration data from the captured images; and a storage device to store the color calibration data in association with an identifier of the device. 
     In an embodiment the apparatus includes a processor configured to determine chromatic values in each of color channels in the captured images; and subtract the color channel chromatic value from an ideal chromatic value of the color channel. 
     In an embodiment the apparatus includes a processor configured to select a color of the light source to be of like color as one the color references; and select another color of the light source to be of like color as another one of the color references subsequent to capturing the images of the color references under illumination by the previously selected light source. 
     In another aspect the invention includes a computer-readable medium having encoded thereon processor instructions that, when executed by a processor, instructs the processor to illuminate a plurality of color references with at least one light source; obtain images of the respective illuminated color references captured with the embedded camera; determine color calibration data from the captured images; and store the color calibration data in association with an identifier of the device. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a schematic block diagram of an exemplary chromatic calibration system by which the present general inventive concept can be embodied. 
         FIGS. 2A-2B  are illustrations of an example enclosure that can be used in conjunction with embodiments of the present general inventive concept. 
         FIG. 3  is an illustration of a DUT with a lens attached in front of the camera lens that can be used in conjunction with the present general inventive concept. 
         FIG. 4  is a graphical depiction of an example chromatic calibration process by which the present general inventive concept can be embodied. 
         FIG. 5  is a graphical depiction of another example chromatic calibration process by which the present general inventive concept can be embodied. 
         FIG. 6  is a flow diagram of an example chromatic calibration process by which the present general inventive concept can be embodied. 
     
    
    
     DETAILED DESCRIPTION 
     The present invention may be described through certain embodiments thereof, which are described in detail herein with reference to the accompanying drawings, wherein like reference numerals refer to like features throughout. It is to be understood that the term invention, when used herein, is intended to connote the inventive concept underlying the embodiments described below and not merely the embodiments themselves. It is to be understood further that the general inventive concept is not limited to the illustrative embodiments described below and the following descriptions should be read in such light. 
     Additionally, the word exemplary is used herein to mean, “serving as an example, instance or illustration.” Any embodiment of construction, process, design, technique, etc., designated herein as exemplary is not necessarily to be construed as preferred or advantageous over other such embodiments. Particular quality or fitness of the examples indicated herein as exemplary is neither intended nor should be inferred. 
     The techniques described herein are preferably directed to chromatic calibration of embedded cameras, such as those found in smartphones. Upon review of this disclosure and appreciation of the concepts disclosed herein, the ordinarily skilled artisan will recognize other image capturing applications to which the present inventive concept can be applied. The scope of the present invention is intended to encompass all such alternative implementations. 
       FIG. 1  is a schematic block diagram of an exemplary chromatic calibration system  100  by which the present invention can be embodied. As illustrated in the figure, chromatic calibration system  100  may include a test enclosure  110 , a device under test (DUT)  120 , a computing device  130 , a database  140  and a server device  190 . Generally, raw color data are taken from DUT  120  under various lighting conditions and processed by computing device  130  to generate data by which DUT  120  is color calibrated. For purposes of explanation, the following descriptions adopt an RGB (red-blue-green) color model. It is to be understood that chromatic calibration using other color models may be achieved by embodiments of the invention without departing from the spirit and intended scope thereof. 
     Enclosure  110  may be constructed to prevent stray light, i.e., light from the outside enclosure  110 , from entering its interior. In one embodiment, enclosure  110  is constructed of a black resin by  3 D printing operations, although the present invention is not so limited. Enclosure  110  may have an aperture  111  on one side at which a colored reflector  115  may be mounted. Colored reflector  115  serves as a color reference having a specific target color. In certain embodiments, such reflector may be standardized or otherwise known to have a specific reflected light spectrum e.g., narrow spectral band about the desired color. Narrow spectral bands include for example red (590-750 nm, preferably 620-700 nm), yellow (495-590 nm preferably 570-590 nm); blue (380-495 nm, preferably 450-490 nm). Light sources  112  interior to enclosure  110  may illuminate reflector  115 . Light sources  112  may also be standardized or otherwise known to have a specific reflected light spectrum. A lens  122  may be mounted to DUT  120  to focus its camera  121  on the illuminated reflector  115  and DUT  120  may capture an image of the illuminated reflector  115  through lens  122 . The captured image may be analyzed by computing device  130  to determine calibration data, which may then be stored in database  140  in association with suitable identification information (DUT model, embedded camera model, etc.). Accordingly, any other smartphone or other device of the same model can utilize the calibration data without having to explicitly calibrate the device. 
       FIG. 2A  is an illustration of an example embodiment of enclosure  110 , designated enclosure  110   a  for purposes of distinction. Enclosure  110   a  may be of single piece construction having dimensions L×W×H and having aperture  111  formed on one side. On an opposing side, as illustrated in the figure, enclosure  110   a  may have formed thereon a camera aperture  124  and a flash aperture  126 . Camera aperture  124  and flash aperture  126  are positioned relative to one another corresponding to the lens/flash configuration of the particular DUT  120 . For example, camera aperture  124  may have a radius R L  and may be spaced apart from flash aperture  126 , which may have a radius R F , by a distance D. Since each device model may have different lens/flash configurations, separate and distinct enclosures  110   a  may be constructed for each DUT  120 , such as by  3 D printing. Preferably L is 3-20×R L , more preferably 5-10×R L ; W is 3-10×R L , preferably 4-5×R L ; and H is 2-10×R L , preferably 3-5×R L . 
     In any preferable embodiment of the invention the camera aperture may be separated from the flash aperture by a distance of at least the radius R L  or R F . Is preferable that the flash aperture is separated from the camera aperture by a distance D that is no more than 2×R L , preferably 1.5×R L , more preferably R L . In other embodiments the flash aperture has a radius R F  that is smaller than the radius of the camera R L . In preferable embodiments of the invention R F  is 0.5, 0.6, 0.7, 0.8 or 0.9×R L . In a still further embodiment of the invention the camera aperture and the flash aperture are mated under a single protective transparent cover such as glass, sapphire or ITO (indium tin oxide). In still further embodiments of the invention one or more of the flash aperture or camera aperture is biased to protrude from the surface of the enclosure. Preferably the flash aperture protrudes from the surface of the enclosure by 0.1, 0.2, 0.3, 0.4 or 0.5×R F . 
       FIG. 2B  is an illustration of another example embodiment of enclosure  110  designated enclosure  110   b  for purposes of distinction. Enclosure  110   b  may be of similar single piece construction as enclosure  110   a , but may include a shelf  119  on which several light sources are mounted, e.g., a red light source  112   r , a green light source  112   g , a blue light source  112   b  and a white light source  112   w . Light sources  112   r ,  112   g ,  112   b  may be light emitting diodes (LEDs) of sufficiently narrow band around the wavelength of the designated color, i.e., red, blue and green, and light source  112   w  may be a suitable broadband white LED. Light sources  112   r ,  112   g ,  112   b  and  112   w  may be mounted on shelf  119  so as to be directed towards aperture  111  to illuminate color reflector  115  when mounted thereon. Shelf  119  may be mounted a suitable distance from camera aperture  124  so as to be out of the camera field of view when lens  122  is mounted thereon. In a preferable embodiment the light sources are mounted flush to the wall of the enclosure. In still a further embodiment the light sources are mounted flush on the inside of the top of the enclosure. 
       FIG. 3  is an illustration of a DUT  120 , in this case a smartphone, with lens  122  attached in front of the camera lens (not illustrated) of DUT  120 . Such lenses are commercially available in various focal lengths and effective apertures and may be mounted by means of a clip  305  or other attachment device. In certain embodiments, clip  305  may be used to retain DUT  120  to enclosure  110  in addition to attaching lens  122  to DUT  120 . 
     Returning now to  FIG. 1 , DUT  120  may include a camera  121 , processor circuitry  123 , memory circuitry  125  and communications circuitry  127 . These resources may realize an image capture process  162 , by which images are captured and a color correction application  164  through which color calibration data  166  stored in memory  125  are obtained from database  140 , such as over network  180 , and applied to images captured by image capture process  162 . In one embodiment, color calibration data  166  comprise color calibration terms that are added or subtracted, depending on the arithmetic sign of the color calibration term, to pixel values of respective color channels for every image captured by the embedded camera. 
     Computing device  130  may include input/output (IO) circuitry  131 , processor circuitry  133 , memory circuitry  135  and communications circuitry  137 . These resources may realize, among other things typical of a computing device, a lighting control process  172 , by which colored light sources are selectively activated and calibration data determination process  176 , by which calibration data  166  are determined from captured test image  174 . Server device  190  may comprise processor circuitry  191 , memory circuitry  193  and communications circuitry  195 . These resources may realize, among other things typical of a server device, a database management process  178 , by which calibration factors are stored and maintained in database  140 . 
     As illustrated in  FIG. 1 , DUT  120  and computing device  130  may be communicatively coupled through a suitable communication link  152 , such as over a universal serial bus (USB) connection or over a wireless connection such as BLUETOOTH or WiFi, and computing device  130  and server device  190  may be communicatively coupled through a suitable communication link  156 , such as over the Internet. The present invention is not limited to particular media, signaling conventions or communications protocols underlying communication links  152  and  156 . Those having skill in the art will recognize numerous techniques by which communication links  152  and  156  can be realized in embodiments of the invention. 
     In certain embodiments, computing device  130  may be communicatively coupled to light source  112  through a control link  154 , such as over a USB connection. For example, control link  154  may carry a suitable signal under control of lighting control process  172  to select a particular light source  112  (e.g., red, green, blue or white) without having to open enclosure  110 . In other embodiments, a set of switches (not illustrated) may be mounted on the exterior of enclosure  110  by which the colored light source can be selected. 
     In certain embodiments, enclosure  110  is constructed, such as by  3 D printing, to correspond to dimensional specifications of DUT  120 . DUT  120  may be attached to enclosure  110 , such as by lens clip  305 , and calibration data may be generated by calibration data determination process  176 , as described below. Once the calibration data have been generated, they may be conveyed to and stored on database  140 . Color correction application  164  executing on any device having the same embedded camera, such as the same model smartphone, may query database management process  197  for the calibration data, which it may then store in its memory  125  as calibration data  166 . Color correction application  164  may then apply calibration data  166  to images acquired by camera  121 , such as by addition/subtraction of color calibration terms to the respective color channels. 
     In the discussion that follows, a three letter notation is adopted to distinguish the data: the first letter identifies the light source color, the second letter identifies the reflector color and the third letter identifies a particular color channel. For example, WRB indicates a white light source is incidental upon a red reflector with the blue channel being measured. Subscript “c” refers to values provided by the camera and without subscript refers to ideal values, e.g., WRR c  represents white light source, red reflector and red channel for the camera. 
       FIG. 4  is a graphical depiction of an example chromatic calibration process  400  by which the present invention can be embodied. In process  400 , each of three reflectors, red reflector  115   r , green reflector  115   g  and blue reflector  115   b  are illuminated by a white light source  112   w . Light source  112   w  may be realized by the camera flash or may be an LED mounted on shelf  119  illustrated in  FIG. 2B . The reflected light is captured in an image, such as by image capture process  162 , and each of red channel  410   r , green channel  410   g  and blue channel  410   b  are consulted, such as through the RGB pixel values in the captured test image  174 . The reflected light for each channel is indicated in the figure by the three letter notation described above. 
     When pure white light falls on red, green or blue reflectors, ideally the color contributions in the respective color channel (red, blue and green channels) should be maximum (e.g., red channel value for red reflector should be 255) and the contribution to other color channels should be zero (e.g., green and white channel value for red reflected light should be 0). However, due to suboptimal design and limitations of smartphone camera hardware and software, the value in the respective channel is not 255 and some contributions to other channels are observed (i.e., non-zero values). In certain embodiments, contributions to the respective channel are maximized and the contributions to other channels are minimized or removed. This can be achieved by finding the difference (Δ) between the ideal values and smartphone camera values for each channel. The difference Δ may then be used as a calibration term to correct for chromatic differences between different models and makers of smartphone cameras. These values may be determined according to Table 1 below by, for example, calibration data determining process  176 . 
     
       
         
           
               
               
               
               
               
               
               
               
             
               
                 TABLE 1 
               
               
                   
               
               
                 Source 
                 Reflector 
                   
                 Ideal 
                 Camera 
                   
                   
                   
               
               
                 LED 
                 Color 
                 Notation 
                 Value 
                 Value 
                 Difference, Δ 
                 Ideal Δ 
                 Empirical Δ 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
               
               
               
               
               
               
               
            
               
                 White 
                 Red 
                 WRR 
                 255 
                 WRR c   
                 ΔWRR c  = WRR − WRR c   
                 ΔWRR c  = 0 
                 ΔWRR c  ≥ 0 
               
               
                   
                 Green 
                 WRG 
                 0 
                 WRG c   
                 ΔWRG c  = WRG − WRG c   
                 ΔWRG c  = 0 
                 ΔWRG c  ≤ 0 
               
               
                   
                 Blue 
                 WRB 
                 0 
                 WRB c   
                 ΔWRB c  = WRB − WRB c   
                 ΔWRB c  = 0 
                 ΔWRB c  ≤ 0 
               
               
                 White 
                 Red 
                 WGR 
                 0 
                 WGR c   
                 ΔWGR c  = WGR − WGR c   
                 ΔWGR c  = 0 
                 ΔWGR c  ≤ 0 
               
               
                   
                 Green 
                 WGG 
                 255 
                 WGG c   
                 ΔWGG c  = WGG − WGG c   
                 ΔWGG c  = 0 
                 ΔWGG c  ≥ 0 
               
               
                   
                 Blue 
                 WGB 
                 0 
                 WGB c   
                 ΔWGB c  = WGB − WGB c   
                 ΔWGB c  = 0 
                 ΔWGB c  ≤ 0 
               
               
                 White 
                 Red 
                 WBR 
                 0 
                 WBR c   
                 ΔWBR c  = WBR − WBR c   
                 ΔWBR c  = 0 
                 ΔWBR c  ≤ 0 
               
               
                   
                 Green 
                 WBG 
                 0 
                 WBG c   
                 ΔWBG c  = WBG − WBG c   
                 ΔWBG c  = 0 
                 ΔWBG c  ≤ 0 
               
               
                   
                 Blue 
                 WBB 
                 255 
                 WBB c   
                 ΔWBB c  = WBB − WBB c   
                 ΔWBB c  = 0 
                 ΔWBB c  ≥ 0 
               
               
                   
               
            
           
         
       
     
     The difference values Δ may be stored in database  140  in association with the smartphone and/or camera model number or other distinguishing identifier. A user of any like smartphone may recover the Δ values as calibration data  166  through, for example, color correction application  164 . Color correction application  164  may apply color correction data  166  to obtain final values (as indicated by the subscript “f”) for each reflected light configuration according to Table 2 below. 
     
       
         
           
               
               
               
             
               
                 TABLE 2 
               
               
                   
               
               
                 Red Channel 
                 Green Channel 
                 Blue Channel 
               
               
                   
               
             
            
               
                 WRR f  = WRR c  + ΔWRR c   
                 WRG f  = WRG c  + ΔWRG c   
                 WRB f  = WRB c  + ΔWRB c   
               
               
                 WGR f  = WGR c  + ΔWGR c   
                 WGG f  = WGG c  + ΔWGG c   
                 WGB f  = WGB c  + ΔWGB c   
               
               
                 WBR f  = WBR c  + ΔWBR c   
                 WBG f  = WBG c  + ΔWBG c   
                 WBB f  = WBB c  + ΔWBB c   
               
               
                   
               
            
           
         
       
     
     By combining the effects of all three color reflectors, the final calibrated value for each channel may be given by WR f =(WRR c +ΔWRR c )+(WMR c +ΔWGR c )+(WBR c +ΔWBR c ) for the red channel, WR f =(WRR c +ΔWRR c )+(WMR c +ΔWGR c )+(WBR c +ΔWBR c ) for the green channel and W B f =(WRB c  ΔWRB c )+(WGB c +ΔWGB c )+(WBB c +ΔWBB c ) for the blue channel. The color calibration term may be added to/subtracted from the corresponding channel for any arbitrary image. After the operation, the maximum and minimum values may be restricted to 255 and 0, respectively. 
       FIG. 5  is a graphical depiction of another example chromatic calibration process  500  by which the present invention can be embodied. In process  500 , each of three reflectors, red reflector  115   r , green reflector  115   g  and blue reflector  115   b  are illuminated by respective light sources: red light source  112   r , green light source  112   g  and blue light source  112   b . With similarity to process  400 , the difference values Δ for process  500  may be determined according to Table 3 below by, for example, calibration data determining process  176 . In Table 3, designators with only two (2) letters in the notation refer collectively to all three channels being operated on the same. Additionally, the three letter notation on the reflected light for each channel, as was indicated in  FIG. 4 , has been omitted to avoid overly congesting the figure. 
     
       
         
           
               
               
               
               
               
               
               
               
             
               
                 TABLE 3 
               
               
                   
               
               
                 Source 
                 Reflector 
                   
                 Ideal 
                 Camera 
                   
                   
                   
               
               
                 LED 
                 Color 
                 Notation 
                 Value 
                 Value 
                 Difference, Δ 
                 Ideal Δ 
                 Empirical Δ 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
               
               
               
               
               
               
               
            
               
                 Red 
                 Red 
                 RRR 
                 255 
                 RRR c   
                 ΔRRR c  = RRR − RRR 
                 ΔRR c  = 0 
                 ΔRR c  ≥ 0 
               
               
                   
                   
                 RRG, RRB 
                 0 
               
               
                   
                 Green 
                 RGR, RGG, RGB (RG) 
                 0 
                 RG c   
                 ΔRG c  = RG − RG c   
                 ΔRG c  = 0 
                 ΔRG c  ≤ 0 
               
               
                   
                 Blue 
                 RBR, RBG, RBB (RB) 
                 0 
                 RB c   
                 ΔRB c  = RB − RB c   
                 ΔRB c  = 0 
                 ΔRB c  ≤ 0 
               
               
                 Green 
                 Red 
                 GRR, GRG, GRB (GR) 
                 0 
                 GR c   
                 ΔGR c  = GR − GR c   
                 ΔGR c  = 0 
                 ΔGR c  ≤ 0 
               
               
                   
                 Green 
                 GGG 
                 255 
                 GGG c   
                 ΔGGG c  = GGG − GGG 
                 ΔGG c  = 0 
                 ΔGG c  ≥ 0 
               
               
                   
                   
                 GGR, GGB 
                 0 
               
               
                   
                 Blue 
                 GBR, GBG, GBB (GB) 
                 0 
                 GB c   
                 ΔGB c  = GB − GB c   
                 ΔGB c  = 0 
                 ΔGB c  ≤ 0 
               
               
                 Blue 
                 Red 
                 BRR, BRG, BRB (BR) 
                 0 
                 BR c   
                 ΔBR c  = BR − BR c   
                 ΔBR c  = 0 
                 ΔBR c  ≤ 0 
               
               
                   
                 Green 
                 BGR, BGG, BGB (BG) 
                 0 
                 BG c   
                 ΔBG c  = BG − BG c   
                 ΔBG c  = 0 
                 ΔBG c  ≤ 0 
               
               
                   
                 Blue 
                 BBB 
                 255 
                 BBB c   
                 ΔBBB c  = BBB − BBB 
                 ΔBB c  = 0 
                 ΔBB c  ≥ 0 
               
               
                   
                   
                 BBR, BBG 
                 0 
               
               
                   
               
            
           
         
       
     
       FIG. 6  is a flow diagram of an exemplary chromatic calibration process  600  by which the present invention can be embodied. In operation  602 , an enclosure is constructed, such as by  3 D printing, according to the specifications of DUT  120 , e.g. the distance between the camera aperture and flash LED. In operation  605 , a reflector  115  of a first color is selected and attached to aperture  111  of enclosure  110 . In operation  610 , a light source  112  of a first color is selected, either by activating the camera flash or by selecting an LED on shelf  119  in enclosure  110 . In operation  615 , a test image is captured using the current reflector and light source colors and, in operation  620 , the response in each channel is determined, such as by evaluating the RGB pixel values in the captured test image. In operation  625 , it is determined whether all light sources have been evaluated and, if not, process  600  transitions to operation  610  and executes from that point. If all light sources have been evaluated, as determined in operation  625 , process  600  may transition to operation  630 , by which it is determined whether all reflector colors have been evaluated. If not, process  600  may transition to operation  605  and continue from that point. Otherwise, process  600  may transition to operation  635  by which the difference values are determined, such as by the techniques described above. In operation  640 , the difference values may be stored in database  140  in association with an identifier of the device under test and/or the camera embedded in the device under test. The difference values may subsequently be retrieved by a device having the same identifier(s), such as by color correction application  164 . 
     The storage areas and memory described herein may be implemented by any quantity of any type of conventional or other memory or storage device, and may be volatile (e.g., RAM, cache, flash, etc.), or non-volatile (e.g., ROM, hard-disk, optical storage, etc.), and include any suitable storage capacity. The storage areas may be, for example, one or more databases implemented on a solid state drive or in a RAM cloud. 
     Processor circuitry described herein is, for example, one or more data processing devices such as microprocessors, microcontrollers, systems on a chip (SOCs), or other fixed or programmable logic, that executes instructions for process logic stored in memory. The processors may themselves be multi-processors, and have multiple CPUs, multiple cores, multiple dies comprising multiple processors, etc. 
     Communicative coupling described herein may be, for example, via a networks, which represent any hardware and/or software configured to communicate information via any suitable communications media (e.g., WAN, LAN, Internet, Intranet, wired, wireless, etc.), and may include routers, hubs, switches, gateways, or any other suitable components in any suitable form or arrangement. The various components of the system may include any conventional or other communications devices to communicate over the networks via any conventional or other protocols, and may utilize any type of connection (e.g., wired, wireless, etc.) for access to the network. 
     System  100  includes a communications circuitry  127 ,  137 , and  195  (e.g., network controller), such as an Intel Ethernet PRO network interface card from Intel Corporation of America, for interfacing on communication links  152  and  156 . As can be appreciated, the network can be a public network, such as the Internet, or a private network such as an LAN or WAN network, or any combination thereof and can also include PSTN or ISDN sub-networks. The network can also be wired, such as an Ethernet network, or can be wireless such as a cellular network including EDGE, 3G and 4G wireless cellular systems. The wireless network can also be WiFi, Bluetooth, or any other wireless form of communication that is known. 
     System  100  may include additional servers, clients, and other devices not shown, and individual components of the system may occur either singly or in multiples, or for example, the functionality of various components may be combined into a single device or split among multiple devices. It is understood that any of the various components of system  100  may be local to one another, or may be remote from and in communication with one or more other components via any suitable means, for example a network such as a WAN, a LAN, Internet, Intranet, mobile wireless, etc. 
     Color correction application  164  provides an interface such as a graphical user interface (GUI) for a user of the client device (smartphone) to interact with a server. The application may be a database client, etc. 
     In addition to functionality described above, I/O interface  131  may enable communication between a display device, input device(s), and output device(s), and other components of computing device  130 , and may enable communication with these devices in any suitable fashion, e.g., via a wired or wireless connection. The display device may be any suitable display, screen or monitor capable of displaying information to a user of computing device  130 , for example the screen of a tablet or the monitor attached to a computer workstation. Input device(s) may include any suitable input device, for example, a keyboard, mouse, trackpad, touch input tablet, touch screen, camera, microphone, remote control, speech synthesizer, or the like. Output device(s) may include any suitable output device, for example, a speaker, headphone, sound output port, or the like. The display device, input device(s) and output device(s) may be separate devices, e.g., a monitor used in conjunction with a microphone and speakers, or may be combined, e.g., a touchscreen that is a display and an input device, or a headset that is both an input (e.g., via the microphone) and output (e.g., via the speakers) device. 
     As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
     Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable medium may be, for example, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a solid state disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, a phase change memory storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
     A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
     It is to be understood that the software used in embodiments of the present invention may be implemented in any desired computer language and could be developed by one of ordinary skill in the computer arts based on the functional descriptions contained herein. By way of example only, the software may be implemented in the C, C++, C #, Java, Python, Fortran or other programming languages. Further, any references herein of software performing various functions generally refer to computer systems or processors performing those functions under software control. 
     The computer systems of the present invention embodiments may alternatively be implemented by any type of hardware and/or other processing circuitry. The various functions of the computer systems may be distributed in any manner among any quantity of software modules or units, processing or computer systems and/or circuitry, where the computer or processing systems may be disposed locally or remotely of each other and communicate via any suitable communications medium (e.g., LAN, WAN, Intranet, Internet, hardwire, modem connection, wireless, etc.). 
     Aspects of the present invention are described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     A processing system suitable for storing and/or executing program code may be implemented by any conventional or other computer or processing systems preferably equipped with a display or monitor, a base (e.g., including the processor, memories and/or internal or external communications devices (e.g., modem, network cards, etc.) and optional input devices (e.g., a keyboard, mouse or other input device)). The system can include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters may also be coupled to the system to enable the system to become coupled to other processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters. 
     The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, method and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometime be executed in the reverse order, depending on the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
     The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more features, integers, steps, operations, elements, components, and/or groups thereof. 
     The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated. 
     The descriptions above are intended to illustrate possible implementations of the present inventive concept and are not restrictive. Many variations, modifications and alternatives will become apparent to the skilled artisan upon review of this disclosure. For example, components equivalent to those shown and described may be substituted therefore, elements and methods individually described may be combined, and elements described as discrete may be distributed across many components. The scope of the invention should therefore be determined not with reference to the description above, but with reference to the appended claims, along with their full range of equivalents.