Patent Description:
<CIT> discloses a colour picker for cosmetics implemented using a graphical user interface.

In some embodiments, a computer-implemented method of presenting a palette-specific color picker interface is provided. A computing device receives initialization information. The computing device retrieves palette information based on the initialization information. The computing device generates a color picker interface that includes one or more wedges based on the palette information. The computing device presents the color picker interface. The computing device receives one or more selections within the one or more wedges of the color picker interface. The computing device determines a hue based on the one or more selections within the one or more wedges of the color picker interface.

In some embodiments, a computing device is provided. The computing device is configured to receive initialization information; retrieve palette information based on the initialization information; generate a color picker interface that includes one or more wedges based on the palette information; present the color picker interface; receive one or more selections within the one or more wedges of the color picker interface; and determine a hue based on the one or more selections within the one or more wedges of the color picker interface.

In some embodiments, a system is provided. The system comprises a color picker generation engine and a user interface engine. The color picker generation engine includes computational circuitry configured to receive initialization information; retrieve palette information based on the initialization information; and generate a color picker interface that includes one or more wedges based on the palette information. The user interface engine includes computational circuitry configured to present the color picker interface; receive one or more selections within the one or more wedges of the color picker interface; and determine a hue based on the one or more selections within the one or more wedges of the color picker interface.

Many solutions exist for allowing a user to select a custom color. Such interfaces, often called "color wheel" or "color picker" interfaces, usually allow a user to select colors from across a color spectrum. While such solutions may be useful for graphic design or other situations in which any color in a color spectrum is available, it is less useful in situations where a limited number of colors are available. In such situations, unconstrained choices in a color spectrum may result in a color being chosen that is not available. That said, users enjoy the flexibility of being able to configure colors to closely match their desires, even if they have to operate within some constraints.

One particular situation in which the desire of consumers to select highly specific colors despite a limited number of color options is in the area of cosmetics. Typically, a cosmetic producer will create a product line that has a limited number of shades. Even if a product is provided that allows a user to generate a custom color (e.g., by mixing custom amounts of various monochrome colorants), the selections of colorant amounts may be limited in order to retain a palette associated with a brand identity, or to compensate for limitations of a compounding device. Improved color picker interfaces are desired that can provide a customizable selection of a color while still working within constraints related to what colors are possible to be created.

<FIG> is a schematic diagram that illustrates a non-limiting example embodiment of a system for generating and using an improved color wheel interface according to various aspects of the present disclosure. In the illustrated embodiment, a palette data store <NUM> stores information regarding available colors. For example, the palette data store <NUM> may store a first set of available colors that are related to a first palette, and a second set of available colors that are related to a second palette. The available colors may be stored as composed colors, or may be stored as available units of colorants that can be combined with each other to create custom colors within a given palette.

The information regarding available colors is transmitted to a color picker computing device <NUM>. The transmission may be via any suitable communication technology, including but not limited to wired technologies that include but are not limited to Ethernet, USB, and FireWire; and wireless technologies that include but are not limited to Wi-Fi, Wi-MAX, <NUM>, <NUM>, <NUM>, <NUM>, LTE, Bluetooth, and near-field communication (NFC). The transmission may traverse portions of the Internet.

The color picker computing device <NUM> uses the information regarding available colors to generate and present a color picker interface. The color picker interface allows a user to customize a color, but restricts the user to select colors that are available as indicated by the information regarding available colors. Once a color is chosen using the color picker interface, the chosen color may be used to recommend one or more products <NUM> based on the chosen color, to generate a virtual try-on image that shows a product associated with the chosen color rendered on an image of the user, or for any other purpose.

<FIG> is a block diagram that illustrates a non-limiting example embodiment of a color picker computing device according to various aspects of the present disclosure. In some embodiments, the color picker computing device <NUM> may be a mobile computing device such as a smartphone or tablet computing device, a desktop computing device, a laptop computing device, or any other type of computing device that can be configured to include the components described as part of the color picker computing device <NUM>.

