Extraction of gamut polygons from color palettes and generation of color mix strings

By extracting color gamut polygons from the input color palette and generating a custom palette, the flexibility, accuracy and efficiency of existing systems in color generation and selection are solved, achieving a more accurate and efficient digital design Color combination.

CN119228924APending Publication Date: 2024-12-31ADOBE INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202410440982.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-06-29
Filing Date
2024-04-12
Publication Date
2024-12-31

AI Technical Summary

Technical Problem

The existing digital content creation system has flexibility, accuracy and efficiency problems in color generation and selection. Conventional systems rely on client devices to perform rigid color selection, resulting in inaccurate color combinations and time-consuming, and cannot adapt flexibly. The context of a specific digital design document.

Method used

By extracting gamut polygons from the input color palette, intelligently estimate color relationships, pre-calculate color mixing strings, generate custom palettes including primary, secondary, and neutral colors, and through the graphical user interface Provides color mixing strings to reduce user interaction and computing resources.

Benefits of technology

Improves the flexibility and efficiency of color palette generation, and the generated color combinations are more accurate and consistent, adapting to the context of specific digital design documents, reducing time and resource consumption.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119228924A_ABST
    Figure CN119228924A_ABST
Patent Text Reader

Abstract

Embodiments of the present disclosure relate to extracting color gamut polygons from a color palette and generating a color mix string. The present disclosure relates to systems, non-transitory computer-readable media, and methods for generating and utilizing gamut polygons to generate custom palettes. For example, the disclosed system may generate a gamut polygon from an input color palette including a set of colors, the gamut polygon including the set of colors within a color space. In addition, the disclosed system may utilize color gamut polygons to determine primary colors, secondary colors, and neutral colors. In addition, the disclosed system may generate a color mix string from primary colors, secondary colors, and neutral colors. The disclosed system may also provide a color mixing string for display via a user interface of a client device.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] In recent years, hardware and software platforms for digital content creation have improved significantly. For example, some software applications utilize various colors and generation tools to generate a variety of digital art documents and corresponding digital content elements. In many implementations, such software applications utilize client device input to select relevant colors for generating digital design elements. However, there are many problems and issues in the prior art methods for intelligent color generation and utilization in creating digital content, especially in achieving flexibility, accuracy, and efficiency of computing devices. Summary of the invention

[0002] Embodiments of the present disclosure provide benefits and / or solve one or more of the aforementioned or other problems in the art by means of systems, non-transitory computer-readable media, and methods for extracting gamut polygons from a color palette and generating color blending strings. In particular, given an input color palette, the disclosed system can automatically and intelligently estimate color interrelationships and pre-calculate a blending string set to help access the gamut defined by the input palette (e.g., without the need to use a client device color selection tool). By way of example, in one or more embodiments, the disclosed system receives an input color palette including a color set. In some embodiments, the disclosed system generates a gamut polygon in a color space based on the color set. Additionally, in one or more embodiments, the disclosed system utilizes the gamut polygon to intelligently determine primary colors, secondary colors, and neutral colors. Furthermore, in some embodiments, the disclosed system generates a color blending string from primary colors, secondary colors, and neutral colors, and provides the color blending string for display via a user interface for use in generating a digital design document.

[0003] Additional features and advantages of one or more embodiments of the present disclosure are summarized in the description which follows, and in part will be apparent from the description, or may be learned by practice of such example embodiments. BRIEF DESCRIPTION OF THE DRAWINGS

[0004] The detailed description provides one or more embodiments with additional specificity and detail through the use of the accompanying drawings, as briefly described below.

[0005] Figure 1 A diagram illustrating an environment in which a color palette generation system may operate in accordance with one or more embodiments.

[0006] Figure 2 An overview of generating and utilizing color gamut polygons to generate color blend strings for a custom color palette is presented in accordance with one or more embodiments.

[0007] Figure 3 A process for generating a gamut polygon based on an input color palette is shown in accordance with one or more embodiments.

[0008] Figure 4 A process for generating secondary and neutral colors using color gamut polygons is shown in accordance with one or more embodiments.

[0009] Figure 5 A process for generating a hybrid string in accordance with one or more embodiments is shown.

[0010] Figure 6 A schematic diagram of a color palette generation system is shown in accordance with one or more embodiments.

[0011] Figure 7 A flow diagram is shown of a series of actions for providing a color mixing string for display in accordance with one or more embodiments.

[0012] Figure 8 A block diagram of an example computing device for implementing one or more embodiments of the present disclosure is shown. DETAILED DESCRIPTION

[0013] The present disclosure describes one or more embodiments of a color palette generation system that generates a gamut polygon in a color space based on an input color palette and utilizes the gamut polygon to generate a custom color palette with primary colors, secondary colors, and neutral colors. The color palette generation system provides many advantages and benefits over conventional systems and methods. For example, a plurality of conventional systems are rigid and inflexible. For example, conventional systems utilize rigid digital color selection tools that require client devices to iteratively select each color to be used. In addition, some conventional systems utilize aesthetic criteria or accessibility criteria to select complementary colors for pre-generated color palettes. Although such systems can determine complementary colors, rigid criteria cannot provide flexibility for different inputs and applications.

[0014] In addition, many conventional systems are inefficient. More specifically, conventional systems require excessive user interaction to select colors, mix colors, arrange colors, and / or assign colors to color palettes. Some conventional systems require repeated navigation through predetermined color palettes to select or utilize various colors. As a result, conventional systems require excessive time, user interaction, user interfaces, and computing resources (e.g., storage devices and memory) when generating color palettes for use in digital design.

[0015] In addition, conventional systems are inaccurate in generating cohesive colors for use in digital design documents. For example, conventional systems that rely on client devices to select individual colors often result in conflicting or non-optimal color combinations. Furthermore, conventional systems that utilize predefined color palettes are unable to accurately align colors with specific contexts or features of a particular digital design document.

[0016] The color palette generation system provides improved flexibility in generating and providing custom color palettes. For example, by utilizing a gamut polygon to generate a custom color palette, the color palette generation system improves flexibility relative to conventional systems. Specifically, the color palette generation system utilizes the positions of colors from an input color palette in color space to determine the gamut polygon. Thus, the color palette generation system can generate additional colors from the input color palette that enhance and coordinate with the input color palette by utilizing the positions of the colors from the input color palette relative to each other in color space. This allows for improved flexibility by enabling selection of new coordinated colors for a custom color palette.

[0017] Additionally, the color palette generation system provides improved efficiency in generating and providing a custom palette. Illustrate, as mentioned above, the color palette generation system is based on an input color palette, utilizing a color gamut polygon to determine the primary colors, secondary colors, and neutral colors for a custom palette. In addition, the color palette generation system generates a mixed string with the chromaticity (shade) of each color in the custom palette. In addition, the color palette generation system arranges the mixed strings and provides them in a graphical user interface. Therefore, the color palette generation system can reduce or eliminate the excessive time, user interface, interaction, and computing resources required by conventional systems.

[0018] The color palette generation system can also improve the accuracy and feasibility of the resulting color string. For example, the color palette generation system can intelligently generate a mixed string that is accurately aligned with the input color set. Therefore, the color palette generation system can utilize the color gamut polygon to select primary colors, secondary colors, and neutral colors to generate a mixed string that is accurately and consistently aligned with the context of a specific digital design document or input color palette.

