There are many instances where there is a need to show a collection of colors in an aesthetic and cohesive manner. For example, pre-selected digital color palettes for design inspiration need to be displayed in an aesthetically pleasing manner to allow for easier intuitive selection of colors in the color palette. Even in non-digital instances, such as boxes of paints, pencils or crayons, the pre-selected colors need to be displayed in an aesthetic manner for similar reasons. Failing to present pre-selected colors in an aesthetically pleasing manner results in suboptimal presentation by reducing the perceived quality of the pre-selected color palette, the inspirational power of a color palette, and the overall aesthetics of a graphical user interface displaying the color palette for various purposes.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Various aspects of the technology described herein are generally directed to systems, methods, and computer storage media for, among other things, color sorting using self-organizing maps. In this regard, embodiments described herein facilitate sorting of colors in an aesthetically pleasing way through the use of self-organizing maps. For example, in order to sort colors in an aesthetically pleasing way, the colors are first mapped to a 3-D color space, such as the CIELAB color space, also known as the L*a*b* color space as established by the International Commission on Illumination (“CIE”). In this regard, a self-organizing map (“SOM”) algorithm is used to organize a distribution of points/cells on the 3-D color space in an optimal path based on the mapped colors. Each color is then associated with a closest, different one of the organized points of the optimal path. The colors are then sorted and displayed according to its associated point along the optimal path. The sorted colors can be displayed alone, with colors from the points on the optimal path, or with any linear interpolation between the sorted color and the color of its associated point on the optimal path.
The patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawing(s) will be provided by the Office upon request and payment of the necessary fee.
The technology described herein is described with specificity to meet statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, the inventors have contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies. Moreover, although the terms “step” and “block” may be used herein to connote different elements of methods employed, the terms should not be interpreted as implying any particular order among or between various steps herein disclosed unless and except when the order of individual steps is explicitly described.
There are many instances where there is a need to show a collection of colors in an aesthetic and cohesive manner. For example, pre-selected digital color palettes for design inspiration need to be displayed in an aesthetically pleasing manner to allow for easier intuitive selection of colors in the color palette. Even in non-digital instances, such as boxes of paints, pencils or crayons, the pre-selected colors need to be displayed in an aesthetic manner for similar reasons. However, ordering colors in an aesthetically pleasing manner is a challenging problem as the manual ordering of pre-selected colors requires a person to make multiple guesses based on their subjective impression as to what order of colors appears to be the most aesthetically pleasing. Failing to present pre-selected colors in an aesthetically pleasing manner results in suboptimal presentation by reducing the perceived quality of the pre-selected color palette, the inspirational power of a color palette, and the overall aesthetics of a graphical user interface displaying the color palette for various purposes.
With respect to conventional methods for color sorting, pre-selected colors must be manually sorted. For example, a user can manually order each color individually. As another example, a user can algorithmically sort colors based on a single variable of those colors, such as hue, luminosity, etc. and manually review the algorithmically sorted colors. Oftentimes, algorithmically sorting colors based on a single variable does not result in aesthetically pleasing orders of colors. Thus, in each of these examples, the user must manually review whether the order of the colors appear visually appealing based on the user's subjective impression. The user must then manually try different orders of colors, whether by manual ordering each color individually or using different variables to sort the colors algorithmically, until the user is subjectively satisfied with the order of the colors. Manually sorting and reviewing of colors is time-consuming and resource intensive and, oftentimes, inaccurate as the result is based on a person's subjective impression.
Accordingly, unnecessary computing and network resources are utilized to manually sort and/or review colors in conventional implementations. For example, computer input/output operations are unnecessarily increased each time a user manually sorts and/or reviews colors as each time a user sorts colors, the colors must be presented to the user, and the user must then review the information to manually determine whether the colors are aesthetically pleasing. The repetition of such a process until a user determines that the colors are aesthetically pleasing is computationally expensive, increases latency, and computer storage requirements. For example, the repetitive manual sorting and/or reviewing of colors increases computer latency because the read/write head must manually access the disk to access the data regarding the colors for each of the multiple sorting iterations. Further, when the data regarding the colors are stored over a network, the processing of the multiple color sorting iterations decreases the throughput for a network, increases the network latency, and increases packet generation costs as each color sorting iteration ties up network resources to access the data regarding the colors for presentation for each color sorting iteration.
As such, embodiments of the present disclosure are directed to color sorting in an efficient and effective manner. In this regard, aesthetically pleasing color orderings can be efficiently and effectively identified from arbitrary, pre-selected collections of color, thereby producing appealing and intuitive results for a variety of color collections. Generally, and at a high level, embodiments described herein facilitate sorting of colors in an aesthetically pleasing way through the use of self-organizing maps. In order to sort colors in an aesthetically pleasing way, the colors are first mapped to a 3-D color space, such as CIELAB. A self-organizing map algorithm organizes a distribution of points/cells/nodes (the terms points, cells, and nodes of the distribution of points/cells/nodes are used interchangeably) on the 3-D color space in an optimal path based on the mapped colors. Each color is then associated with a closest, different one of the organized points of the optimal path. The colors are then sorted and displayed according to its associated point on the optimal path. The sorted colors can be displayed alone, with colors from the points on the optimal path, or with any linear interpolation between the sorted color and the color of its associated point on the optimal path.
Advantageously, efficiencies of computing and network resources can be enhanced using implementations described herein. In particular, the sorting of colors in an aesthetically pleasing way through the use of SOMs provides for a more efficient use of computing resources (e.g., less computationally expensive, less input/output operations, higher throughput and reduced latency for a network, less packet generation costs, etc.) than conventional methods of manual sorting and/or reviewing of colors. In this regard, the technology described herein enables a user to be able to efficiently and effectively sort colors without the need to perform multiple color sorting iterations and subsequent manual, subjective review of the presentation of the colors, thereby reducing unnecessary computing resources used to process the multiple color sorting iterations. The technology described herein conserves network resources as the technology results in less accesses of data regarding the color over a computer network when the data is stored over a network, which results in higher throughput, reduced latency and less packet generation costs as fewer packets are sent over the network.
Turning to
It should be understood that operating environment 100 shown in
These components can communicate with each other via network 104, which can be wired, wireless, or both. Network 104 can include multiple networks, or a network of networks, but is shown in simple form so as not to obscure aspects of the present disclosure. By way of example, network 104 can include one or more wide area networks (WANs), one or more local area networks (LANs), one or more public networks such as the Internet, one or more private networks, one or more cellular networks, one or more peer-to-peer (P2P) networks, one or more mobile networks, or a combination of networks. Where network 104 includes a wireless telecommunications network, components such as a base station, a communications tower, or even access points (as well as other components) can provide wireless connectivity. Networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. Accordingly, network 104 is not described in significant detail.
It should be understood that any number of user devices, servers, and other components can be employed within operating environment 100 within the scope of the present disclosure. Each can comprise a single device or multiple devices cooperating in a distributed environment.
User device 102 can be any type of computing device capable of being operated by an individual(s) (e.g., a designer, artist, marketer, developer, or any user that desires to generate and/or select colors to initiate color sorting and/or presenting sorted colors). For example, in some implementations, such devices are the type of computing device described in relation to
The user device can include one or more processors, and one or more computer-readable media. The computer-readable media may include computer-readable instructions executable by the one or more processors. The instructions may be embodied by one or more applications, such as application 110 shown in
Application 110 operating on user device 102 can generally be any application capable of generating and/or selecting colors to initiate color sorting and/or capable of presenting sorted colors for presentation. In some implementations, the application(s) comprises a web application, which can run in a web browser, and could be hosted at least partially server-side (e.g., via color sorting engine 108). In addition, or instead, the application(s) can comprise a dedicated application. In some cases, the application is integrated into the operating system (e.g., as a service). As specific example applications, application 110 may be a color palette development website or application, a photo editor website or application, a digital drawing website or application, a digital graphics editor website or application, or any website or application that is capable of creating, using and/or displaying color palettes. Generally, application 110 may be any application that presents color palettes to a user. Such an application may be accessed via a mobile application, a web application, or the like.
User device 102 can be a client device on a client-side of operating environment 100, while color sorting engine 108 can be on a server-side of operating environment 100. Color sorting engine 108 may comprise server-side software designed to work in conjunction with client-side software on user device 102 so as to implement any combination of the features and functionalities discussed in the present disclosure. An example of such client-side software is application 110 on user device 102. This division of operating environment 100 is provided to illustrate one example of a suitable environment, and it is noted there is no requirement for each implementation that any combination of user device 102 or color sorting engine 108 to remain as separate entities.
Application 110 operating on user device 102 can generally be any application capable of facilitating the exchange of information between the user device(s) and the color sorting engine 108 in receiving, sorting and presenting colors. In some implementations, the application(s) comprises a web application, which can run in a web browser, and could be hosted at least partially on the server-side of environment 100. In addition, or instead, the application(s) can comprise a dedicated application. In some cases, the application is integrated into the operating system (e.g., as a service). It is therefore contemplated herein that “application” be interpreted broadly.
In accordance with embodiments herein, the application 110 can facilitate color sorting using SOMs in an efficient and effective manner. In operation, a user can view and/or select colors via a graphical user interface provided via the application 110. For example, Application 110 displays example input 106, which shows a 1-D color palette with ten (10) colors in a random order. In some embodiments, Application 110 can display a 2-D color palette as an array of colors. Application 110 can allow a user to select and subsequently display any amount of colors as 1-D or 2-D color palettes.
The color sorting engine 108 can receive the input or selected colors from Application 110. The color sorting engine 108 can receive input colors in any color space/format (standard red, green, blue color space (“sRGB”), Hexadecimal color values (“HEX”), (hue, saturation, value color space (“HSV”), etc.). In the example shown in
In embodiments, color sorting engine 108 generates a SOM on the color space based on the mapped colors and associates the input colors to points on the SOM. In some cases, the number of points in the SOM generated by color sorting engine 108 is equal to or greater than the number of colors in the input colors. As an example, with brief reference to
The color sorting engine 108 can then sort the input colors based on the color's associated point on the SOM and output the sorted colors to application 110. As an example, with brief reference to
As described in further detail below with respect to
In some embodiments, as described in further detail with respect to the example provided in
In operation, color sorting engine 108 can obtain the input set of colors (e.g., input 106) from user device 102 or any other data sources over network 104. For example, a user may select a set of colors from application 110 on user device 102. The user then may select an option to sort the selected set of colors from application 110 on user device 102. Application 110 can then send the selected set of colors to color sorting engine 108 to be sorted. Alternatively, application 110 may automatically send the selected set of colors to color sorting engine 108 to be sorted without requiring the user to select an option to sort the colors. Application 110 may then receive the sorted selected set of colors from color sorting engine 108 to display the sorted selected set of colors (e.g., output 112) to the user through application 110 via a display screen of the user device 102.
As described, in some cases, color sorting engine 108 can retrieve or receive the data regarding the sets of colors to be sorted from the user device 102 or any other data sources over network 104. The sets of colors may include, by way of example and not limitation, a 1-D set of colors or a 2-D set or array of colors. The number of colors in the 1-D or 2-D set of colors can be any amount. Further, color sorting engine can retrieve or receive, by way of example and not limitation, data related to the color spaces in order to map the colors and generate the SOM. Such data related to the color spaces can be initially collected at remote locations or systems and transmitted to a data store for access by color sorting engine 108. The data sources may include servers, data stores, or other components that store color data. Further, color sorting engine can retrieve or receive, by way of example and not limitation, data related to generating SOMs on the color spaces. Such data related to generating SOMs on the color spaces can be initially collected at remote locations or systems and transmitted to a data store for access by color sorting engine 108.
As described herein, color sorting engine 108 can facilitate receiving input colors, sorting the input colors using SOMs, and outputting the sorted colors. Color sorting engine 108 can be or include a server, including one or more processors, and one or more computer-readable media. The computer-readable media includes computer-readable instructions executable by the one or more processors. The instructions can optionally implement one or more components of color sorting engine 108, described in additional detail below with respect to color sorting manager 202 of
At a high level, color sorting engine 108 performs various functionality to facilitate efficient and effective sorting of colors, such as receiving input colors, sorting the input colors using SOMs, and outputting the sorted colors for presentation. In this regard, color sorting engine 108 can provide sorted colors for presentation to application 110 of the user device. The sorted colors can be displayed via a display screen of the user device and may be presented in any manner.
For cloud-based implementations, the instructions on color sorting engine 108 can implement one or more components, and application 110 can be utilized by a user to interface with the functionality implemented on color sorting engine 108. In some cases, application 110 comprises a web browser. In other cases, color sorting engine 108 may not be required. For example, the components of color sorting engine 108 may be implemented completely on a user device, such as user device 102. In this case, color sorting engine may be embodied at least partially by the instructions corresponding to application 110.
Thus, it should be appreciated that color sorting engine 108 may be provided via multiple devices arranged in a distributed environment that collectively provide the functionality described herein. Additionally, other components not shown may also be included within the distributed environment. In addition, or instead, color sorting engine 108 can be integrated, at least partially, into a user device, such as user device 102. Furthermore, color sorting engine 108 may at least partially be embodied as a cloud computing service.
Referring to
As shown in
In embodiments, data sources (such as a source providing input colors 212 and for storing output colors 214), user devices (such as user device 102 of
With regard to the color sorting manager 202, the color space mapping engine 204 is generally configured to automatically map input colors (e.g., input colors 212) to a color space. In embodiments, color space mapping engine 204 includes rules, conditions, associations, models, algorithms, or the like to map input colors to a color space. In this regard, the color space mapping engine 204 generates a color space mapping of the input colors in any desired color space. The input colors 212 (and output colors 214) can be received/presented in any color space/format (SRGB, HEX, HSV, etc.). For example, the input colors 212 can be received in its desired color space/format or the input colors 212 can be received in one color space/format and converted to a desired color space. Color space mapping engine 204 can then convert the input colors 212 to a perceptually uniform color space, such as CIELAB, OKLab, CIECAM, etc. For example, CIELAB is a 3-D color space with the L* axis being lightness, the a* axis being green-red chromaticity, and the b* axis being the blue-yellow chromaticity. Each color of the input colors can be mapped onto the CIELAB color space based on its corresponding values for each of the axes. As another example, CIECAM can define colors based on dimensions such as brightness, lightness, colorfulness, chroma, saturation, and hue. Colors may be mapped to CIECAM based on any of combination of these dimensions. In some embodiments, the 3-D color space may be based on a combination of lightness, chroma and hue; or lightness, a* and b* of the CIECAM color space. In this regard, the color space mapping engine 204 generates a color space mapping of the input colors on any desired color space.
In some embodiments, input colors 212 are a 1-D set of colors (e.g., a 1-D color palette). In other embodiments, input colors 212 are a 2-D array of colors (e.g., a 2-D color palette). The color space mapping engine 204 is configured to map the 1-D or 2-D set of colors to a 3-D color space. As an example, with brief reference to
The self-organizing map engine 206 is generally configured to generate a SOM based on the color space mapping of the input colors. A Self-Organizing Map (“SOM”) is an Artificial Neural Network (“ANN”) that can iteratively organize itself based on the relationship between each node and the input data. Generally, the self-organizing map engine 206 generates a distribution of points (e.g., a plurality or distribution of nodes) on the color space. In some embodiments, the distribution of points is randomly generated. Each point in the distribution of points represents a corresponding color on the color space. The self-organizing map engine 206 can organize the distribution of points by iteratively optimizing a location of each point in the distribution of points based on the mapped set of colors. The resulting organized distribution of points generated by self-organizing map engine 206 organizes the points of the SOM as an optimal path based on the locations of the mapped set of colors on the color space. An example is discussed in further detail below with respect to
Self-organizing map engine 206 can include rules, conditions, associations, models, algorithms, or the like to generate a SOM based on the color space mapping of the input colors. In some embodiments, self-organizing map engine 206 generates a number of points in the distribution of points equal to the number of colors in the set of input colors. In other embodiments, self-organizing map engine 206 generates a number of points in the distribution of points greater than the number of colors in the set of input colors. As an example, with brief reference to
The associating and sorting engine 208 is generally configured to associate each of the input colors a point of the SOM. In some cases, the associating and sorting engine 208 associates input colors to the next closest point of the SOM, not already associated to another one of the input colors. Further, the associating and sorting engine 208 is generally configured to sort each of the input colors based on each color's associated point of the SOM. As an example, with brief reference to
The associating and sorting engine 208 can include rules, conditions, associations, models, algorithms, or the like to assign or associate the input colors to points of the SOM. For example, in order to determine the closest available cell, the associating and sorting engine 208 may compute the Euclidian distance between a color and each available cell to determine the next closest, available cell/point of the SOM. Further, as an example, the associating and sorting engine 208 can sort each of the input colors based each color's associated point of the SOM by determining each end point of the SOM and sorting the colors based on the location of each point of the SOM between the end points. Following the associating of the colors with points of the SOM, one end point of the SOM would correspond to a first color of the sorted set of colors and the other end point of the SOM would correspond to the last color in the sorted set of colors. For example,
In some embodiments, as described more fully below with respect to the example shown in
The output color display and storage engine 210 is generally configured to output the sorted colors, for example, for display and/or storage. The output color display and storage engine 210 can include rules, conditions, associations, models, algorithms, or the like to display the sorted output colors and/or allow the user to adjust the displayed colors. In some embodiments, output color display and storage engine 210 may employ the reverse process of the color space mapping engine 204. In such a case, for instance, the output color display and storage engine 210 receives the sorted set of colors from associating and sorting engine 208 in the format of the color space used to sort the colors and converts the sorted colors to the format originally received (e.g., via input colors 212) in order to display the sorted colors in the user device (e.g., as output colors 214).
In this regard, output color display and storage engine 210 can display and/or store 1-D or 2-D color palettes that are sorted in aesthetically pleasing manner. Output color display and storage engine 210 can output the sorted color palettes for display so that the user can utilize the color palettes for any means, such design work. In some embodiments, output color display and storage engine 210 stores the sorted color palette in data store 216 so that the user can access the stored color palette at a later time.
In some embodiments, the output color display and storage engine 210 outputs the sorted set of color as 1-D set of sorted colors (e.g., a 1-D color palette). As an example, with brief reference to
In some embodiments, as described more fully below with respect to
In block 308, a SOM algorithm organizes the distribution of points based on the mapped set of colors by iteratively optimizing the location of each point in the distribution of points based on the mapped set of colors. After being organized by the SOM, each point in the distribution of points represents a corresponding, optimized color as shown by the colors in SOM Output 312. The corresponding optimized colors are referred to as “optimized” colors as the colors are the locations of the optimized path organized by the SOM. Upon visual comparison of SOM output 312 and Output 314, one can appreciate that the colors of SOM output 312 and the colors of Output 314 are not the same as Output 314 corresponds to the sorted colors of Input 302 whereas the colors of SOM output 312 correspond to the colors from the locations of the optimized path organized by the SOM. Blocks 308 and 310 provide an example 3-D visualization in CIELAB color space showing the input colors 302 and their locations with respect to the SOM. The continuous red line between the cells/points of the SOM is merely for illustration purposes. Although the continuous red line is visualized as a continuous path in
In block 310, each color in the set of colors is associated with one of the points of the organized distribution of points closest to the color that is not already associated with another color. In this regard, the association or projection of the mapped set of colors onto the SOM is not trivial.
In some embodiments, if the number of cells is equal to the number of colors, the closest cell is identified for each of the input colors based on the original order of the input colors. Thus, the closest, available cell is associated with each input color. In order to determine the closest available cell, the distance between a color and a cell using the Euclidean distance is determined and compared to the distance to other available cells. In this regard, if the closest cell is not available, the next closest available cell is iteratively searched for until the next closest available cell is found.
In this regard, in certain cases of those embodiments, a problem with the sequential searching for the closest available cell for a SOM with an equal number of cells as input colors is that next closest available cell for the SOM may be dependent on the original order of the colors. An example of the problem of the certain cases of those embodiments is shown in
In an alternative approach, a parametric curve can be generated as an optimized path based on the locations of the colors on the color space without generating a separate distribution of points or generating a SOM to organize the distribution of points. The mapped colors would then be sorted based on associated points on the parametric curves.
Turning back to
In some embodiments, where the points of the SOM include a number of points greater than colors in the set of colors and the set of colors is a 1-D set of colors, each point that is not associated with a color can be discarded or not used in the subsequent display of the sorted colors. In some embodiments, where the points of the SOM include a number of points greater than colors in the set of colors and the set of colors is a 2-D array of colors, the unassociated points of the SOM can be utilized in the display of the sorted 2-D array of colors as the unassociated points would otherwise be empty spaces in the sorted 2-D array of colors.
Flow diagram 400B is another example flow diagram for sorting input colors using a SOM algorithm. As shown in block 402B, a set of colors are mapped to color space, and a distribution of points are organized using a SOM algorithm based on the mapped set of colors. In block 402B, in order to address the problem of those certain cases of some embodiments, the number of points in the SOM is greater to the number of colors. In this regard, each color is associated with one of the points of the SOM, but some of the points of the SOM remain unassigned to or unassociated with a color. In some embodiments (as shown in
As shown in block 402B, colors 408B and 410B are able to be associated with its closest cells as the cell is unassociated with a different color (unlike colors 408A and 410A described above). SOM output 404B is the set of optimized colors based on the points of the SOM and includes both the optimized color associated with a color in the set of colors and the optimized colors unassociated with any of the colors in the set of colors. Output 406B shows the set of colors sorted based on the location of its associated point in the SOM. As can be understood by output 406B and SOM output 404B, the unassociated colors of SOM output 404B are not utilized in the display of the sorted set of original input colors of output 406B. Referring to
In some embodiments, where the SOM includes a number of points greater than colors in the set of colors and the set of colors is a 2-D array of colors, the unassociated points of the SOM can be utilized in the display of the sorted 2-D array of colors as the unassociated points would otherwise be empty spaces in the sorted 2-D array of colors. In this regard, as each of the unassociated points of the SOM corresponds to an unassociated optimized color in the color space, the unassociated optimized colors are sorted along with the input 2-D array colors. The input 2-D array of colors and the unassociated optimized colors are sorted based on the location of unassociated and associated points in the SOM. The sorted colors, which in this example include the 2-D input array of colors and the unassociated optimized colors, are displayed for presentation to a user through a user interface. Thus, in order to address the gaps in the color sequence of unassociated cells in a 2D array and its associated 2D SOM, the coordinates of each cell of the unassociated cells are actual optimized colors from coordination on the color space that can be used to fill in those gaps obtaining pleasing results through a mix of original input colors, and generated optimized colors from the unassociated cells.
In the embodiments described herein, a set of colors is mapped on a color space. Using a SOM algorithm, a distribution of points is organized on the color space based on the mapped set of colors. Each point of the SOM corresponds to an optimized color on the color space. Each color in the set of colors is associated with one of the points of the SOM closest to the color that is not already associated with another color. The set of colors are sorted based on the location of its associated point in the SOM.
As shown in flow diagram 700, the sorted set of colors are displayed for presentation along with an adjustable parameter 704. The adjustable parameter 704 allows a user to adjust the colors in the sorted set of colors by linear interpolating between each color in the set of colors and the corresponding optimized color of the color's associated point in the SOM. For example, a linear interpolation parameter=0 can correspond to the color from the sorted set of colors. As an example, the top row of colors of adjustable output 702 shows the sorted set of colors with a parameter 704 of 0. A linear interpolation parameter=1 can correspond to the optimized color of the color's associated point in the SOM. As an example, the bottom row of colors of adjustable output 702 shows the optimized set of colors based on each color's associated point in the SOM with a parameter 704 of 1.
A linear interpolation parameter between 0 and 1 would correspond to a linear interpolated set of colors between each color from the set of sorted colors and the color's corresponding optimized color of the color's associated point in the SOM. As an example, the intermediate rows between the top row of colors and bottom row of colors of adjustable output 702 show changes to the original set of sorted colors, which results in smoother steps between neighboring colors and more closely resembling the optimized colors of the SOM of the bottom row of colors. The colors and parameter values in
With reference now to
Turning initially to
In block 808, the distribution of points are organized using a SOM as an optimal path based on the mapped set of colors by iteratively optimizing a location of each point in the distribution of points based on the mapped set of colors. In block 810, each color in the set of colors is associated with one of the points of the organized distribution of points (e.g., the points of the SOM) closest to the color that is not already associated with another color. In some embodiments, where the distribution of points include a number of points greater than colors in the set of colors and the set of colors is a 1-D set of colors, each point that is not associated with a color can be discarded or not utilized for further display or presentation to a user. In some embodiments, where the distribution of points includes a number of points greater than colors in the set of colors and the set of colors is a 2-D array of colors, the unassociated points in the distribution can be utilized in the display of the sorted 2-D array of colors. In block 812, the set of colors are sorted based on the location of each color's associated point in the SOM. In block 814, the sorted set of colors are displayed for presentation to a user through a user interface.
In some embodiments, where the number of points of the SOM is greater than colors in the set of colors and the set of colors is a 2-D array of colors, the unassociated points of the SOM can be utilized in the display of the sorted 2-D array of colors as the unassociated points would otherwise be empty spaces in the sorted 2-D array of colors. In this regard, as each of the unassociated points of the SOM corresponds to an unassociated optimized color in the color space, the unassociated optimized colors are sorted along with the input 2-D array colors. The input 2-D array of colors and the unassociated optimized colors are sorted based on the location of unassociated and associated points in the SOM. The sorted colors, which in the example include the 2-D input array of colors and the unassociated optimized colors, are displayed for presentation to a user through a user interface.
Turning now to
At block 906, each color in the set of colors is associated with one of the points of the SOM closest to the color that is not already associated with another color. At block 908, the set of colors are sorted based on the location of its associated point in the SOM. In some embodiments, where the distribution of points include a number of points greater than colors in the set of colors and the set of colors is a 1-D set of colors, each point that is not associated with a color can be discarded. In some embodiments, where the number of points of the SOM is greater than colors in the set of colors and the set of colors is a 2-D array of colors, the unassociated points in the distribution can be utilized in the display of the sorted 2-D array of colors as the unassociated points would otherwise be empty spaces in the sorted 2-D array of colors.
At block 910, the sorted set of colors is displayed for presentation along with an adjustable parameter. The adjustable parameter allows a user to adjust the colors in the sorted set of colors by linear interpolating between each color in the set of colors and the optimized color of the color's associated point in the SOM. For example, a linear interpolation parameter=0 can correspond to the color from the set of colors. A linear interpolation parameter=1 can correspond to the optimized color of the color's associated point in the SOM. A linear interpolation parameter between 0 and 1 would correspond to a linear interpolated color between the color from the set of colors and the optimized color of the color's associated point in the SOM. In some embodiments, where the 2-D array of sorted colors includes optimized colors corresponding to points of the SOM, the optimized colors would not be adjusted and only the colors from the sorted set of input 2-D array of colors would be adjusted by the adjustable parameter.
Having briefly described an overview of aspects of the technology described herein, an exemplary operating environment in which aspects of the technology described herein may be implemented is described below in order to provide a general context for various aspects of the technology described herein.
Referring to the drawings in general, and initially to
The technology described herein may be described in the general context of computer code or machine-usable instructions, including computer-executable instructions such as program components, being executed by a computer or other machine, such as a personal data assistant or other handheld device. Generally, program components, including routines, programs, objects, components, data structures, and the like, refer to code that performs particular tasks or implements particular abstract data types. Aspects of the technology described herein may be practiced in a variety of system configurations, including handheld devices, consumer electronics, general-purpose computers, and specialty computing devices. Aspects of the technology described herein may also be practiced in distributed computing environments where tasks are performed by remote-processing devices that are linked through a communications network.
With continued reference to
Computing device 1000 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by computing device 1000 and includes both volatile and nonvolatile, removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program sub-modules, or other data.
Computer storage media includes RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage, or other magnetic storage devices. Computer storage media does not comprise a propagated data signal.
Communication media typically embodies computer-readable instructions, data structures, program sub-modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.
Memory 1012 includes computer storage media in the form of volatile and/or nonvolatile memory. The memory 1012 may be removable, non-removable, or a combination thereof. Exemplary memory includes solid-state memory, hard drives, and optical-disc drives. Computing device 1000 includes one or more processors 1014 that read data from various entities such as bus 1010, memory 1012, or I/O components 1020. Presentation component(s) 1016 present data indications to a user or other device. Exemplary presentation components 1016 include a display device, speaker, printing component, and vibrating component. I/O port(s) 1018 allow computing device 1000 to be logically coupled to other devices including I/O components 1020, some of which may be built in.
Illustrative I/O components include a microphone, joystick, game pad, satellite dish, scanner, printer, display device, wireless device, a controller (such as a keyboard, and a mouse), a natural user interface (NUI) (such as touch interaction, pen (or stylus) gesture, and gaze detection), and the like. In aspects, a pen digitizer (not shown) and accompanying input instrument (also not shown but which may include, by way of example only, a pen or a stylus) are provided in order to digitally capture freehand user input. The connection between the pen digitizer and processor(s) 1014 may be direct or via a coupling utilizing a serial port, parallel port, and/or other interface and/or system bus known in the art. Furthermore, the digitizer input component may be a component separated from an output component such as a display device, or in some aspects, the usable input area of a digitizer may be coextensive with the display area of a display device, integrated with the display device, or may exist as a separate device overlaying or otherwise appended to a display device. Any and all such variations, and any combination thereof, are contemplated to be within the scope of aspects of the technology described herein.
A NUI processes air gestures, voice, or other physiological inputs generated by a user. Appropriate NUI inputs may be interpreted as ink strokes for presentation in association with the computing device 1000. These requests may be transmitted to the appropriate network element for further processing. A NUI implements any combination of speech recognition, touch and stylus recognition, facial recognition, biometric recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye tracking, and touch recognition associated with displays on the computing device 1000. The computing device 1000 may be equipped with depth cameras, such as stereoscopic camera systems, infrared camera systems, RGB camera systems, and combinations of these, for gesture detection and recognition. Additionally, the computing device 1000 may be equipped with accelerometers or gyroscopes that enable detection of motion. The output of the accelerometers or gyroscopes may be provided to the display of the computing device 1000 to render immersive augmented reality or virtual reality.
A computing device may include radio(s) 1024. The radio 1024 transmits and receives radio communications. The computing device may be a wireless terminal adapted to receive communications and media over various wireless networks. Computing device 1000 may communicate via wireless protocols, such as code division multiple access (“CDMA”), global system for mobiles (“GSM”), or time division multiple access (“TDMA”), as well as others, to communicate with other devices. The radio communications may be a short-range connection, a long-range connection, or a combination of both a short-range and a long-range wireless telecommunications connection. When we refer to “short” and “long” types of connections, we do not mean to refer to the spatial relation between two devices. Instead, we are generally referring to short range and long range as different categories, or types, of connections (i.e., a primary connection and a secondary connection). A short-range connection may include a Wi-Fi® connection to a device (e.g., mobile hotspot) that provides access to a wireless communications network, such as a WLAN connection using the 802.11 protocol. A Bluetooth connection to another computing device is a second example of a short-range connection. A long-range connection may include a connection using one or more of CDMA, GPRS, GSM, TDMA, and 802.16 protocols.
The technology described herein has been described in relation to particular aspects, which are intended in all respects to be illustrative rather than restrictive.