As shown, the color picker computing device <NUM> includes a display device <NUM>, a user interface engine <NUM>, and a color picker generation engine <NUM>.

In some embodiments, the display device <NUM> is an LED display, an OLED display, or another type of display for presenting a user interface. In some embodiments, the display device <NUM> may be combined with or include a touch-sensitive layer, such that a user may interact with a user interface presented on the display device <NUM> by touching the display. In some embodiments, a separate user interface device, including but not limited to a mouse, a keyboard, or a stylus, may be used to interact with a user interface presented on the display device <NUM>. In some embodiments, the user interface engine <NUM> is configured to present a user interface on the display device <NUM>, including forms for collecting information from the user, and also including color picker interfaces generated by the color picker generation engine <NUM>. In some embodiments, the color picker generation engine <NUM> is configured to generate color picker interfaces based on information retrieved from the palette data store <NUM> and/or information collected by the user interface engine <NUM>, and is configured to provide the color picker interfaces to the user interface engine <NUM> for presentation. Further details regarding these components are provided below.

In general, the word "engine," as used herein, refers to logic embodied in hardware or software instructions, which can be written in a programming language, such as C, C++, COBOL, JAVA™, PHP, Perl, HTML, CSS, JavaScript, VBScript, ASPX, Microsoft. NET™, and/or the like. An engine may be compiled into executable programs or written in interpreted programming languages. Software engines may be callable from other engines or from themselves. Generally, the engines described herein refer to logical modules that can be merged with other engines, or can be divided into sub-engines. The engines can be stored in any type of computer-readable medium or computer storage device and be stored on and executed by one or more general purpose computers, thus creating a special purpose computer configured to provide the engine or the functionality thereof.

In some embodiments, the color picker computing device <NUM> includes the palette data store <NUM>. As discussed above, the palette data store <NUM> may include information regarding available colors associated with one or more palettes. In some embodiments, the palette data store <NUM> may be provided by the color picker computing device <NUM> as illustrated. In some embodiments, the palette data store <NUM> may be provided by a separate computing device or by multiple separate computing devices, and may be accessed by the color picker computing device <NUM> via a network.

As understood by one of ordinary skill in the art, a "data store" as described herein may be any suitable device configured to store data for access by a computing device. One example of a data store is a highly reliable, high-speed relational database management system (DBMS) executing on one or more computing devices and accessible over a high-speed network. Another example of a data store is a key-value store. However, any other suitable storage technique and/or device capable of quickly and reliably providing the stored data in response to queries may be used, and the computing device may be accessible locally instead of over a network, or may be provided as a cloud-based service. A data store may also include data stored in an organized manner on a computer-readable storage medium, as described further below. One of ordinary skill in the art will recognize that separate data stores described herein may be combined into a single data store, and/or a single data store described herein may be separated into multiple data stores, without departing from the scope of the present disclosure.

In <FIG>, the color picker computing device <NUM> is illustrated as a single computing device. In some embodiments, the functionality of the color picker computing device <NUM> may be split between multiple computing devices instead of being present in a single computing device as illustrated. For example, as mentioned above, in some embodiments the palette data store <NUM> may be provided by one or more other computing devices instead of by the color picker computing device <NUM>. As another example, the display device <NUM> may be located on a first computing device, while the user interface engine <NUM> and color picker generation engine <NUM> may be located on a second computing device. In other embodiments, the display device <NUM>, user interface engine <NUM>, color picker generation engine <NUM> and palette data store <NUM> may be provided by some other combination of computing devices. If the functionality of the color picker computing device <NUM> is provided by more than one computing device, then the computing devices that collectively provide the functionality of the color picker computing device <NUM> may communicate with each other using any suitable wired or wireless communication technology.

<FIG> is a flowchart that illustrates a non-limiting example embodiment of a method of generating and using an improved color picker interface according to various aspects of the present disclosure. In the method <NUM>, the color picker computing device <NUM> creates a color picker interface based on initialization information and palette information retrieved from the palette data store. The color picker interface is then used by the user to select a color, and the selected color is provided for processing.