[0019] In one or more embodiments, the color palette generation system uses the positions of colors from the input color palette as vertices to generate a gamut polygon in the color space. Further, in some embodiments, the color palette generation system uses the gamut polygon to generate secondary colors and neutral colors. Additionally, in one or more embodiments, the color palette generation system generates color blend strings for colors in the custom palette and provides them to the user via a graphical user interface.

[0020] As just mentioned, in one or more embodiments, the color palette generation system generates a gamut polygon. By way of example, in one or more embodiments, the color palette generation system determines the coordinates in color space for each color in the color set in the input color palette. Additionally, in some embodiments, the color palette generation system generates a gamut polygon whose vertices are located at the coordinates of the positions of the colors from the color set in color space.

[0021] More specifically, in one or more embodiments, the color palette generation system generates a triangle with a maximum area that is constrained by having vertices located at coordinates of the positions of colors from the input color palette. Additionally, in some embodiments, the color palette generation system verifies that each color from the input color palette is included within a threshold distance of the gamut polygon. In some embodiments, in response to determining that one or more colors from the input color palette are not included within the threshold distance of the gamut polygon, the color palette generation system generates a quadrilateral gamut polygon with a maximum area that is constrained by having vertices located at coordinates of the positions of colors from the input color palette.

[0022] Additionally, in one or more embodiments, the color palette generation system generates secondary colors and neutral colors using the color gamut polygon. In some embodiments, the color palette generation system determines the primary colors as the colors at the vertices of the color gamut polygon. Additionally, in one or more embodiments, the color palette generation system generates secondary colors by determining the midpoint between each set of primary colors. Additionally, in some embodiments, the color palette generation system determines the neutral color as the centroid of the color gamut polygon. Additionally, or in the alternative, in some embodiments, the color palette generation system utilizes a physically based color mixing model to determine secondary colors and neutral colors based on the primary colors.

[0023] In one or more embodiments, after determining the secondary colors and neutral colors, the color palette generation system generates a custom palette based on the input color palette. More specifically, the color palette generation system generates a custom palette including each color in the color set from the input color palette, the secondary colors, and the neutral colors. In some embodiments, the color palette generation system generates an order or arrangement for the custom palette.

[0024] In addition, in some embodiments, the color palette generation system generates a color mixing string for a custom palette. For example, in one or more embodiments, the color palette generation system determines the palette white by identifying that the color in the input color palette is within a threshold distance of pure white. In some embodiments, if such a color is not found, the color palette generation system selects pure white as the palette white. In one or more embodiments, the color palette generation system generates a brighter chromaticity for each color in the custom palette by mixing the color with the palette white. In addition, in some embodiments, the color palette generation system generates a darker chromaticity for each color in the custom palette by reducing the darkness value of the color.

[0025] In addition, in one or more embodiments, the color palette generation system arranges the color mixing strings in rows from darkest to lightest. In some embodiments, the color palette generation system provides the color mixing strings together in a palette graphical user interface. In addition, in one or more embodiments, the color palette generation system can generate optional elements for each color and chromaticity in the color mixing string.

[0026] Additional details will now be provided regarding illustrative drawings depicting example embodiments and implementations of the role group system. For example, Figure 1 A computing system environment (or "environment") 100 is shown in which a color palette generation system 106 operates. Figure 1 As shown, system 100 includes server(s) 102 , client device 108 , and network 112 .

[0027] although Figure 1 Although the system 100 is depicted as having a particular number of components, the system 100 can have any number of additional or alternative components (e.g., any number of servers, client devices, or other components that communicate with the color palette generation system 106 via the network 112). Similarly, although Figure 1 A particular arrangement of server 102, network 112, and client device 108 is shown, but various additional arrangements are possible.

[0028] Server(s) 102, client device 108, and network 112 are communicatively coupled to each other, directly or indirectly (e.g., via network 112, as described below with respect to Figure 8 In addition, the server(s) 102 and the client device 108 include one or more of a variety of computing devices (including one or more computing devices, such as those described in connection with Figure 8 discussed in more detail).

[0029] As mentioned above, the system 100 includes server(s) 102. In one or more embodiments, the server(s) 102 generate, store, receive, and / or transmit data, including digital data related to user input, input color palettes, custom color palettes, primary colors, secondary colors, neutral colors, blending strings, etc. In one or more embodiments, the server(s) 102 include data servers. In some implementations, the server(s) 102 include communication servers or website hosting servers.

[0030] In one or more embodiments, the server(s) 102 include a content management system 104. In some embodiments, the content management system 104 manages the generation, modification, storage, and / or distribution of digital content to client devices (e.g., client devices 108). For example, in some cases, the content management system 104 manages digital content that utilizes custom color palettes and / or color gamut polygons. In some implementations, the content management system 104 provides the digital content for display via one or more digital platforms accessed via the client devices.

[0031] Additionally, in one or more embodiments, the client device 108 includes a computing device that accesses the digital platform and / or displays digital content. For example, the client device 108 includes a smart phone, a tablet computer, a desktop computer, a laptop computer, a head-mounted display device, or other electronic device. The client device 108 includes one or more applications (e.g., client applications 110) that access the digital platform and / or display digital content. For example, in one or more embodiments, the client application 110 includes a software application installed on the client device 108. Additionally, or alternatively, the client application 110 includes a web browser or other application that accesses a software application hosted on (multiple) servers 102 (and supported by the content management system 104).

[0032] The color palette generation system 106 can be implemented in whole or in part by various elements of the system 100. In practice, although Figure 1 The color palette generation system 106 is shown implemented with respect to the server 102 and optionally the client device 108, but the different components of the color palette generation system 106 can be implemented by a wide variety of devices within the system 100. For example, in some cases, one or more (or all) components of the color palette generation system 106 are implemented by a computing device (e.g., the client device 108) or a separate server from the server 102 hosting the content management system 104. In practice, as Figure 1 As shown, the client device 108 includes a color palette generation system 106. Figure 6 ) will describe example components of the color palette generation system 106.

[0033] As discussed above, the color palette generation system 106 can generate and utilize color gamut polygons to generate a custom palette from an input color palette. For example, Figure 2 An overview of the process for generating and providing a color mix string for a palette is shown. Figure 2 As shown, the color palette generation system 106 performs an action 202 of receiving an input color palette. For example, in one or more embodiments, the color palette generation system 106 receives a user's selection of a color palette. By way of example, in some embodiments, the color palette generation system 106 receives a user's selection of individual colors. Additionally, or in an alternative, in one or more embodiments, the color palette generation system 106 receives a user's selection of an existing color palette as the input color palette. For example, the color palette generation system 106 may identify colors that have already been used in a digital design document.

[0034] In addition, if Figure 2 As shown, the color palette generation system 106 can perform the action 204 of generating a gamut polygon. In one or more embodiments, the gamut polygon can be a shape in the color space based on the input color palette. In particular, the gamut polygon can include a line, a triangle, a quadrilateral, or another shape in the color space, and the vertices are located at the coordinates of the primary colors from the input color palette. For example, the gamut polygon can include a shape in the color space, wherein each color from the input color palette is mapped to its coordinates in the color space. In addition, the gamut polygon can include a shape in which each color in the color set from the input color palette is included within a threshold distance. In addition, or in an alternative, the gamut polygon can include a shape with a maximum area within the constraint of having a specific number of vertices at the coordinates of the colors from the input color palette. Relatedly, in one or more embodiments, the candidate gamut polygon can include a potential gamut polygon generated by the color palette generation system, regardless of whether the gamut polygon is selected for use.

