Users commonly have access to many different digital images, including digital images that users have taken or created themselves as well as digital images taken or created by others. Situations can arise where users want to perform operations on images, but it can be difficult for users to perform such operations. For example, if a user wants to find digital images with certain color characteristics, given the large number of digital images available to the user it can be difficult for the user to locate the images that have the desired color characteristics. Such difficulties can increase user frustration and reduce the user friendliness of services that make images available to users.
This Summary introduces a selection of concepts in a simplified form that are further described below in the Detailed Description. As such, this Summary is not intended to identify 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.
In accordance with one or more aspects, a user input in the form of an adverbial expression indicating a change to a color palette of an image is received. The user input is transformed into a new color palette, and an image search is initiated using search criteria based on the new color palette.
In accordance with one or more aspects, a user input in the form of an adverbial expression indicating a change to a color palette of an image is received. The image is modified based on the adverbial expression, and the modified image is displayed.
The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different instances in the description and the figures may indicate similar or identical items. Entities represented in the figures may be indicative of one or more entities and thus reference may be made interchangeably to single or plural forms of the entities in the discussion.
Adverbial expression based color image operations are discussed herein. A color palette for an image is obtained, the color palette of an image being a set of different colors that are determined to be the dominant colors in the image. The color palette is optionally displayed to a user, and a user input in the form of an adverbial expression to change the color palette is received. An adverbial expression refers to a user input indicating an increase or decrease in a color characteristic of one or more images relative to a current setting or value for the color characteristic, the user input indicating simply more or less of a color characteristic rather than numerical values for a color characteristic. The adverbial expression can indicate various different changes to the color palette, such as more or less of a particular color, making a color brighter or darker, making all colors in the color palette shallower or deeper, increasing or reducing the contrast of colors in the color palette, and so forth.
The adverbial expression is transformed into a new color palette that can be used as the basis for a search query. A color based image search can be initiated based on the new color palette, the search identifying images based on the colors in the images and the colors in the new color palette. Thus, the user is able to use adverbial expressions to search for images, such as requesting more or less of a particular color, increasing or reducing the contrast of colors, and so forth. For example, in response to displaying an image, a user input indicating that pictures that have more blue or have more contrast can be received. The user input can be provided in various manners, such as the user verbally stating “more blue” or “more contrast”, the user selecting a displayed up or down arrow, and so forth. Thus, the user is able to provide various different user inputs to create a new search criteria, the user inputs being more intuitive for the user than techniques that would require a user to input a specific number or value specifying the search criteria.
Additionally or alternatively, the new color palette can be used as a basis for image manipulation. Changes can be made to an image based on the adverbial expression. Thus, the user is able to use adverbial expressions to change images, such as changing the image to have more or less of a particular color, increasing or reducing the contrast of colors, and so forth.
Adverbial expression system 102 includes an adverbial expression user interface (UI) module 112 and an adverbial expression transformation module 114. An adverbial expression refers to a user input indicating an increase or decrease in a color characteristic of one or more images relative to a current setting or value for the color characteristic. The adverbial expression is an input indicating simply more or less of a color characteristic, and is input in the absence of inputting (and typically in the absence of displaying) numerical values for color characteristics—no numerical values for particular color characteristics are input by the user, no numerical values for current color characteristics need be displayed (and typically none are displayed) to the user and no numerical values for new color characteristics resulting from the user input need be displayed (and typically none are displayed) to the user. The color characteristic can be an amount of one or more colors, brightnesses of one or more colors, contrasts of one or more colors, and so forth. For example, using adverbial expressions a user can simply indicate that he or she desires more or less of a particular color. The user need not be concerned with a particular numerical value representing the particular color, or how to change any settings or values to represent more of the particular color. Rather, the user is provided with a more intuitive UI that allows the user to simply indicate he or she desires more or less of a particular color.
Various other adverbial expressions can also be input, such as an indication that he or she desires more of a particular color and less of another color (or less of all other colors). The adverbial expression can also include an indication of an amount of the more or less that is desired by the user, such as providing an input of “a little more green”, “more green”, and “most green”. These indications of amount are used in determining an amount of change to make to a color palette as discussed in more detail below.
The adverbial expression UI module 112 presents a UI that receives user inputs that are adverbial expressions. The user inputs can be received in a variety of different manners, such as touch inputs to a touch screen or touch pad, inputs from a cursor control device or keypad, verbal inputs, and so forth. The adverbial expression UI module 112 includes various components or modules based on the inputs supported, such as touch screen functionality, a microphone and speech recognition engine, and so forth.
The UI presented by module 112 also displays a color palette of an image, allowing the adverbial expressions to be made with reference to the color palette. The color palette of an image refers to a set of different colors that are determined to be the dominant colors in the image. Each pixel of an image can have a different color, and the number of different colors that a pixel may have can vary (e.g., ranging from a couple colors to millions or billions of colors). The set of colors that are dominant in the image can be determined using any of a variety of public and/or proprietary techniques, such as any of a variety of clustering algorithms. For example, the colors of the pixels in the image can be identified and a clustering algorithm used to identify groups of pixels that are close to one another (e.g., within a threshold distance of one another). The largest groups (e.g., the groups having the largest numbers of pixels) can be selected, and for each of the largest groups a color representative of the group (e.g., an average of the colors of the pixels in the group) can be identified as a dominant color in the image.
The number of different dominant colors that are identified can vary. In one or more embodiments, four or five dominant colors in the image are identified and used as the color palette for the image. Alternatively, the color palette for the image can include different numbers of dominant colors. Adverbial expressions can be input by a user with reference to the color palette of an image in a variety of different manners as discussed in more detail below.
The adverbial expression transformation module 114 generates a search query by transforming the adverbial expression received from a user into a search query. The transformation can include generating a new color palette that is the color palette of an image changed in response to the received adverbial expression. The colors in the new color palette are used as a basis for generating search criteria of the search query.
Adverbial expression system 102 also includes a color based image search module 116. The search query generated by the transformation module 114 is made available to the search module 116. The search module 116 searches images 106 to identify images that satisfy the search query. The one or more images identified by image search module 116 are provided as color based search results 120. The search results 120 can be provided by system 102 in a variety of different manners, such as displayed or otherwise presented to a user of system 102, communicated to another device or system, stored in a data store for subsequent retrieval, and so forth.
Adverbial expression system 102 also includes an adverbial expression based image manipulation module 122. The image manipulation module 122 transforms the adverbial expression received from a user into changes to an image and makes those changes to the image, resulting in modified image 124. The image to which the changes are applied can be identified in various manners, such as one of the images 106 that is selected by a user of the adverbial expression system 102.
It should be noted that system 102 and/or image collection 104 can be implemented on the same device or multiple devices. For example, adverbial expression system 102 can be implemented on one device (e.g., a server computer or a user's laptop computer) and image collection 104 can be implemented on one or more other devices. By way of another example, system 102 and/or image collection 104 can each be implemented by multiple different devices. By way of yet another example, system 102 and image collection 104 can be implemented on a single device.
It should also be noted that the adverbial expression system 102 need not include all of the modules illustrated in
In process 200, a color palette for an image is obtained (act 202). The image can be any of a variety of different images, such as an image returned in response to a previous image search, an image selected or otherwise provided by a user, an image selected or otherwise identified based on other rules or criteria, and so forth. The color palette can be obtained in any of a variety of different manners, such as being extracted from the image in act 202 using any of a variety of public and/or proprietary techniques. Alternatively, the color palette for the image can have been previously generated and associated with the image, and can be obtained along with obtaining the image.
The obtained color palette is optionally displayed (act 204). The color palette is displayed by displaying the colors of the color palette. Numbers or other values representing the colors of the color palette need not be and typically are not displayed along with displaying the colors (although could alternatively be displayed if desired). Although discussed as being displayed, it should be noted that the color palette can alternatively be presented to the user in other manners, such as a description being played back audibly. Additionally, in some situations the color palette is not displayed. Rather, the adverbial expression can be provided by the user (e.g., a verbal or text input for more of a particular color) in the absence of the color palette being displayed.
For each color in the color palette 300, the size or amount of the color indicates how much of the color (or other colors within a threshold distance of the color in a color space) is included in the image. The size or amount of the color can be, for example, a percentage of the image that includes that color and similar colors (e.g., colors that are assigned to the same group or cluster when the dominant colors in the image are determined). For example, in the color palette 300, the size of color 306 is larger than the size of color 308, indicating that the image includes more pixels with the color 306 (or similar colors) than the color 308.
Returning to
In one or more embodiments, the adverbial expression is made by a user input manipulating a displayed color palette. The displayed color palette can be manipulated in various manners, such as dragging an edge of a color in the displayed color palette. For example, referring to the color palette 300 of
The dragging can also be done by selecting and dragging boxes or icons illustrated within the colors. For example, each color in the color palette 300 can have an associated selection box, and those selection boxes can be dragged to the left to indicate more of a color and dragged to the right to indicate less of a color.
Various other user inputs can also be used to manipulate the displayed color palette. For example, a user input can be a gesture on a color in the color palette or within a threshold distance of the color palette (e.g., a gesture in which two fingers or other objects are moved towards one another to indicate less of a color and moved away from one another to indicate more of a color, a gesture in which one or more colors of the color palette are touched indicating that the width of the touched colors is to remain the same but the width of each of the non-touched colors is to be increased and/or decreased).
Alternatively, the adverbial expressions can be made by user inputs to a menu, list, or other display of possible adverbial expressions, including mouse wheel inputs, mouse over or head-up display (HUD) inputs, and so forth. For example, menu options of “more” and/or “less” can be displayed for each color in the color palette, and the user can select the “more” menu option to indicate more of a particular color and the “less” menu option to indicate less of a particular color. By way of another example, up and/or down arrows can be displayed for each color in the color palette, and the user can select the up arrow to indicate more of a particular color and the down arrow to indicate less of a particular color. By way of yet another example, a “+” icon and/or a “−” icon can be displayed for each color in the color palette, and the user can select the “+” icon to indicate more of a particular color and the “−” icon to indicate less of a particular color.
Alternatively, the adverbial expressions can be made by various other types of user inputs. For example, audible inputs such as “more gray” or “less green” can be input. Which color in the color palette corresponds to an audible input can be identified in different manners, such as by an adverbial expression UI module displaying labels corresponding to the different colors in the color palette so that the user can identify a particular color by stating the label corresponding to the color, by the adverbial expression UI module using various algorithms, rules, or criteria to automatically identifying which color in the color palette is represented by the audible input without displaying labels for the colors, and so forth.
The color palette is changed in response to the adverbial expression, and the resultant color palette is optionally displayed. The manner in which the color palette changes depends on the particular adverbial expression. For example, if an adverbial expression indicates more of a particular color, then the color palette is changed to include more of that particular color and less of at least one other color. By way of another example, if an adverbial expression indicates less of a particular color, then the color palette is changed to include less of that particular color and more of at least one other color.
In the examples of
The color palette can also be displayed in different manners to facilitate user input of adverbial expressions, and in one or more embodiments the color palette is displayed in a different manner in response to a user input (e.g., a user touching a particular portion of a touchscreen) indicating the user intends to input an adverbial expression.
Returning to
In one or more embodiments, the color characteristics of an image include an amount of a subset of colors in the image, and the adverbial expression includes an indication to have more or less of the subset of colors. The subset of colors can be a single color in the displayed color palette, or alternatively two or more (but less than all) of the colors in the displayed color palette. The user input indicates which colors are included in the subset of colors.
The amount of a particular color is increased or decreased by changing an amount of the color in the color palette. The amount of each color in the color palette can be maintained and identified by the adverbial expression system in a variety of different manners. In one or more embodiments, the color palette includes a set of numbers or other values that identify how much of each color is included in the color palette (e.g., a set of percentages that total to 100%). This set of numbers or other values is maintained as part of or associated with the color palette, but need not be (and typically is not) displayed to the user. The number or value of a particular color can be increased if the amount of the color is to be increased, and the number or value of a particular color can be decreased if the amount of the color is to be decreased.
The amount of the increase or decrease in the number or value of a particular color is dependent on the user input. The amount the number or value of a particular color is increased is greater in response to user inputs requesting greater amounts of the particular color than user inputs requesting lesser amounts of the particular color. For example, if the user input reduces the amount of a particular color in the displayed color palette by 25%, then the amount the number or value of that particular color is decreased is 25% (or within a threshold amount of 25%). By way of another example, if the user input is an indication of “a little more green” then the amount of the green color in the displayed color palette is increased by 25%, if the user input is an indication of “more green” then the amount of the green color in the displayed color palette is increased by 50%, and if the user input is an indication of “most green” then the amount of the green color in the displayed color palette is increased by 100%.
In one or more embodiments, the color characteristics of an image include the brightness of a subset of colors in the image, and the adverbial expression includes an indication to increase or decrease the brightness of the subset of colors. Increasing or decreasing the brightness of a color can also be referred to as having more or less brightness of the color. The subset of colors can be a single color in the displayed color palette, or alternatively two or more (but less than all) of the colors in the displayed color palette. The user input indicates which colors are included in the subset of colors.
The colors in an image or color palette can be represented using a variety of different color spaces. Examples of such color spaces include the RGB (red, green, blue) color space, the HSV (hue, saturation, value) color space, the YUV (luma and chrominance) color space, the Lab color space, and so forth. The Lab color space includes a value “L” for lightness and values “a” and “b” for color components. The representation of a color can be converted from one color space to another color space using any of a variety of public and/or proprietary techniques.
The brightness of a color can be increased or decreased in a variety of different manners. In one or more embodiments, the brightness of a color is increased or decreased by increasing or decreasing the L value in the Lab color space for the color. The amount of the increase or decrease in the brightness of a particular color is dependent on the user input. The amount the brightness of a particular color is increased or decreased is greater in response to user inputs requesting greater changes in brightness for the particular color than user inputs requesting lesser changes in brightness for the particular color. If the color in the color palette to be increased or decreased is not already in the Lab color space, then the color is converted to the Lab color space, the L value of the color is increased or decreased, and then the color can be converted back to its previous color space.
In one or more embodiments, the color characteristics of an image include the depth of colors in the image, and the adverbial expression includes an indication to make the depth of the colors shallower or deeper. Making a color shallower can also be referred to as having less depth of the color, and making the color deeper can also be referred to as having more depth of the color. User inputs to increase the depth of a particular color (a color in the color palette or alternatively another color that is not in the color palette) can be received, such as to make the colors in the color palette a deeper green, a shallower red, and so forth. In response to such user inputs, the depth of that particular color in the colors of the color palette is made shallower or deeper.
In response to a request for a shallower or deeper color, the depth of each of the colors in the color palette is increased or decreased. The depth of a color can be increased or decreased in a variety of different manners. In one or more embodiments, the depth of a color in the color palette is increased or decreased based on a color chart.
For a given color, the depth of that color is decreased (the color is made shallower) by moving that color towards a target location of the color chart that represents the light version of the color to be made shallower. For example, if the user input is to make the colors a shallower green, then each color in the color palette is moved towards the location 902, which represents light green. Thus, if one color in the color palette were a shade of green represented by location 912, then to be made shallower green that color would be moved towards the location 902 as illustrated by arrow 914. Furthermore, if one color in the color palette were a shade of orange represented by location 916, then to be made shallower green that color would be moved towards the location 902 as illustrated by arrow 918.
Similarly, for a given color, the depth of that color is increased (the color is made deeper) by moving that color towards a target location of the color chart that represents the dark version of the color to be made deeper. For example, if the user input is to make the colors a deeper green, then each color in the color palette is moved towards the location 910, which represents dark green. Thus, if one color in the color palette were a shade of green represented by the location 912, then to be made deeper green that color would be moved towards the location 910 as illustrated by arrow 920. Furthermore, if one color in the color palette were a shade of orange represented by the location 916, then to be made deeper green that color would be moved towards the location 910 as illustrated by arrow 922.
Moving a color towards a particular location of a color chart refers to changing the color to be a color that is closer to the location of the color chart. For example, moving the color represented at location 912 towards the location 902 can result in the color being changed to be the color represented at location 924.
The amount of the movement of a particular color is dependent on the user input. The amount that the depth of a particular color is increased or decreased is greater in response to user inputs requesting greater changes in depth for the particular color than user inputs requesting lesser changes in depth for the particular color. The amount of movement can be a fixed amount (e.g., a particular distance based on the user input) or a relative amount (e.g., a percentage of the distance between the current location and the target location, the percentage being dependent on the user input). For example, if the user input were to be a request to make the colors a much deeper green then the movement may be 30% of the distance between the current location and the location 910, whereas if the user input were to be a request to make the colors a slightly deeper green then the movement may be 5% of the distance between the current location and the location 910.
In one or more embodiments, the adverbial expression transformation module uses color groupings or buckets to assign colors to one of multiple different groups.
The movement of a particular color can be determined based at least in part on the color groupings. In one or more embodiments, a color can be moved to another color within the same grouping, but not to a different grouping. For example, in response to a user input requesting a deeper green color, a color in the green-cyan grouping can be changed to another color that is deeper green but still within the green-cyan grouping, but is not changed to a color in a different grouping. Alternatively, a color can be moved to another color in a different grouping, although the number of different groupings may be restricted. For example, using the ordering of the 18 groups in the example above, in response to a user input requesting a deeper green color, a color in the green-cyan grouping can be changed to another color that is deeper green but still within the green-cyan grouping or another color that is deeper green and in the green grouping. The movement may be restricted, for example to one grouping in accordance with the ordering in
In one or more embodiments, in response to a request for a shallower or deeper color, the depth of each of the colors in the color palette is increased or decreased. Alternatively, the depth of one or more (but less than all) of the colors in the color palette can be increased or decreased. Which colors of the color palette are to have their depths increased or decreased can be determined in different manners, such as by user selection of particular colors of the color palette. The depth of each of the one or more colors is increased or decreased as discussed above, although only the depth of the selected one or more colors is increased or decreased.
In one or more embodiments, the color characteristics of an image include the colorfulness of colors in the image, and the adverbial expression includes an indication to make the colors more or less colorful. The colors can be made more or less colorful in a variety of different manners.
In one or more embodiments, the colors are made or less colorful based on the distribution of colors in the color space. The colors are made less colorful by moving the colors towards grayscale colors, and are made more colorful by moving the colors away from grayscale colors. The amount of the increase or decrease in the colorfulness of the colors is dependent on the user input. The amount the colorfulness is increased or decreased is greater in response to user inputs requesting greater changes in colorfulness than user inputs requesting lesser changes in colorfulness.
The color of a pixel is moved towards grayscale colors by changing the color to be closer to the grayscale arrow 1108. Similarly, the color of a pixel is moved away from grayscale colors by changing the color to be further from the grayscale arrow 1108 (e.g., moved in a direction perpendicular to the grayscale arrow 1108). Colors can be moved in various manners as discussed above.
A new color palette is obtained from the colors of the pixels in the image as changed to be closer to or further from the grayscale colors. The new color palette can be extracted from the changed colors of the pixels in the image using any of a variety of public and/or proprietary techniques (e.g., using a clustering algorithm as discussed above).
In one or more embodiments, the color characteristics of an image include the contrast of colors in the image, and the adverbial expression includes an indication to increase or decrease the contrast of the colors. Increasing or decreasing the contrast of colors can also be referred to as having more or less contrast for the colors. The contrast of the colors is increased by increasing the tonal values in the color palette, and the contrast of the colors is decreased by decreasing the tonal values in the color palette. The tonal values can be increased or decreased using any of a variety of public and/or proprietary techniques.
The amount of the increase or decrease in the contrast of the colors is dependent on the user input. The amount the contrast is increased or decreased is greater in response to user inputs requesting greater changes in contrast than user inputs requesting lesser changes in contrast.
Returning to act 208 of
An image search using search criteria based on the new color palette is initiated (act 210). Initiating the image search refers to beginning or requesting a search, such as by communicating a request to the color based image search module 116 of
In one or more embodiments, the image search is based on hash values representing colors in the image. Hash values are generated by applying any of a variety of hash functions to the values of the colors in the new color palette. The images being search also have associated color palettes (e.g., generated as discussed above), and hash values similarly generated for the color palettes. The search criteria can be the hash values of the colors in the new color palette, and the searching can be identifying images with color palette hash values that are the same as (or within a threshold amount of, or closest to, etc.) the search criteria.
Alternatively, rather than hash values, other values representing the colors in the color palettes can be used. For example, numerical values identifying the colors themselves can be used. By way of another example, other characters, symbols, or combinations thereof can be used.
In other embodiments, the image search is performed in different manners. For example, an image can be generated based on the new color palette. An image can be generated based on the new color palette in different manners, such as by creating an image with pixels having the colors of the new color palette. The quantity of pixels in the created image having a particular color is based on (e.g., is proportional to) the amount of each color in the new color palette. The greater the amount of a color in the new color palette, the larger the number of pixels in the created image having that color. The colors can be distributed to different pixels in the image randomly or using various other rules or criteria. Various additional colors can optionally be distributed throughout the created image as noise. The created image can be the search criteria, and an image matching search can be performed using any of a variety of public and/or proprietary techniques.
Search results generated based on the image search using the search criteria are displayed (act 212), such as to a user. Alternatively, the search results can be presented to a user in other manners, or provided to other components, modules, or devices without being displayed.
In process 1200, a color palette for an image is obtained (act 1202). The image can be any of a variety of different images, and the color palette can be obtained in any of a variety of different manners, analogous to the discussion above regarding act 202 of
The obtained color palette is optionally displayed (act 1204). The color palette is displayed by displaying the colors of the color palette, analogous to the discussion above regarding act 204 of
A user input in the form of an adverbial expression to change the color palette is received (act 1206). The adverbial expression indicates an increase or decrease in a color characteristic of the image based on the obtained color palette, and can refer to various different color characteristics, analogous to the discussion above regarding act 206 of
An image is modified based on the adverbial expression (act 1208). In one or more embodiments, the image that is modified is the image for which the color palette was obtained in act 1202. Alternatively, one or more other images can be modified, such as one or more images selected by a user of the adverbial expression system, one or more images identified by another component or module, and so forth.
The adverbial expression can refer to various different color characteristics of the image, analogous to the discussion above regarding act 208 of
The modified image is displayed (act 1210), such as to a user. Alternatively, the modified image can be presented to a user in other manners, or provided to other components, modules, or devices without being displayed.
In the discussions herein, reference is made to color palettes based on images and searching for images using search criteria based on the color palettes. It should be noted that the techniques discussed herein can alternatively be applied to portions of an image rather than an entire image. For example, particular objects in images can be identified (e.g., faces, buildings, sunsets, etc.), and color palettes for the objects obtained and changed as discussed above rather than color palettes for the entire image.
Additionally, the techniques discussed herein can be used with various other search techniques. For example, the images to be searched can be images satisfying various other criteria, such as images including particular types of objects (e.g., people, beaches, water, etc.), images having particular characteristics (e.g., no objects in particular portions of the image), and so forth.
Furthermore, although the techniques discussed herein are discussed with reference to particular color characteristics, it should be noted that the techniques can analogously be used with additional color characteristics and/or other image characteristics. For example, the techniques discussed herein can be analogously used for textures of images (e.g., more or less roughness), surface properties (e.g., more or less reflection), and so forth.
In addition, although the techniques discussed herein are discussed with reference to images, the techniques can similarly be applied to video. Video can be treated as a series of images, and values for a series of images can be calculated and used analogously as with images. For example, the dominant color of video can be determined based on the colors included in each of multiple images of the video, and a color palette for the video can be generated as discussed above. User input in the form of an adverbial expression to change the color palette of the video can be received, and color characteristics of the color palette changed in response to the user input as discussed above.
The example computing device 1302 as illustrated includes a processing system 1304, one or more computer-readable media 1306, and one or more I/O interfaces 1308 that are communicatively coupled, one to another. Although not shown, computing device 1302 may further include a system bus or other data and command transfer system that couples the various components, one to another. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures. A variety of other examples are also contemplated, such as control and data lines.
Processing system 1304 is representative of functionality to perform one or more operations using hardware. Accordingly, processing system 1304 is illustrated as including hardware elements 1310 that may be configured as processors, functional blocks, and so forth. This may include implementation in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors. Hardware elements 1310 are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions may be electronically-executable instructions.
Computer-readable storage media 1306 is illustrated as including memory/storage 1312. Memory/storage 1312 represents memory/storage capacity associated with one or more computer-readable media. Memory/storage component 1312 may include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). Memory/storage component 1312 may include fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth). Computer-readable media 1306 may be configured in a variety of other ways as further described below.
Input/output interface(s) 1308 are representative of functionality to allow a user to enter commands and information to computing device 1302, and also allow information to be presented to the user and/or other components or devices using various input/output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, touch functionality (e.g., capacitive or other sensors that are configured to detect physical touch), a camera (e.g., which may employ visible or non-visible wavelengths such as infrared frequencies to recognize movement as gestures that do not involve touch), and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, tactile-response device, and so forth. Thus, computing device 1302 may be configured in a variety of ways as further described below to support user interaction.
Various techniques may be described herein in the general context of software, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. The terms “module,” “functionality,” and “component” as used herein generally represent software, firmware, hardware, or a combination thereof. The features of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of computing platforms having a variety of processors.
An implementation of the described modules and techniques may be stored on or transmitted across some form of computer-readable media. The computer-readable media may include a variety of media that may be accessed by computing device 1302. By way of example, and not limitation, computer-readable media may include “computer-readable storage media” and “computer-readable signal media.”
“Computer-readable storage media” may refer to media and/or devices that enable persistent and/or non-transitory storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Thus, computer-readable storage media refers to non-signal bearing media. The computer-readable storage media includes hardware such as volatile and non-volatile, removable and non-removable media and/or storage devices implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, logic elements/circuits, or other data. Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or article of manufacture suitable to store the desired information and which may be accessed by a computer.
“Computer-readable signal media” may refer to a signal-bearing medium that is configured to transmit instructions to the hardware of the computing device 1302, such as via a network. Signal media typically may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism. Signal media also include 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 include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.
As previously described, hardware elements 1310 and computer-readable media 1306 are representative of modules, programmable device logic and/or fixed device logic implemented in a hardware form that may be employed in some embodiments to implement at least some aspects of the techniques described herein, such as to perform one or more instructions. Hardware may include components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware. In this context, hardware may operate as a processing device that performs program tasks defined by instructions and/or logic embodied by the hardware as well as a hardware utilized to store instructions for execution, e.g., the computer-readable storage media described previously.
Combinations of the foregoing may also be employed to implement various techniques described herein. Accordingly, software, hardware, or executable modules may be implemented as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or more hardware elements 1310. Computing device 1302 may be configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of a module that is executable by computing device 1302 as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements 1310 of processing system 1304. The instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one or more computing devices 1302 and/or processing systems 1304) to implement techniques, modules, and examples described herein.
The techniques described herein may be supported by various configurations of computing device 1302 and are not limited to the specific examples of the techniques described herein. This functionality may also be implemented all or in part through use of a distributed system, such as over a “cloud” 1320 via a platform 1322 as described below.
Cloud 1320 includes and/or is representative of a platform 1322 for resources 1324. Platform 1322 abstracts underlying functionality of hardware (e.g., servers) and software resources of cloud 1320. Resources 1324 may include applications and/or data that can be utilized while computer processing is executed on servers that are remote from computing device 1302. Resources 1324 can also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network.
Platform 1322 may abstract resources and functions to connect computing device 1302 with other computing devices. Platform 1322 may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for resources 1324 that are implemented via platform 1322. Accordingly, in an interconnected device embodiment, implementation of functionality described herein may be distributed throughout system 1300. For example, the functionality may be implemented in part on computing device 1302 as well as via platform 1322 that abstracts the functionality of the cloud 1320.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Number | Name | Date | Kind |
---|---|---|---|
20130050238 | Bergou | Feb 2013 | A1 |
20130207994 | Rodeski | Aug 2013 | A1 |
Entry |
---|
Evad “Idee Labs: Multicolor Image Search”, posted online @http://www.colourlovers.com/web/blog/2008/07/23/idee-labs-multicolr-search-lab since Jul. 23, 2008. |
Bumgardner “Experimental Colr Pickr-” posted online @http://web.archive.org/web/20121028185537/http://krazydad.com/colrpickr/ since Oct. 28, 2012. |
Sindol Different ways to create Custom Colors for Charts in SQL Server Reporting Services downloaded @ http://web.archive.org/web/20121103234219/http://www.mssqltips.com/sqlservertip/2797/different-ways-to-create-custom-colors-for-charts-in-sql-server-reporting-services/, dated on Nov. 3, 2012. |
Pie Chart, “Pie Chart” downloaded @ http://web.archive.org/web/20121029022701/http://www.r-tutor.com/elementary-statistics/qualitative-data/pie-chart, dated on Oct. 29, 2012. |
“Locality-Sensitive Hashing”, Wikipedia, retrieved from <http://en.wikipedia.org/wiki/Locality—sensitive—hashing> on Nov. 13, 2013, Oct. 18, 2013, 5 pages. |
Number | Date | Country | |
---|---|---|---|
20150170380 A1 | Jun 2015 | US |