At block <NUM>, a user interface engine <NUM> of a color picker computing device <NUM> receives initialization information. The initialization information may be any suitable information that can help identify either a starting color to be used to pick a palette from the palette data store <NUM>, or to directly pick a palette from the palette data store <NUM>. Some non-limiting examples of initialization information include an indication of a skin tone, an indication of a skin undertone, an indication of a product from a palette, a social media post that includes or mentions a product from a palette, and an identification of a palette itself. An indication of a product or a palette may include a brand name of the product or palette, a color name of a product, a bar code of the product or palette, or any other type of identifier of the product or palette.

At block <NUM>, a color picker generation engine <NUM> of the color picker computing device <NUM> retrieves palette information from a palette data store <NUM> based on the initialization information. If the initialization information includes an identification of the palette itself, the color picker generation engine <NUM> may simply query the palette data store <NUM> for the requested palette. If the initialization information indicates a product, the color picker generation engine <NUM> may use the palette data store <NUM> to determine a palette that includes the product or is associated with the product, and to thereafter retrieve palette information for the determined palette. If the initialization information indicates a skin tone, a skin undertone, or other color information, the color picker generation engine <NUM> may determine a palette that complements the indicated skin tone, skin undertone, or other color information based on information in the palette data store <NUM>, and may thereafter retrieve palette information for the determined palette.

In some embodiments, the palette information may include information that indicates available options for color combinations that are associated with a given palette. For example, for style purposes, a given palette may be biased toward red and yellow shades as opposed to blue or green shades. As such, the palette may limit the amount of blue or green colorant ingredients that may be added to a combined product, and may allow as much red or yellow colorant ingredients as desired. As another example, a given product formulation may have a limited number of colorant ingredient selections. That is, while one palette may include colorants for white, red, yellow, black, and blue, another palette may include more colorants (such as orange or green) or fewer colorants.

At block <NUM>, the color picker generation engine <NUM> creates a color picker interface including one or more wedges based on the palette information. In some embodiments, a wedge may be included in the color picker interface for each colorant that is included in the palette that may be adjusted by the user. In some embodiments, a size of the wedge may be determined based on an amount of adjustability for the colorant associated with the wedge.

<FIG> illustrates a non-limiting example embodiment of a color picker computing device presenting a color picker interface according to various aspects of the present disclosure. As shown, the color picker interface <NUM> includes a plurality of wedges, including a first wedge <NUM> associated with a first colorant, a second wedge <NUM> associated with a second colorant, and a third wedge <NUM> associated with a third colorant. Each of the wedges of the plurality of wedges is associated with a different colorant of the given palette. In some embodiments, each wedge may be filled with a color of the associated colorant.

Each wedge <NUM>, <NUM>, <NUM> includes one or more segments, and the number of segments present in the wedge indicates the adjustability of that colorant in the palette. For example, the first wedge <NUM> and the third wedge <NUM> include four segments that extend radially from the center of the color picker interface <NUM> to the edge of the color picker interface <NUM>. Accordingly, the first wedge <NUM> and the third wedge <NUM> provide maximum adjustability for the first colorant and the third colorant, respectively. The second wedge <NUM> includes a single segment, indicating that while the second colorant may be either included or excluded from the selected color, it is not adjustable further.