[0035] More specifically, in one or more embodiments, the color palette generation system 106 generates a gamut polygon based on the colors in the input color palette. In one or more embodiments, the color palette generation system 106 generates the gamut polygon based on the area of ​​the gamut polygon. For example, the color palette generation system 106 can generate the gamut polygon to maximize the area of ​​the gamut polygon. Additionally, in some embodiments, the color palette generation system 106 generates the gamut polygon to ensure that each color from the input color palette is included within a threshold distance of the gamut polygon.

[0036] In one or more embodiments, an input color palette is a set of colors input into the system. In particular, the input color palette may include a set of colors submitted by a user for generating a custom color palette. By way of example, the input color palette may include a single user color selection, a user selection of a saved color set, or a color set indicated by another user.

[0037] In one or more embodiments, the color palette generation system 106 generates a color gamut polygon by mapping the colors from the input color palette to coordinates in the color space. Thus, the color palette generation system 106 can generate a color gamut polygon whose vertices are at the coordinates of the colors of the input color palette. Thus, the color gamut polygon reflects the color gamut contained within the input color palette.

[0038] In one or more embodiments, a color space is an organization of colors in a coordinate system. In particular, a color space may include a two-dimensional arrangement of colors. A color palette generation system may utilize a variety of different color models based on various attributes, such as hue, saturation, brightness, color value, lightness, chroma, additive color mixing or subtractive color mixing. By way of example, a color space may include an organization of a variety of different color models, including HSL (hue-saturation-brightness), HSV (hue-saturation-color value), RGB (red-green-blue), CMYK (cyan-magenta, yellow, black), high-fidelity six-color, YUV (brightness, blue projection, red projection), or other color arrangements.

[0039] In one or more embodiments, the color palette generation system 106 checks for valid gamut triangles, and if no valid gamut triangles are found, the color palette generation system 106 generates a gamut quadrilateral. By way of example, the color palette generation system 106 generates candidate gamut triangles and selects the candidate gamut triangle with the largest area. In addition, the color palette generation system 106 can verify that each color from the input color palette is included within a threshold distance of the gamut triangle.

[0040] After determining that each color from the input color palette is indeed included within the threshold distance of the color gamut triangle, the color palette generation system 106 can select the color gamut triangle as the color gamut polygon. However, after determining that at least one color from the input color palette is not included within the threshold distance of the color gamut triangle, the color palette generation system 106 can generate a candidate color gamut quadrilateral. In some embodiments, the color palette generation system 106 selects the color gamut quadrilateral with the largest area as the color gamut polygon.

[0041] In addition, if Figure 2As shown, the color palette generation system 106 can perform an action 206 of generating a palette based on a color gamut polygon. By way of example, in one or more embodiments, the color palette generation system 106 identifies the primary colors for a custom palette by selecting the colors at the vertices of the color gamut polygon. In one or more embodiments, the primary colors are colors selected for the palette that reflect the range of the palette. For example, the primary colors include a color set from which other colors in the palette can be obtained (by mixing). In some implementations, the color palette generation system selects the primary colors from the vertices of the color gamut polygon. By way of example, the primary colors can be relative to the palette, and therefore can include a variety of colors depending on the palette. The primary colors are not limited to red, yellow, or blue.

[0042] In addition, the color palette generation system 106 can generate secondary colors for a custom palette by identifying the midpoints along each edge of the color gamut polygon. In one or more embodiments, a secondary color is a color generated by mixing two primary colors. More specifically, a secondary color can include a color determined by finding the midpoint between the two primary colors in the color space. In addition, or in an alternative, a secondary color can be a color determined by mixing two primary colors using a physics-based color mixing model. For example, a secondary color can be relative to a palette, and therefore can include a variety of colors depending on the palette. Secondary colors are not limited to green, purple, and orange.

[0043] In addition, in one or more embodiments, the color palette generation system 106 generates neutral colors for custom palettes by determining the centroid of the color gamut polygon. In some embodiments, neutral colors refer to soft, complementary, non-competitive colors. For example, neutral colors include chromaticities that appear to have no color and are complementary to primary and secondary colors. Therefore, the color palette generation system can determine the neutral colors generated by mixing each primary color from the palette. In particular, the color palette generation system can determine the neutral color by finding the centroid of the color gamut polygon in the color space. In addition, or in an alternative, the neutral color can be a color determined by mixing each primary color for the color palette using a physics-based color mixing model. For example, neutral can be relative to the color palette, and therefore can include a variety of colors depending on the color palette. Neutral colors are not limited to beige, navy blue, black, or brown.

[0044] As just mentioned, in one or more embodiments, the color palette generation system 106 utilizes a physically based color mixing model to determine the secondary colors and neutral colors for a custom palette. More specifically, in some embodiments, the color palette generation system 106 utilizes a physically based color mixing model, which mimics the behavior of a pigment by simulating particles in a physical pigment. By way of example, in some embodiments, a physically based color mixing model simulates particles in primary colors, and simulates how light is reflected from those particles when mixed, so as to determine the color obtained by mixing. The color palette generation system can provide flexibility, to select between physically based color mixing models or geometrically based mixing models. For example, the color palette generation system can provide optional options to the user interface, to select between physically based color mixing models or geometrically based mixing models. In some implementations, the color palette generation system utilizes both physically based color mixing models and geometrically based mixing models to generate different colors. For example, a color palette generation system may utilize a physically based color mixing model for generating secondary colors (or other colors) and utilize a geometrically based mixing model for generating neutral colors (or other colors).

[0045] Likewise Figure 2 As shown, the color palette generation system 106 can perform and provide an action 208 of a color mixing string for the color palette. In one or more embodiments, the color palette generation system 106 generates a darker hue and a lighter hue for each color in the custom palette to generate the mixing string. Figure 2 As shown, the color palette generation system 106 generates three lighter shades and two darker shades for each color in the custom palette. However, it should be understood that the color palette generation system 106 can generate various numbers of shades to varying degrees.

[0046] In some embodiments, a color mixing string refers to a group of colors having different hue values. In particular, a color mixing string may include groupings of colors having different brightness but otherwise similar color attributes. For example, a color mixing string may include a color palette color, a lighter hue generated by mixing with palette white, and a darker hue generated by reducing the brightness value of the color palette color.

[0047] like Figure 2 As shown, in one or more embodiments, the color palette generation system 106 organizes the mixing strings. In addition, in some embodiments, the color palette generation system 106 provides the mixing strings for each color in the custom palette in the graphical user interface. Therefore, the color palette generation system 106 can automatically provide various chromaticities for the custom palette in an accurately organized manner.

[0048] As mentioned above, the color palette generation system 106 may generate a color gamut polygon. Figure 3 Additional details on the process of generating the gamut polygons are provided. Figure 3 As shown, the color palette generation system 106 can perform an action 302 of receiving a selection of an input color palette. In one or more embodiments, the color palette generation system 106 receives a user's selection of a color set of input colors. The color palette generation system 106 can utilize a variety of input color palettes of various sizes, ranges, and color gamuts.