Returning to <FIG>, at block <NUM>, the color picker computing device <NUM> presents the color picker interface on a display device <NUM> of the color picker computing device <NUM>. In some embodiments, the color picker interface may include the wedges discussed above, along with other interface elements to facilitate use of the color picker interface. As shown in <FIG>, the color picker computing device <NUM> is presenting the color picker interface <NUM>, and also a chosen color display <NUM>, a plurality of starting colors <NUM>, <NUM>, <NUM>, two sliders <NUM>, <NUM>, and a confirmation interface element <NUM>. In some embodiments, the chosen color display <NUM> may be configured to present the combined color that is created based on the selections within the wedges. In some embodiments, the plurality of starting colors <NUM>, <NUM>, <NUM> may, upon receiving an interaction from the user, cause the color picker interface <NUM> to be configured to generate the associated starting color. That is, the appropriate wedge segments may be selected that would result in the starting color being generated, and the chosen color display <NUM> may change to the starting color. In some embodiments, the sliders <NUM>, <NUM> may be used to configure aspects of the product other than a shade generated by the color picker interface <NUM>, as discussed in further detail below. In some embodiments, the confirmation interface element <NUM> may confirm the selection of the color as currently configured within the color picker interface <NUM>. In some embodiments, more or fewer interface elements may be presented by the color picker computing device <NUM> along with the color picker interface <NUM>.

Returning again to <FIG>, at block <NUM>, the user interface engine <NUM> receives one or more selections within the one or more wedges. In the embodiment illustrated in <FIG>, solid wedge segments indicate wedge segments that have been selected by the user, and dashed-line wedge segments indicate wedge segments that can be selected by the user but have not been. In other words, the first wedge <NUM> indicates that the user has selected a maximum amount of the first colorant by virtue of the fact that all of the wedge segments are in solid line, and the third wedge <NUM> indicates that the user has selected half of the available amount of the third colorant by virtue of the fact that two of the wedge segments are in solid line and two of the wedge segments are in dotted line. In some embodiments, the wedge segments of different wedges may be of different sizes, thereby indicating higher or lower levels of granularity for selection of the different colorants. To select a different amount of a colorant, the user may tap on a wedge segment within the color picker interface <NUM>.

Returning to <FIG>, at block <NUM>, the user interface engine <NUM> determines a hue based on the one or more selections within the one or more wedges. As discussed above, the hue may be determined based on the amounts of colorants indicated by the selections of wedge segments of the color picker interface <NUM>.

At optional block <NUM>, the user interface engine <NUM> receives a selection of a saturation and/or a value. In some embodiments, the wedges of the color picker interface <NUM> may only relate to hue, and the saturation (intensity of the hue based on the removal or addition of black, white, or grey) and value (lightness or darkness of the hue based on the removal or addition of black or white) of the resulting color may be determined based on the sliders <NUM>, <NUM> (<FIG>), or by using any other suitable interface elements for providing a saturation and value. Block <NUM> is illustrated as optional because, in some embodiments, saturation and/or value may be represented within the wedges of the color picker interface <NUM>, and separate selections of saturation and/or value may not be collected.

At block <NUM>, the color picker computing device <NUM> provides the hue, saturation, and value for processing. In some embodiments, the processing may include determining an existing cosmetic product of the chosen color, and providing the product for purchase or testing. In some embodiments, the processing may include compounding a custom cosmetic product of the chosen color. In some embodiments, the processing may include generating an augmented reality presentation of an image or video of the user wearing a cosmetic product of the chosen color. In some embodiments, the processing may include any other use for which the chosen color may be useful.

The method <NUM> described above relates to using the color picker interface to select a color in the HSV color space. In some embodiments, a similar interface may be used to select a color in any other color space, such as any of the HSL, RGB, CMYK, YUV, YPbPr, TSL, or CIELAB color spaces. Further, a similar interface (or additional interface controls such as sliders) may be provided to specify other characteristics of a product, such as a level of gloss or an SPF value.

<FIG> is a block diagram that illustrates aspects of an exemplary computing device <NUM> appropriate for use as a computing device of the present disclosure. While multiple different types of computing devices were discussed above, the exemplary computing device <NUM> describes various elements that are common to many different types of computing devices. While <FIG> is described with reference to a computing device that is implemented as a device on a network, the description below is applicable to servers, personal computers, mobile phones, smart phones, tablet computers, embedded computing devices, and other devices that may be used to implement portions of embodiments of the present disclosure. Moreover, those of ordinary skill in the art and others will recognize that the computing device <NUM> may be any one of any number of currently available or yet to be developed devices.