[0049] As briefly mentioned above, the color palette generation system 106 can receive user selections of individual colors and / or existing input color palettes. More specifically, in one or more embodiments, the color palette generation system 106 receives user selections of individual colors within a color space. In another embodiment, the color palette generation system 106 can receive user selections of colors via color identification codes in a color system, such as RGB codes, CMYK codes, or HEX codes.

[0050] In addition, the color palette generation system 106 can determine an existing color palette from a digital document or image, from a variety of file types that include color data, or from a previously saved palette. In various embodiments, the color palette generation system 106 can receive an input color palette from a third-party system. In addition, or in an alternative, the color palette generation system 106 can receive a user's selection of an input color palette from a local storage device of the color palette generation system 106.

[0051] like Figure 3 As shown, in one or more embodiments, color palette generation system 106 will be mapped to the color space from each color of input color palette.Color palette generation system 106 can utilize various color models, including HSL, HSV, RGB, CMYK, high-fidelity six colors, YUV or another color model.Color palette generation system 106 determines the coordinates of each color in this color concentration in input color palette.In certain embodiments, color palette generation system 106 abandons one or more color attributes, so that color is mapped to the color space.For example, in certain embodiments, color palette generation system 106 abandons the brightness or color value of color.Therefore, color palette generation system 106 can utilize the coordinates of the color from the input color palette to generate the color gamut polygon for custom palette based on the input color color palette.

[0052] like Figure 3As shown, in one or more embodiments, the color palette generation system 106 performs an action 304 of identifying a candidate color gamut polygon. In some embodiments, the color palette generation system 106 determines a candidate color gamut triangle. In addition, in one or more embodiments, if there is no suitable candidate color gamut triangle, the color palette generation system 106 generates a candidate color gamut quadrilateral.

[0053] In addition, if Figure 3 As shown, in one or more embodiments, the color palette generation system 106 performs an action 312 of selecting a color gamut polygon. Figure 3 As shown, in one or more embodiments, act 312 includes act 316 of determining the input color palette colors within the candidate color gamut polygon. In some embodiments, the color palette generation system 106 determines the candidate color gamut triangle by determining each combination of three colors from the input color palette. The color palette generation system 106 selects the color gamut polygon by evaluating each candidate color gamut triangle.

[0054] By way of example, in one or more embodiments, the color palette generation system 106 checks, for each candidate color gamut triangle, whether each color from the input color palette is included within a threshold distance of the candidate color gamut triangle (e.g., if the candidate color gamut triangle is extended by a threshold value to include all input colors, or if the input color falls within the threshold distance of the candidate color gamut triangle). In some embodiments, the color palette generation system 106 excludes any candidate color gamut triangle having at least one color from the input color palette that is not included within the threshold distance of the color palette generation system 106. In one or more embodiments, the threshold distance is a default distance. Additionally, in some embodiments, the color palette generation system 106 may receive the threshold distance from a user and / or administrator.

[0055] If the color palette generation system 106 determines that more than one candidate gamut triangle includes every color from the input color palette within a threshold distance of the candidate gamut triangles, the color palette generation system 106 may select the candidate gamut triangle as the gamut polygon based on area (e.g., the candidate gamut triangle with the largest area). However, if the color palette generation system 106 determines that none of the candidate gamut triangles includes every color from the input color palette within a threshold distance of the candidate gamut triangles, the color palette generation system 106 may proceed to generate candidate gamut quadrilaterals.

[0056] In order to generate the candidate color gamut quadrilateral, the color palette generation system 106 determines all combinations of four colors from the input color palette. In addition, in some embodiments, the color palette generation system 106 determines all possible arrangements for each combination. More specifically, in one or more embodiments, action 312 includes an action 314 that determines the size of the candidate color gamut polygon. For example, candidate color gamut quadrilateral 308 and candidate color gamut quadrilateral 310 have the same vertices. However, the color palette generation system 106 can select the candidate color gamut quadrilateral with the largest area. Therefore, the color palette generation system 106 selects candidate color gamut quadrilateral 308 as the color gamut polygon.

[0057] In one or more embodiments, the color palette generation system 106 does not check the candidate color gamut quadrilateral for input color palette colors to be included within the threshold distance. However, in some embodiments, the color palette generation system 106 continues to the candidate color gamut pentagon upon determining that the candidate color gamut quadrilateral does not include every color from the input color palette within the threshold distance of the candidate color gamut quadrilateral. In practice, the color palette generation system 106 may implement thresholds for checking input color palette colors to be within the threshold distance for various sides of the polygon (and may stop at various polygon sides).

[0058] For example, in one or more implementations, the color palette generation system 106 implements the following computer-implemented algorithm in generating the color gamut polygon:

[0059] 1. Find all combinations of 3 colors for the input palette

[0060] 2. For each combination, determine which colors are within the triangle color gamut.

[0061] 3. For each out-of-gamut color, find its distance to the outer edge of the gamut.

[0062] 4. If the distance is less than the threshold, the color is marked as being in gamut.

[0063] 5. If there are no out-of-gamut colors after step 4, add the current combination to the candidate list.

[0064] If after step 4 there are still out-of-gamut colors, search for quadrilaterals:

[0065] 1. Find all combinations of 4 colors for the input color palette.

[0066] 2. For each combination, calculate all possible permutations.

[0067] 3. For each arrangement, calculate the area contained within the quadrilateral.

[0068] 4. Choose the arrangement with the largest area.

[0069] After generating the color gamut polygon, in one or more embodiments, the color palette generation system 106 utilizes the color gamut polygon to generate a custom palette based on the input color palette. More specifically, in some embodiments, the color palette generation system 106 determines the primary colors, secondary colors, and one or more neutral colors for the custom palette based on the input color palette. Figure 4 Additional details are provided of a process for generating these secondary and neutral colors according to one or more embodiments.

[0070] In some implementations, the color palette generation system 106 specifies the colors at the vertices of the gamut polygon as the primary colors for the custom palette. As mentioned above, the primary colors can include the colors at the vertices of the gamut polygon and need not be red, blue, or yellow. In one or more embodiments, the color palette generation system 106 determines secondary colors and neutral colors using the gamut polygon and / or the primary colors.

[0071] like Figure 4 As shown, in one or more embodiments, the color palette generation system 106 performs an action 402 of generating secondary colors using the color gamut polygon. By way of example, in one or more embodiments, the color palette generation system 106 converts the coordinates of the positions of the primary colors in the color space into Cartesian coordinates. For example, in HSV, the color palette generation system 106 simplifies the interpolation of polar hue and saturation values. Additionally, or in an alternative, the color palette generation system 106 can utilize a color space that already utilizes Cartesian coordinates, such as HSL.

[0072] In addition, to determine the secondary colors for the custom color palette, the color palette generation system 106 uses the determined Cartesian coordinates to determine the midpoints of each side of the color gamut polygon. Figure 4 As shown, the color palette generation system 106 determines the secondary colors 404a to 404d by determining the midpoint of each side of the color gamut polygon. After generating the secondary colors 404a to 404d, the color palette generation system 106 includes these colors in the custom palette.

[0073] like Figure 4 As shown, in one or more embodiments, the color palette generation system 106 performs an action 406 of generating secondary colors using a physically based color mixing model. For example, the color palette generation system 106 can mix the primary colors from each edge of the color gamut polygon in the physically based color mixing model to determine the secondary colors. Figure 4As shown, the color palette generation system 106 determines the secondary colors 408a-408d using a physically based color mixing model. Because the color palette generation system 106 determines the secondary colors 408a-408d using a physically based color mixing model, the secondary colors 408a-408d may not fall exactly at the midpoints of the sides of the color gamut polygon.

[0074] In some embodiments, the color palette generation system 106 can prepare custom color palettes to simulate mixing in a particular medium. For example, the color palette generation system 106 can utilize a variety of color mixing models that simulate mixing for various media such as watercolor, oil, ink, acrylic paint, chalk, pencil, or another art medium. In some embodiments, the color palette generation system 106 can utilize a media type based on a user selection.

[0075] In one or more embodiments, the color palette generation system 106 utilizes a physically based mixing model that utilizes alpha compositing and / or pigment modeling. By way of example, in some embodiments, the color palette generation system 106 utilizes a physically based color mixing model that models various types of pigments by simulating particles within physical pigments. More specifically, the color palette generation system 106 can utilize the selected medium type to model the reflection of light from particles within the pigment of the medium. By way of example, in some embodiments, a physically based color mixing model simulates particles in the primary colors and simulates how light is reflected from those particles when mixed so as to determine the resulting color from the mixture. Therefore, the color palette generation system 106 can utilize a physically based mixing model to mix the primary colors from each edge of the color gamut polygon to determine the secondary colors and / or to mix all the primary colors to determine the neutral colors. The color palette generation system 106 can therefore utilize a physically based mixing model to mix different materials (e.g., watercolor, ink, acrylic material) and physically model the resulting colors. Thus, the color palette generation system 106 can generate a color palette that takes into account and accurately reflects the interactions between different materials and color combinations. The color palette generation system 106 can utilize a variety of physically based color mixing models, such as ADOBE FRESCO or MIXCORS.

[0076] In addition, if Figure 4 As shown, in some embodiments, the color palette generation system 106 performs an action 410 of generating a neutral color using the color gamut polygon. In some embodiments, the color palette generation system 106 determines the centroid of the color gamut polygon. For example, Figure 4As shown, the color palette generation system 106 determines the neutral color 412 by determining the centroid of the color gamut polygon. Additionally, or in the alternative, in one or more embodiments, the color palette generation system 106 determines the neutral color by mixing the primary colors of the color gamut polygon together in a physically based color mixing model. As mentioned above, the color palette generation system 106 can utilize a color mixing model that simulates color mixing in a particular medium.

[0077] In one or more embodiments, color palette generation system 106 generates and provides mixing strings for colors in a palette. Figure 5 An example process for generating and providing a color blend string for a custom color palette in a graphical user interface is shown. More specifically, the color palette generation system 106 can generate a blend string for each color in the palette. By way of example, the color palette generation system 106 can generate a color blend string for each color palette color. In one or more embodiments, the color palette colors include colors (including primary colors), secondary colors, and neutral colors from an input color palette.

[0078] like Figure 5 As shown, in one or more embodiments, the color palette generation system 106 performs an action 502 of determining a palette white for the color palette. In some embodiments, the color palette generation system 106 selects the palette white by checking the custom palette for colors within a threshold distance of pure white. Upon determining that the custom palette has a color within a threshold distance of pure white, the color palette generation system 106 can designate the color as the palette white.

[0079] Based on determining that the custom palette does not have a color within a threshold distance of pure white, the color palette generation system 106 can specify pure white as the palette white. Additionally, or in an alternative, the color palette generation system 106 can determine the palette white for the custom palette. In one or more embodiments, the color palette generation system 106 determines the palette white using one or more attributes of the colors from the custom palette. For example, the color palette generation system 106 can determine the average hue of the palette and generate the palette white by generating a warmer white or a cooler white based on the average hue of the custom palette.

[0080] After determining the palette white, in one or more embodiments, the color palette generation system 106 performs an action 504 of mixing the palette white with the color palette colors. In one or more embodiments, the color palette generation system 106 generates lighter shades for the mixed string of colors by mixing different proportions of the color and the palette white. For example, Figure 5In FIG. 5 , the color palette generation system 106 generates a lighter shade 508 for each color in the color palette colors 506. Figure 5 As shown, the color palette generation system 106 generates three lighter shades 508 for each of the palette colors 506. However, it should be understood that the color palette generation system 106 may generate various numbers of lighter shades having various ratios of palette white to color palette colors.

[0081] In addition, in one or more embodiments, the color palette generation system 106 performs an action 510 of reducing the brightness of the color palette colors. For example, the color palette generation system 106 generates darker hues by reducing the brightness of the color palette colors to varying degrees. Figure 5 As shown, the color palette generation system 106 generates a darker hue 512 by reducing the brightness of the color palette color 506. Figure 5 , the color palette generation system 106 generates darker shades 512 for each of the color palette colors 506. However, it should be understood that the color palette generation system 106 may generate various numbers of darker shades having various degrees of reduced brightness.

[0082] In one or more embodiments, when generating the lighter shades and darker shades for each color palette color, the color palette generation system 106 performs an act 514 of providing the mixed string in the graphical user interface. Figure 5 As shown, the color palette generation system 106 provides a color mixing string with a vertical line, wherein each row of chromaticity and palette colors are aligned. However, the color palette generation system 106 can generate a variety of arrangements for mixing strings. For example, the color palette generation system 106 can horizontally direct the color mixing string. In another example, the color palette generation system 106 can generate a graphical user interface to provide a color mixing string corresponding to the color palette color in response to the user's selection of the graphical user interface element corresponding to the color palette color.

[0083] Go to Figure 6, additional details about exemplary components 602 to 610 of color palette generation system 106 will be provided. Each of components 602 to 610 of color palette generation system 106 may include software, hardware, or both. For example, components 602 to 610 may include one or more instructions stored on a computer-readable storage medium and executable by a processor of one or more computing devices (such as, a client device or a server device). When executed by one or more processors, the computer-executable instructions of color palette generation system 106 may cause the computing device to perform the method described herein. Alternatively, components 602 to 610 may include hardware, such as a dedicated processing device for performing a function or a group of functions. Alternatively, components 602 to 610 of color palette generation system 106 may include a combination of computer-executable instructions and hardware.

[0084] like Figure 6 As shown, the content management system 104 and the color palette generation system 106 can be implemented via a computing device 600 (e.g., a server 102 and / or a client device 108). In one or more embodiments, the color palette generation system 106 includes a gamut polygon generator 602. In some embodiments, the gamut polygon generator 602 determines a candidate gamut polygon. In addition, the gamut polygon generator 602 can evaluate the candidate gamut triangle by selecting the gamut triangle with the largest area and verifying that each color palette color falls within a threshold distance of the gamut triangle. If the gamut polygon generator 602 determines that at least one color palette color does not fall within a threshold distance of the gamut polygon, the gamut polygon generator 602 can generate a candidate gamut quadrilateral. In addition, in one or more embodiments, the gamut polygon generator 602 selects the candidate gamut quadrilateral with the largest area.

[0085] In addition, if Figure 6 As shown, in one or more embodiments, the color palette generation system 106 includes a palette color engine 604. In one or more embodiments, the palette color engine 604 generates secondary colors and neutral colors for the color palette. In one or more embodiments, the palette color engine 604 determines the secondary colors by determining the midpoint between the primary colors of the palette. Furthermore, in some embodiments, the palette color engine 604 determines the neutral colors by determining the centroid of the color gamut polygon. Additionally, or in an alternative, the palette color engine 604 can determine the secondary colors and / or neutral colors using a physically based color mixing model.