In its most basic configuration, the computing device <NUM> includes at least one processor <NUM> and a system memory <NUM> connected by a communication bus <NUM>. Depending on the exact configuration and type of device, the system memory <NUM> may be volatile or nonvolatile memory, such as read only memory ("ROM"), random access memory ("RAM"), EEPROM, flash memory, or similar memory technology. Those of ordinary skill in the art and others will recognize that system memory <NUM> typically stores data and/or program modules that are immediately accessible to and/or currently being operated on by the processor <NUM>. In this regard, the processor <NUM> may serve as a computational center of the computing device <NUM> by supporting the execution of instructions.

As further illustrated in <FIG>, the computing device <NUM> may include a network interface <NUM> comprising one or more components for communicating with other devices over a network. Embodiments of the present disclosure may access basic services that utilize the network interface <NUM> to perform communications using common network protocols. The network interface <NUM> may also include a wireless network interface configured to communicate via one or more wireless communication protocols, such as WiFi, <NUM>, <NUM>, LTE, WiMAX, Bluetooth, Bluetooth low energy, and/or the like. As will be appreciated by one of ordinary skill in the art, the network interface <NUM> illustrated in <FIG> may represent one or more wireless interfaces or physical communication interfaces described and illustrated above with respect to particular components of the system <NUM>.

In the exemplary embodiment depicted in <FIG>, the computing device <NUM> also includes a storage medium <NUM>. However, services may be accessed using a computing device that does not include means for persisting data to a local storage medium. Therefore, the storage medium <NUM> depicted in <FIG> is represented with a dashed line to indicate that the storage medium <NUM> is optional. In any event, the storage medium <NUM> may be volatile or nonvolatile, removable or nonremovable, implemented using any technology capable of storing information such as, but not limited to, a hard drive, solid state drive, CD ROM, DVD, or other disk storage, magnetic cassettes, magnetic tape, magnetic disk storage, and/or the like.

As used herein, the term "computer-readable medium" includes volatile and non-volatile and removable and non-removable media implemented in any method or technology capable of storing information, such as computer readable instructions, data structures, program modules, or other data. In this regard, the system memory <NUM> and storage medium <NUM> depicted in <FIG> are merely examples of computer-readable media.

Suitable implementations of computing devices that include a processor <NUM>, system memory <NUM>, communication bus <NUM>, storage medium <NUM>, and network interface <NUM> are known and commercially available. For ease of illustration and because it is not important for an understanding of the claimed subject matter, <FIG> does not show some of the typical components of many computing devices. In this regard, the computing device <NUM> may include input devices, such as a keyboard, keypad, mouse, microphone, touch input device, touch screen, tablet, and/or the like. Such input devices may be coupled to the computing device <NUM> by wired or wireless connections including RF, infrared, serial, parallel, Bluetooth, Bluetooth low energy, USB, or other suitable connections protocols using wireless or physical connections. Similarly, the computing device <NUM> may also include output devices such as a display, speakers, printer, etc. Since these devices are well known in the art, they are not illustrated or described further herein.

Claim 1:
A computer-implemented method (<NUM>) of presenting a palette-specific color picker interface, the method comprising:
receiving, by a computing device, initialization information;
retrieving, by the computing device, palette information based on the initialization information;
generating, by the computing device, a color picker interface (<NUM>) that includes a plurality of wedges based on the palette information;
presenting, by the computing device, the color picker interface;
receiving, by the computing device, one or more selections of segments within the one or more wedges of the color picker interface (<NUM>); and
determining, by the computing device, a hue,
wherein:
the palette information includes indications of a plurality of colorants associated with a palette and adjustability of each colorant within the palette,
each wedge (<NUM>, <NUM>, <NUM>) is associated with a colorant of the plurality of colorants, and wherein each wedge (<NUM>, <NUM>, <NUM>) includes a number of segments based on the adjustability of the associated colorant within the palette,
the one or more selections of segments within the one or more wedges of the color picker interface (<NUM>) indicate amounts of the associated colorants,
the hue is based on the indicated amounts of the associated colorants.