[0086] In addition, if Figure 6As shown, in some embodiments, the color palette generation system 106 includes a mixing string generator 606. By way of example, in one or more embodiments, the mixing string generator 606 determines the palette white. In addition, in some embodiments, the mixing string generator 606 mixes different proportions of the palette white to generate a brighter chroma for each color in the color palette color. In addition, in one or more embodiments, the mixing string generator 606 reduces the brightness of each color palette color to different degrees to generate a darker chroma.

[0087] like Figure 6 As shown, in one or more embodiments, the color palette generation system 106 includes a palette renderer 608. In some embodiments, the palette renderer 608 determines the organization of the color palette colors and / or the mixing strings. In addition, in one or more embodiments, the palette renderer 608 generates a graphical user interface including the color palette and / or the mixing strings for presentation on a client device.

[0088] In some embodiments, the color palette generation system 106 also includes a data storage manager 610. The data storage manager 610 maintains data for the color palette generation system 106. The data storage manager 612 maintains (e.g., via one or more memory devices) any type, size, or kind of data as needed to perform the functions of the color palette generation system 106. For example, the data storage facility 924 includes an organization of input color palettes, color gamut polygons, primary colors, secondary colors, neutral colors, color palette colors, palette whites, blend strings, and blend strings and / or color palette colors.

[0089] In addition, the components 602 to 610 of the color palette generation system 106 can be implemented as one or more operating systems, one or more independent applications, one or more modules of an application, one or more plug-ins, one or more library functions or functions that can be called by other applications, and / or a cloud computing model. Therefore, the components 602 to 610 can be implemented as independent applications, such as desktop applications or mobile applications. In addition, the components 602 to 610 can be implemented as one or more network-based applications hosted on a remote server. The components 602 to 610 can also be implemented as a set of mobile device applications or "applications (app)".

[0090] For example, components 602 to 610 may be implemented in applications including but not limited to ADOBE FRESCO, ADOBE PHOTOSHOP, ADOBE PHOTOSHOP EXPRESS, ADOBE PHOTOSSHOP LIGHTROOM, ADOBE ILLUSTRATOR, ADOBE ANIMATE, and ADOBE AFTER EFFECTS. The aforementioned applications are registered trademarks or trademarks of Adobe Inc. in the United States and / or other countries.

[0091] Figures 1 to 6 , corresponding text, and examples provide many different methods, systems, devices, and non-transitory computer-readable media for color palette generation system 106. In addition to the foregoing, one or more embodiments may also be described in terms of flowcharts including actions for achieving specific results, such as Figure 7 shown. Figure 7 Can be performed with more or less actions.In addition, these actions can be performed in different orders.In addition, the actions described herein can be repeated or performed in parallel with each other, or performed in parallel with different examples of the same or similar actions.

[0092] As mentioned, Figure 7 1 is a flow chart showing a series of actions 700 for generating and determining a custom color palette using a color gamut polygon according to one or more embodiments. Figure 7 Actions according to one embodiment are shown, but alternative embodiments may omit, add, reorder, and / or modify Figure 7 Any of the actions shown. Figure 7 The actions of may be performed as part of a method. Alternatively, a non-transitory computer readable medium may include instructions that, when executed by one or more processors, cause a computing device to perform Figure 7 In some embodiments, the system may perform Figure 7 action.

[0093] like Figure 7 As shown, the series of actions 700 includes an action 702 for generating a gamut polygon including a color set from an input color palette including a color set. In particular, action 702 may include generating a gamut polygon from an input color palette including a color set, the gamut polygon including the color set in a color space. Specifically, action 702 may include receiving a user's selection of an input color palette including a color set.

[0094] Furthermore, in one or more embodiments, action 702 includes determining that each color in the color set is included within a threshold distance in the color space by the color gamut polygon. Additionally, in some embodiments, action 702 includes converting the color set from the input color palette to coordinates in the color space, and generating candidate triangular color gamut polygons for different combinations of three vertices from the coordinates of the color set. Additionally, action 702 may include converting the color set from the input color palette to coordinates in the color space, and generating multiple candidate color gamut polygons by sampling vertices from the coordinates of the color set in the color space.

[0095] Action 702 may also include determining that at least one color in the color set is not within a threshold distance of a candidate triangular gamut polygon, and in response to determining that at least one color is not within the threshold distance of the candidate triangular gamut polygon, generating candidate quadrilateral gamut polygons for different combinations of four vertices from the coordinates. In addition, action 702 may include selecting a gamut polygon by selecting a candidate quadrilateral gamut polygon with a maximum area. Action 702 may also include determining a candidate gamut polygon with a maximum area for which each color in the color set is included by the candidate gamut polygon within a threshold distance in the color space.

[0096] In addition, if Figure 7 As shown, the series of actions 700 includes an action 704 for determining colors for the color palette using the gamut polygon. In particular, action 704 may include determining primary colors, secondary colors, and neutral colors using the gamut polygon. Specifically, action 704 may include: generating a gamut polygon in a color space from an input color palette by extracting a color subset from the color set of the input color palette; identifying a plurality of candidate gamut polygons for the color subset; and selecting a gamut polygon based on the size of the plurality of candidate gamut polygons in the color space and the number of the color set included in the plurality of candidate gamut polygons.

[0097] In one or more embodiments, act 704 also includes converting the primary colors to positions in a color space, and determining the secondary colors by determining one or more midpoints between the positions of the primary colors. Additionally, act 704 may include converting the primary colors to coordinates in a color space, and generating neutral colors by determining the centroid of the coordinates of the primary colors. Additionally, act 704 may include determining the secondary or neutral colors from the primary colors of the color gamut polygon using a physically based color mixing model.

[0098] Additionally, in one or more embodiments, action 704 includes generating a color palette including primary colors, secondary colors, and neutral colors using the gamut polygon. Additionally, in one or more embodiments, action 704 includes determining primary colors from vertices of the gamut polygon, determining secondary colors from edges of the gamut polygon, and generating neutral colors from the center of the gamut polygon. Similarly, action 704 may include determining primary colors by selecting primary colors from vertices of the gamut polygon, determining secondary colors by selecting secondary colors from edges of the gamut polygon, and determining neutral colors by selecting neutral colors from the interior of the gamut polygon.

[0099] In addition, if Figure 7 As shown, the series of actions 700 includes an action 706 for generating a color mixing string for a color palette. In particular, action 706 may include generating a color mixing string from primary colors, secondary colors, and neutral colors. Specifically, action 706 may include generating a color mixing string using a color gamut polygon.

[0100] In addition, in one or more embodiments, action 706 includes generating a palette white by searching for primary colors, secondary colors, and neutral colors from colors within a threshold distance from pure white. Action 706 may also include generating a color mixing string for a color palette having palette colors including primary colors, secondary colors, and neutral colors by mixing the palette white with the palette colors to produce lighter hues, and reducing the brightness of the palette colors to produce darker hues.

[0101] Moreover, if Figure 7 As shown, the series of actions 700 includes an action 708 for providing a color mixing string for display. In particular, action 708 may include providing the color mixing string for display via a user interface of a client device. Specifically, action 708 may include generating a digital design document including a color element based on the user's interaction with the color mixing string.

[0102] Thus, in one or more implementations, the series of actions 700 includes generating a gamut polygon from an input color palette including a color set, the gamut polygon including the color set within a color space; determining a plurality of primary colors, one or more secondary colors, and a neutral color using the gamut polygon; generating a color mixing string from the plurality of primary colors, one or more secondary colors, and the neutral color; and providing the color mixing string for display via a user interface of a client device.

[0103] Embodiments of the present disclosure may include or utilize a special purpose computer or a general purpose computer including computer hardware (e.g., one or more processors and system memory), as discussed in more detail below. Embodiments within the scope of the present disclosure also include physical media and other computer-readable media for carrying or storing computer-executable instructions and / or data structures. In particular, one or more of the processes described herein may be implemented at least in part as instructions embodied in a non-transitory computer-readable medium and executable by one or more computing devices (e.g., any of the media content access devices described herein). Typically, a processor (e.g., a microprocessor) receives instructions from a non-transitory computer-readable medium (e.g., a memory) and executes the instructions to perform one or more processes, including one or more of the processes described herein.

[0104] Computer-readable media can be any available media that can be accessed by a general-purpose computer system or a special-purpose computer system. A computer-readable medium that stores computer-executable instructions is a non-transitory computer-readable storage medium (device). A computer-readable medium that carries computer-executable instructions is a transmission medium. Therefore, by way of example and not limitation, embodiments of the present disclosure may include at least two distinct types of computer-readable media: a non-transitory computer-readable storage medium (device) and a transmission medium.

[0105] Non-transitory computer-readable storage media (devices) include RAM, ROM, EEPROM, CD-ROM, solid-state drives (“SSD”) (e.g., RAM-based), flash memory, phase change memory (“PCM”), other types of memory, other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, or any other media that can be used to store the desired program code means in the form of computer-executable instructions or data structures and can be accessed by a general purpose or special purpose computer.

[0106] "Network" is defined as one or more data links that enable electronic data to be transmitted between computer systems and / or modules and / or other electronic devices. When information is transferred or provided to a computer via a network or another communication connection (hardwired, wireless, or a combination of hardwired or wireless), the computer appropriately regards the connection as a transmission medium. The transmission medium may include a network and / or a data link, which may be used to carry desired program code means in the form of computer executable instructions or data structures and may be accessed by a general-purpose computer or a special-purpose computer. The combination of the above items is also included in the scope of computer-readable media.

[0107] Furthermore, where various computer system components are involved, program code means in the form of computer executable instructions or data structures may be automatically transferred from a transmission medium to a non-transitory computer readable storage medium (device) (or vice versa). For example, computer executable instructions or data structures received over a network or data link may be buffered in RAM within a network interface module (e.g., "NIC") and then ultimately transferred to computer system RAM and / or to a less volatile computer storage medium (device) at the computer system. Thus, it should be understood that a non-transitory computer readable storage medium (device) may be included in a computer system component that also (or even primarily) utilizes a transmission medium.

[0108] Computer executable instructions include, for example, instructions and data, which, when executed by a processor, cause a general-purpose computer, a special-purpose computer, or a special-purpose processing device to perform a certain function or a group of functions. In some embodiments, computer executable instructions are executed by a general-purpose computer to turn a general-purpose computer into a special-purpose computer that implements an element of the present disclosure. Computer executable instructions can be, for example, binary, intermediate format instructions, such as assembly language, or even source code. Although the subject matter has been described in a language specific to structural features and / or method actions, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or the actions described above. On the contrary, the described features and actions are disclosed as example forms for implementing the claims.

[0109] Those skilled in the art will appreciate that the present disclosure can be practiced in a network computing environment with many types of computer system configurations, including personal computers, desktop computers, laptop computers, message processors, handheld devices, multiprocessor systems, microprocessor-based electronic products or programmable consumer electronic products, network PCs, minicomputers, mainframe computers, mobile phones, PDAs, tablet computers, pagers, routers, switches, etc. The present disclosure can also be practiced in a distributed system environment, where local computer systems and remote computer systems linked by a network (by a hardwired data link, a wireless data link, or by a combination of a hardwired data link and a wireless data link) all perform tasks. In a distributed system environment, program modules can be located in local memory storage devices and remote memory storage devices.

[0110] Embodiments of the present disclosure may also be implemented in a cloud computing environment. As used herein, the term "cloud computing" refers to a model for implementing on-demand network access to a shared pool of configurable computing resources. For example, cloud computing may be employed in a market to provide ubiquitous and convenient on-demand access to a shared pool of configurable computing resources. A shared pool of configurable computing resources may be rapidly provisioned via virtualization, released with low management effort or service provider interaction, and then scaled accordingly.

[0111] The cloud computing model can consist of various characteristics, such as on-demand self-service, broad network access, resource pooling, rapid elasticity, measured services, etc. The cloud computing model can also expose various service models, such as software as a service ("SaaS"), platform as a service ("PaaS"), and infrastructure as a service ("IaaS"). The cloud computing model can also be deployed using different deployment models, such as private cloud, community cloud, public cloud, hybrid cloud, etc. In addition, as used herein, the term "cloud computing environment" refers to an environment that employs cloud computing.

[0112] Figure 8 A block diagram of an example computing device 800 is shown, which can be configured to perform one or more of the above-described processes. It should be understood that one or more computing devices such as computing device 800 can represent the above-described computing devices (e.g., computing device 600, server 102, and client device 108). In one or more embodiments, computing device 800 can be a mobile device (e.g., a mobile phone, a smart phone, a PDA, a tablet computer, a laptop computer, a camera, a tracker, a watch, a wearable device, etc.). In some embodiments, computing device 800 can be a non-mobile device (e.g., a desktop computer or another type of client device). In addition, computing device 800 can be a server device that includes cloud-based processing and storage capabilities.

[0113] like Figure 8 As shown, computing device 800 may include one or more processors 802, memory 804, storage device 806, input / output interface 808 (or "I / O interface 808"), and communication interface 810, which may be communicatively coupled by way of a communication infrastructure (e.g., bus 812). Figure 8 The computing device 800 is shown in FIG. Figure 8 The components shown are not intended to be limiting. Additional or alternative components may be used in other embodiments. Furthermore, in some embodiments, the computing device 800 includes more than Figure 8 The components shown are fewer than those shown. Figure 8 Components of computing device 800 are shown.

[0114] In certain embodiments, processor(s) 802 include hardware for executing instructions, such as those that make up a computer program. By way of example and not limitation, to execute instructions, processor(s) 802 may retrieve (or fetch) instructions from internal registers, internal cache, memory 804, or storage device 806, and decode and execute them.

[0115] The computing device 800 includes a memory 804 coupled to the processor(s) 802. The memory 804 may be used to store data, metadata, and programs for execution by the processors. The memory 804 may include one or more memories of volatile memory and non-volatile memory, such as random access memory ("RAM"), read-only memory ("ROM"), solid state disk ("SSD"), flash memory, phase change memory ("PCM"), or other types of data storage devices. The memory 804 may be an internal memory or a distributed memory.

[0116] The computing device 800 includes a storage device 806, including a storage device for storing data or instructions. As an example and not limitation, the storage device 806 may include the non-transitory storage medium described above. The storage device 806 may include a hard disk drive (HDD), a flash memory, a universal serial bus (USB) drive, or a combination of these or other storage devices.

[0117] As shown, computing device 800 includes one or more I / O interfaces 808, which are provided to allow a user to provide input (such as user strokes) to computing device 800, receive output from the computing device, and otherwise transfer data to and from the computing device. These I / O interfaces 808 may include a mouse, a keypad or keyboard, a touch screen, a camera, an optical scanner, a network interface, a modem, other known I / O devices, or a combination of such I / O interfaces 808. The touch screen may be activated with a stylus or a finger.

[0118] The I / O interface 808 may include one or more devices for presenting output to a user, including, but not limited to, a graphics engine, a display (e.g., a display screen), one or more output drivers (e.g., a display driver), one or more audio speakers, and one or more audio drivers. In some embodiments, the I / O interface 808 is configured to provide graphical data to the display for presentation to the user. The graphical data may represent one or more graphical user interfaces and / or any other graphical content that may serve a particular implementation.

[0119] The computing device 800 may also include a communication interface 810. The communication interface 810 may include hardware, software, or both. The communication interface 810 provides one or more interfaces for communication (e.g., data packet-based communication) between the computing device and one or more other computing devices or one or more networks. As an example and not limitation, the communication interface 810 may include a network interface controller (NIC) or a network adapter for communicating with an Ethernet or other wired network, or a wireless NIC (WNIC) or a wireless adapter for communicating with a wireless network (such as WI-FI). The computing device 800 may also include a bus 812. The bus 812 may include hardware, software, or both that connect the components of the computing device 800 to each other.

[0120] In the foregoing description, the present invention has been described with reference to specific example embodiments of the present invention. Various embodiments and aspects of the present invention are described with reference to the details discussed herein, and the accompanying drawings illustrate various embodiments. The above description and the accompanying drawings are illustrative of the present invention and should not be construed as limiting the present invention. Many specific details are described to provide a comprehensive understanding of the various embodiments of the present invention.

[0121] The present invention may be embodied in other specific forms without departing from the spirit or essential features of the present invention. The described embodiments are considered to be illustrative and non-restrictive in all respects. For example, the method described herein may be performed with fewer or more steps / actions, or these steps / actions may be performed in different orders. In addition, the steps / actions described herein may be repeated or performed in parallel with each other, or repeated and performed in parallel with different instances of the same or similar steps / actions. Therefore, the scope of the present invention is indicated by the appended claims rather than by the foregoing description. All changes within the meaning and equivalent scope of the claims should be included within the scope of the claims.

Claims

1. A method comprising: generating a gamut polygon from an input color palette including a set of colors, the gamut polygon including the set of colors in a color space; using the color gamut polygon to determine a plurality of primary colors, one or more secondary colors, and a neutral color; generating a color mixing string from the plurality of primary colors, the one or more secondary colors, and the neutral color; and The color mix string is provided for display via a user interface of a client device.

2. The method according to claim 1, wherein generating the color gamut polygon further comprises: It is determined that each color in the color set is included by the gamut polygon within a threshold distance in the color space.

3. The method according to claim 1, further comprising: converting the plurality of primary colors to positions in the color space; as well as The one or more secondary colors are determined by determining one or more midpoints between the positions of the plurality of primary colors.

4. The method according to claim 1, further comprising: Converting the plurality of primary colors into coordinates in the color space; as well as The neutral color is generated by determining a centroid of the coordinates for the plurality of primary colors.

5. The method according to claim 1, further comprising: The one or more secondary colors or the neutral color are determined from the plurality of primary colors of the color gamut polygon using a physically based color mixing model.

6. The method according to claim 1, further comprising: A palette white is generated by searching the plurality of primary colors, the one or more secondary colors, and the neutral color for colors within a threshold distance from pure white.

7. The method according to claim 6, further comprising: Generating the color mix string for a color palette having palette colors, the palette colors including the plurality of primary colors, the one or more secondary colors, and the neutral color by: mixing the palette white with the palette color to produce a lighter shade; as well as Reduces the brightness of the palette colors to produce darker shades.

8. A system comprising: Memory components; as well as One or more processing devices, coupled to the memory component, the one or more processing devices configured to perform operations, the operations comprising: receiving a user selection of an input color palette comprising a set of colors; Generate a color gamut polygon in color space from the input color palette by: extracting a subset of colors from the set of colors of the input color palette; identifying a plurality of candidate color gamut polygons for the color subset; and selecting the gamut polygon based on sizes of the plurality of candidate gamut polygons within the color space and the number of the color sets included by the plurality of candidate gamut polygons; and The color gamut polygon is used to generate a color mixing string.

9. The system of claim 8, wherein the operations further comprise generating the color gamut polygon by: converting the set of colors from the input color palette to coordinates in the color space; and The plurality of candidate color gamut polygons are generated by sampling vertices from the coordinates of the color set in the color space.

10. The system of claim 9, wherein the operations further comprise: The gamut polygon is generated by determining a candidate gamut polygon having a maximum area for which each color in the color set is included by the candidate gamut polygon within a threshold distance in the color space.

11. The system of claim 8, wherein the operations further comprise: The color gamut polygon is used to generate a color palette including primary colors, secondary colors, and neutral colors.

12. The system of claim 11, wherein the operations further comprise: determining the primary colors from the vertices of the color gamut polygon; Determining the secondary color from the edges of the color gamut polygon; as well as The neutral color is generated from the center of the color gamut polygon.

13. The system of claim 11, wherein the operations further comprise generating the color blend string of palette colors for the color palette by: generating a palette white for the color palette by searching the color palette for colors within a threshold distance from pure white; mixing the palette white with the palette color to produce a lighter shade; and Reduces the brightness of the palette colors to produce darker shades.

14. A non-transitory computer readable medium comprising instructions which, when executed by a processing device, cause the processing device to perform operations comprising: generating a gamut polygon from an input color palette including a set of colors, the gamut polygon including the set of colors in a color space; Determining primary colors, secondary colors, and neutral colors using the color gamut polygon; generating a color mixture string from the primary colors, the secondary colors, and the neutral colors; and The color mix string is provided for display via a user interface of a client device.

15. The non-transitory computer readable medium of claim 14, wherein the operations further comprise: The color gamut polygon is used to generate a color palette in the following manner: determining the primary colors by selecting the primary colors from vertices of the color gamut polygon; determining the secondary color by selecting the secondary color from an edge of the color gamut polygon; as well as The neutral color is determined by selecting the neutral color from within the color gamut polygon.

16. The non-transitory computer readable medium of claim 15, wherein the operations further comprise: converting the set of colors from the input color palette to coordinates in the color space; as well as Candidate triangular color gamut polygons for different combinations of three vertices are generated from the coordinates of the color set.

17. The non-transitory computer readable medium of claim 16, wherein the operations further comprise: determining that at least one color from the color set is not within a threshold distance of the candidate triangle color gamut polygon; as well as In response to determining that the at least one color is not within the threshold distance of the candidate triangular color gamut polygon, candidate quadrilateral color gamut polygons for different combinations of four vertices are generated from the coordinates.

18. The non-transitory computer readable medium of claim 17, wherein the operations further comprise: The color gamut polygon is selected by selecting the candidate quadrilateral color gamut polygon having the largest area.

19. The non-transitory computer readable medium of claim 15, wherein the operations further comprise: The secondary colors and the neutral colors are determined by combining the primary colors using a physically based color mixing model.

20. The non-transitory computer readable medium of claim 14, wherein the operations further comprise: A digital design document including color elements is generated based on user interaction with the color mixing string.