(Not Applicable)
1. Technical Field
This invention relates to the field of computer data search programs and more particularly to a system and method for searching and producing matching color information.
2. Description of the Related Art
Generally, e-commerce Internet sites that offer products for sale and provide content related to such products also furnish search capabilities for locating these products. On-line searching enables potential customers to quickly locate products or informational material of interest. The great majority of e-commerce related searching technology is based upon text matching technology. Although some of the text matching technology can be quite sophisticated and can make contextual decisions, extract semantics and even make matches based on like-sounding words, present on-line searching techniques can be ineffective with regard to certain applications, for example color matching and color searching.
Color generally can be characterized using color characterization schemes based upon three or more parameters. These parameters characterize the “color space” as defined by the particular color system being used. For artists and craftsman, some of the most intuitive systems are HSB and HLS. HSB and HLS systems separate color into a hue parameter (H), which basically defines the frequency of the color in the rainbow, a saturation parameter (S), that defines the purity of the color, and a brightness parameter (B, V or L) that accounts for the total amount of light radiated from the color. These systems are more visually intuitive, and can therefore be used to provide the aforementioned capability of finding matching colors—that is, colors that “look well” together. More particularly, matching colors have been defined as combinations of colors which associate well aesthetically.
Color categorization products such as the Pantone System provide a good means of specifying colors and providing color consistency in a manufacturing process, but offer little help with regard to on-line color searching for an Internet user that does not possess Pantone color chips to identify the color being searched. Additionally, existing color searching systems do not provide an interactive means of converging on a desired color, thus forcing the user to examine a large number of color samples one by one in order to find the wanted choice.
There is a need then for color matching and searching capabilities for Internet Web sites that market products that have color as a primary characteristic. Exemplary Web sites can include Web sites which market paints, fabrics, ceramic or other colored tiles, yarn, colored clay or other basic materials as are used in arts-and-crafts. Examples of the latter are beads, thread, and semi-precious stones. Uses for this capability span many markets such as apparel, interior design and decor, accessories that need to be color-matched, jewelry, furniture and architectural design. Significantly, to date, each of the above-identified Web sites have failed to incorporate adequate color searching technology.
The present invention is a system and method that provides color search and matching capabilities based on color rather than text. The present invention includes a method used with a computer to find colors that comprise a harmonious combination of colors in accordance with a configurable set of color matching preferences, and a method used with a computer to find items that possess color characteristics that closely match a user-selected color. The methods can be used not only in the context of a stand-alone computer, but also in the context of a networked computer as well as a computer having a connection to the Internet. Both the method and the system of the present invention can be of great value to people who work in arts and crafts and need to combine elements of different colors to create a finished work. Examples of such activities are beading, quilting, painting, weaving, and knitting.
In one aspect of the present invention, the color search method can be configured for operation in a computer connected to the Internet. In particular, a client Web browser in a computer connected to the Internet can access a Web page containing a user interface to the color search method of the present invention. When the Web page has been retrieved, the color search method contained therein in the form of a script can execute in the client Web browser. Alternatively, the color search method can be a server-side program which can be remotely activated through the client Web browser. Finally, the color search method can be distributed across the Internet and can be included as part of programs both executing in a server and in the client Web browser.
Upon execution of the color search method, the user can be presented with a set of menu entries to accomplish a variety of tasks as follows:
A first choice allows the user to select a measure of the contrast desired between the hues of the selected color and that of the resulting color. The hue contrast may be defined using the HSB color model, where the hue of a color is represented as a circular, one-dimension space that wraps around on itself. Colors that are 180 degrees apart from each other on this circle are complements of each other and share the least possible primary color content. Thus, the highest hue contrasts are obtained with two hues that are spaced 180 degrees away from each other on this circular space.
A second choice that is presented to the user is the degree of contrast desired between the brightness of the selected color and that of the resulting one. Brightness may be represented on a linear scale from 0 to 100%, where 100% is the maximum brightness available, and 0 is the absence of light.
A third choice that is presented to the user is the degree of color saturation desired for the resulting color. After the user makes these choices, the system displays a new color swatch that possesses the contrast characteristics selected by the user.
In a simpler implementation, the user is presented with a single choice-list of contrast options, each of which takes into account the three-parameter color space transformations to be made on the original color. Another implementation might present the user with a first choice-list of contrast options, each of which takes into account only two of the color space parameters to be transformed, and a second choice-list of contrast options for the remaining color space parameter.
Once the user selects the type of contrast transformation to be applied to the original colors, the system applies the transformation requested by the user through an internal algorithm to produce the resulting color. The system also uses a random logic algorithm to vary the resulting color such that it is slightly different with every activation of the same transformation selections. Thus, if the user performs this operation with the same swatch selection on consecutive tries, a different result may be obtained,
In summary, this invention allows an user to select colors into color swatches, find colors that harmonize with a selected color swatch, combine those color selections for storage and retrieval, search for products whose color characteristics closely match those of selected color swatches, display images of matched product samples, select the images of those product samples for the purpose of obtaining more detail about the represented product, select the images of those product samples for the purpose of purchasing the represented product, display samples of products already selected for purchase, and arrange the placement of color swatches and product samples on the screen to aid in the evaluation of color combinations and the combination of such products.
A color matching system in accordance with the inventive arrangements can include a swatch user interface for displaying at least one activatable color swatch for visually presenting a color corresponding to at least one color specification parameter specified according to a color characterization system; at least one color control for specifying the color specification parameters; and, a color matching module for computing a matching color based upon a color space matching parameter and color specification parameters corresponding to a color presented in an activated color swatch in the swatch user interface, wherein the color matching module can identify a color matching the color presented in the activated color swatch. Notably, the at least one color specification parameter can be user-selectable color space matching parameter.
Preferably, the color characterization system is the Hue-Saturation-Brightness (“HSB”) color characterization system. The color matching system also can include a swatch user interface for displaying the activatable color swatches and a plurality of color controls for specifying the color specification parameters. The color controls can include a hue control, a saturation control and a brightness control. Notably, the swatch user interface can include at least one network distributable document displayable in a Web browser. In addition, in the preferred embodiment, the activatable color swatch in the swatch user interface is repositionable within the swatch user interface.
Importantly, the color matching system can include at least one user-selectable color space matching parameter and a color matching module. Preferably, the user-selectable color space matching parameter can include a contrast parameter. Notably, the color matching module can compute a matching color based upon the user-selectable color space matching parameter and color specification parameters which correspond to a color presented in an activated color swatch in the swatch user interface. Significantly, the color matching module can identify a color matching the color presented in the activated color swatch.
In one embodiment of the present invention, the color matching system can include means for creating, saving, retrieving and deleting sets of color swatches displayable in the swatch user interface. In particular, sets of color swatches can be stored in “cookie” files in a client computer. In another embodiment of the present invention, the color matching system can include a color extractor for identifying an object's color. The color extractor can extract the object color from the object and can provide the identified color to the swatch user interface for display in a color swatch.
The color extractor can include an image acquisition device for acquiring a digitized image of an object; partitioning logic for subdividing the acquired digitized image into a plurality of color zones; and, color computing logic for computing a color for each color zone. As such, the color extractor can display each computed color in a color swatch in the swatch user interface. The color extractor further can include color averaging logic for computing an average color for each color computed for each color zone. Hence, the color extractor can display the average color in a color swatch in the swatch user interface. Finally, the color extractor can include a library of patterns for arranging the color zones in a selected portion of the acquired digitized image.
In yet another embodiment of the present invention, the color matching system can include a product database containing images of products and a product matching module. Each product shown in a product image can have at least one color. The product matching module can identify products in the product database having at least one color which matches the color identified by the color matching module. In consequence, the product matching module can produce a selectable set of the identified products. Finally, the color matching system can include shopping cart means for processing a check-out transaction for a selected product in the selectable set.
The color matching system can perform a method in accordance with the inventive arrangements. A computerized color matching method preferably can include receiving at least one color space matching parameter for matching a first color to a second color. The first color can correspond to color specification parameters defined in a color characterization system. Second, based upon the color specification parameters of the first color and the color space matching parameter, new color specification parameters can be computed. The new color specification parameters can correspond to said second color. As such, the second color can match the first color.
The computing step can also include computing new color specification parameters based upon the color specification parameters of the first color, the color space matching parameter, and a randomly generated value. As before, the new color specification parameters can correspond to the second color. However, by virtue of the randomly generated value, each time the computing step is performed the second color can differ from a second color computed in a previous performance of said computing step.
Notably, the computerized color matching method can further include the step of visually presenting to a user in a color swatch in a swatch user interface the first color corresponding to the color specification parameters defined in the color characterization system. Also, the color space matching parameter can be a user-specified color space matching parameter. In a preferred embodiment of the invention, the computerized color matching method can include the step of visually presenting the second color in a color swatch in the swatch user interface. Notably, each swatch in the swatch user interface can be repositioned within the swatch user interface. Also, the method can further include the step of displaying the color swatch in a swatch user interface in a network-distributable document displayable in a Web browser.
In the preferred embodiment of the invention, the color characterization system comprises a Hue-Saturation-Brightness (“HSB”) color characterization system. In addition, the computerized color matching method can further include the step of providing color controls for modifying the color specification parameters specifying the first color in the color swatch. Notably, the color controls can include a hue control, a saturation control and a brightness control. Moreover, the user-specified color space matching parameter can include a contrast parameter.
In one embodiment of the present invention, the computerized color matching method can further include the steps of: extracting an object color from an object and visually presenting the extracted object color in the color swatch. The extracting step can include the steps of optically scanning the object. In consequence, the optical scanning can produce a digital image of the object. Subsequently, color specification parameters can be determined which correspond to colors in a selected region of the digital image. The determining step can include the step of computing color specification parameters based upon an average value of the color specification parameters determinable in the selected region. Finally, a color can be identified according to the determined color specification parameters. Notably, the identified color will correspond to the object color in the selected region.
In another aspect of the invention, the extracting step can include optically scanning the object, the optical scanning producing a digital image of the object; subdividing a selected region of the digital image into a plurality of color zones; determining color specification parameters corresponding to colors in a each color zone in the selected region of the digital image; and, identifying a color according to the determined color specification parameters, the identified color corresponding to the object color in the selected region.
The visual presentation step can include visually presenting each identified color in a color swatch. Also, the method can include computing average color specification parameters based upon color specification parameters computed for each color zone; and, identifying an average color according to the computed average color specification parameters. Hence, the visual presentation step also can include visually presenting the average color in a color swatch.
The subdividing step can include retrieving a user selectable pattern from a library of patterns, the pattern specifying a spatial arrangement of color zones; and, subdividing the selected region of the digital image into at least two color zones according to the retrieved pattern. The subdividing step also can include subdividing the selected region of the digital image into a pre-selected number of color zones according to the retrieved pattern;
In another embodiment of the present invention, the computerized color matching method can include the steps of first, accessing a product database containing images of products, wherein each product has a color. Second, products can be identified in the product database which have a color matching the second color identified by the color matching module. Finally, a selectable set of the identified products can be produced. In consequence, a user selection of at least one of the identified products in the selectable set can be accepted, responsive to which an image of the selected identified product can be displayed in the swatch user interface.
Moreover, in yet another embodiment of the present invention, the displayed image can be positioned next to the first color in the color swatch in the swatch user interface. Furthermore, a user selection of at least one of the identified products in the selectable set can be accepted, responsive to which information related to the selected product can be displayed. Alternatively, a user selection of at least one of the identified products in the selectable set can be accepted, responsive to which each user selected product can be added to a shopping cart and a check-out transaction can be processed for each user selected product in the shopping cart.
Significantly, the invention is not limited to a Web-based implementation. Rather, both local area network and wide area network implementations of the color search method are within the scope of the present invention. Similarly, a stand-alone version of the present invention, too, is withing the scope of the present invention.
There are presently shown in the drawings embodiments which are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown.
In the present invention, a program or set of programs can identify a color in either a visual or logical fashion. Once a color has been identified, the program or programs can submit related color data to a color search engine. The color search engine can match the color data with products offered for sale that have similar color characteristics. Images of the matching products subsequently can be presented. Advantageously, the color search engine not only can match colors that are similar to an identified color, but also the color search engine can match colors that are complementary to other colors based upon configurable preferences. The complementary color matching feature of the color search engine can facilitate a search for colors that combine well with a first selected color. In this case, the color search engine can use the color data of the first selected color to identify colors that combine well with the first selected color, and additionally, display those products that have the color characteristics of the identified colors.
The present invention can be implemented in a computing environment 51 as illustrated in
The user interface can be presented to the user within a window 1 of a browser, for example the Web browser 61 of
Referring again to
Once a color swatch has been selected, the user can change its color content by using the three controls 12 at the bottom of the screen 1. The controls 12 are indicative of a range of motion for the slider/indicators 13, and the slider/indicators 13 are movable along the range of each corresponding control 12. The user performs the action of changing the color content of the selected swatch by placing the screen pointer 16 over the slider/indicator 13, clicking on the pointing device's proper button and dragging the slider/indicator 13 along the control until the swatch color is changed to the user's satisfaction. Each of the three controls change a different color characteristic, the first control affecting the hue, the second the saturation and the third the brightness of the color contained within the selected color swatch 15.
For the saturation and brightness controls, the slider/indicator's position along the control is linearly related to the amount of saturation and brightness respectively that the color swatch will display. For the hue control, the slider/indicator's position at the left side of the control corresponds to a color angle of 0 degrees as defined in a Hue Color Wheel. Specifically, hue contrast can be defined using the HSB color model, where the hue of a color is represented as a circular, one-dimensional space that wraps around upon itself. Colors that are 180 degrees apart from each other on this Hue Color Wheel are complements of each other and share the least possible primary color content. Thus, the highest hue contrasts are obtained with two hues that are spaced 180 degrees away from each other on the Hue Color Wheeler.
In the present invention, the left side positioning of the slider/indicator 13 can correspond to a color angle of 0 degrees—e.g. pure red. Notably, the color angle can increase proportionally to the movement of the slider/indicator as the slider/indicator is moved toward the right until it reaches 360 degrees, this corresponding again to pure red. As any of the control sliders 13 can be dragged along the corresponding control 12, an indication of the current value of the control is displayed in the status area 20 of the Web browser. Moreover, the effect of the adjustment of the controls 12 can be displayed in the form of color changes in the selected color swatch 15.
The user is able to click and drag a selected color swatch around within the bounds of the work-screen area 11, juxtaposing the swatches in such a way as to make good judgements of the effectiveness or harmony of the colors contained in the swatches. When a color swatch is selected by clicking the pointer device's button when the screen pointer 16 is within its boundaries, its color values 21, which are representative of the hue, saturation and brightness levels of the swatch are displayed on the status display area 20 of the Web browser. Accordingly, the positions of the slider/indicators 13 are changed to correspond with the color values of the selected swatch along the corresponding controls 12.
Once a user is satisfied with a selection of colors, the user is able to save the contents of the work-screen area 11 by activating the Save Colors menu item 5, preserving all the color swatches, their color content and their positions within the work-screen area. When activating the Save Colors menu item 5, the user is presented with a dialog box, as shown in
The user is later able to retrieve this set of swatches by activating the Get Colors menu item 6. When the user activates the Get Colors menu, the user is presented with a dialog box as shown in
The Extract Color menu 7 allows the user to use a scanner, video camera or other similar device capable of capturing video images into a computer's storage and extract a color from the captured image. The user is then presented with a crosshair cursor that allow the user to enclose the area of the image that contains the desired color. The enclosed area can be subdivided into color zones for which corresponding colors values can be computed. Subsequently, a color swatch can be displayed for each color zone. Additionally, an average color value can be computed for the color values of each corresponding color zone. Alternatively, the system can compute an average set of color values for the color content of the entire enclosed portion of the image and places it into a new color swatch. The new captured color can then be matched as described before.
As shown in
As shown in
As shown in
When the user activates this menu, the system searches the database 54 depicted in
The user has the ability to click and drag the color swatches 14 and product sample images 17 anywhere inside the boundaries of the work-screen area 11, to arrange them in a way that is conducive to making good color comparisons and selecting color and product combinations that are aesthetically pleasing or desirable. Advantageously, the system can include a virtual shopping cart that contains the products the user has selected for check out. The Show Cart menu 10, when activated, places into the work-screen area 11 product sample images 17 of the products the user has selected for purchase. These product samples can then also be arranged at will anywhere around the work-screen area. As with the color swatches, the user is able to select a product sample 17. When a product sample is selected, an identifiable border is displayed around the product sample image 22 as an indication that the sample is selected.
The buy button image 18 is active when a product sample 22 is selected. When the buy button is clicked, the selected product sample is marked for purchase and placed in the virtual shopping cart. Likewise, the details button image 19 is active when a product sample 22 is selected. When the details button is clicked, the user is presented with detailed information about the product whose sample is selected. Such detailed information can include regular price, sale price, description, size, color, product code, catalog number, inventory availability and a more detailed image of the product item.
The DELETE, CLEAR and QUIT menu selections in menu 2 operate as follows. The DELETE entry will delete a selected color swatch or product sample; the CLEAR entry will clear the entire work-screen area of all color swatches and product samples and leave a blank work-screen; and the QUIT entry will terminate the use of the user interface of the system by closing the Web browser window in which the user interface is operating.
Referring to
The dragable sprite object 66 can be used to store the corresponding item's current position, status, pointers to event handler code, and boundaries of permitted movement. Every movable item on the swatch user interface window 62 can be associated with a single dragable sprite object 66 wherein each movable item and dragable sprite object 66 have a one-to-one correspondence. Each of the dragable sprite objects 66 can contain a pointer to an on-select event handler 68 and an on-drag event handler 68′. The on-select event handler 68 can be invoked as a result of a browser mouse-down event occurring when the screen pointer is within the screen area occupied by the corresponding movable item. The on-drag event handler 68′ can be invoked as a result of a browser mouse move event occurring when the screen pointer is within the screen area occupied by the corresponding movable item, but only if a corresponding mouse-down event has been detected.
The sprites object 65, preferably can be implemented as a singleton container object containing a collection of all dragable sprite objects 66 in use by the swatch user interface 62 at any point in time. The sprites object 65 can also include methods for manipulating the dragable sprite objects 66 in a consistent manner to effect the selection and movement of the corresponding items on the swatch user interface window 62, and to react to those actions appropriately by executing the corresponding event handlers in the dragable sprites object 66.
The color object 67 also can be implemented as a singleton container object. The color object 67 can store color-space data for a single color. Furthermore, the color object 67 can accept and return such color information in a variety of color-space formats. Thus, the color object 67 can facilitate color-space transformations. Initialization code 63 can instantiate each of the above identified objects. Additionally, initialization code 63 can initialize the main event handlers 64, in addition to the computing environment. The main event handlers 64 can capture appropriate browser events and generate proper responses to handle the swatch user interface 62 and manipulate movable items therein.
In the preferred embodiment, a collection of Web pages 72 resides in the server 69. The Web pages 72 contain event-driven programs referred to in the art as server-side scripts 70. Additionally, the Web pages 72 can contain the HTML elements of the swatch user interface 62. The server-side scripts 70 can respond to user requests, and interface with a products database 71 containing product details and color-space information for products.
In one particular implementation described herein, a user can begin by requesting the main swatch user interface page 70 from the server 69. The server 69 responds to this request by executing a server-side script 72 for verifying that the main swatch user interface page 70 is being requested from a valid source Web page. In addition, the server-side script 72 can initialize certain HTML elements of the response based on initial conditions. Upon successful validation and initialization, the server 69 can serve the Web page containing the swatch user interface 70 to the user or client.
Notably, in its source code form, the main swatch user interface page 70 can incorporate graphical elements 73 coded in HTML, server-side script code 72 for execution in the server 69, and client-side script code to be executed in the client 60. The client-side script code can include initialization code 63, main event handlers 64, and other objects and handlers 65, 66, 67 and 68. The graphical elements 73 and client-side script code, including those elements shown within the swatch user interface window environment 62, can execute in the client 60 in a Web browser 61.
When the Web browser 61 receives the main swatch user interface 70 from the server 69, the graphical elements 73 of the page are displayed by the Web browser 61, and the initialization code 63 is executed. The initialization code 63 creates the Javascript object referred to above as a sprites object 65, which can contain a collection of other Javascript objects referred to above as dragable sprite objects 66 that are used to display, control and reposition the color swatches, product samples and slider/indicators 13, 14, 15, 17 and 22 of
Another function of the initialization code is to create and initialize blank dynamic HTML (DHTML) elements 81 on the page as placeholders for the color swatches and product samples. These are comprised of a DIV element (HTML <DIV> tag) and an IMG element (HTML <IMG> tag) contained within the DIV element that is initialized to an empty, transparent image. Although these elements are generated dynamically in the initialization script, the equivalent resulting HTML code can be as follows.
where the numerical constants for top and left positions will vary for each element generated, and where the id's dv1 and ic1 will also vary for each element. Additional variations of this code may be needed to accommodate differences between Web browsers. This key set of HTML elements use CSS (Cascading Style Sheets) positioning and Dynamic HTML (DHTML) capabilities of modern browsers to enable the user interface code to change the color of the color swatches, and reposition the color swatches and product samples anywhere within the Web browser window without repainting the entire window. This is done by assigning values during code execution to the corresponding properties of any one of these DHTML elements.
The same technique is used to implement the movement of the slider/indicators 13 of
One dragable sprite object 66 can be created and assigned for every movable element on the user interface window. The properties of a dragable sprite object hold the following parameters.
The color properties for each DIV element preferably are not stored in the dragable sprite object 66, since this property is already stored and is easily accessible by interrogating the DHTML background color property of the element. The sprites object is a single container object that contains the total population of dragable sprite objects 66, and manages their creation and manipulation. Its primary properties hold a list of pointers to the dragable sprite objects 66, a name pointer to the currently selected dragable sprite object 66, and other auxiliary properties. The sprites object supports several methods as follows.
When the user activates the Add Color menu item 4 of
The sprites object 65 can continue to build the collection of dragable sprite objects 66 each time a new color swatch is added by the user through the Add Color action, thus maintaining information about all color swatches on the screen, including their current position. When a new color swatch is added, the previously selected color swatch must be deselected. This action is performed by
Once a color swatch is added, it becomes the selected swatch. The color of the swatch is set to an initial color having corresponding color parameters, for example 123, 50, 74. The user may change the selected swatch's color by clicking and dragging the color control slider/indicators 13 of
When the user first selects a slider/indicator in preparation for a dragging motion, the browser can trigger a mouse-down event. Such event is trapped by the main event handlers 64, which in turn invokes the select method of the sprites object 65, indicating to the software that the user may be preparing to move the slider/indicator. When the user attempts to drag the slider/indicator along its range, the dragging action causes the browser to trigger a mouse-move event. A portion of the main event handlers 64 traps this event, which in turn calls the move handler of the sprites object 65, which in turn calls the on-drag handler of the corresponding dragable sprites object 66, passing the new coordinates of the screen pointer to the on-drag handler for processing. The on-drag handler then uses these coordinates to compute a new value for the corresponding color-space parameter, and changes the background color of the DIV associated with the currently selected color swatch accordingly using DHTML capabilities of the browser.
Each of the three slider/indicators affects one of the HSB color space parameters corresponding to the color of the selected swatch. However, since the background color parameter for the DIV element that realizes the color swatch on the screen does not accept HSB values, a color object 67 is used to facilitate color space transformations. The color object 67 preferably is a singleton object that encapsulates a color value. This value can be stored or retrieved in either RGB, HSB or 24-bit packed RGB formats, allowing easy manipulation of color.
When the user activates the Save Colors menu item 5 of
The page requested from the server in the above steps then displays in the new browser window as in
The z-order parameter is a DHTML property of any DHTML element and is indicative of its ability to obscure other objects as they overlap positions on the screen. An element with a higher z order value always obscures one with a lower value when their positions overlap. Since the z-order of a color swatch or product samples is changed to be the highest of all the objects within the work-screen area when it is selected, the element with the highest z-order is the one that is currently selected.
When the server 69 receives the data posted by the form in the new window, a server-side script encodes the previously received encoded serialized data representing the color swatches currently on the user interface screen into a saved sets cookie 82 if one is already present, or into a newly created saved sets cookie 82 if one is not present. The saved sets cookie 82 is in turn sent back to the client for storage as a response to the user's submission. As the user saves more color sets, the information stored in this saved sets cookie 82 ultimately contains the data and names for all saved color sets existing on the client environment. Thus, every user's computer accessing this system can preserve its own unique color sets as saved by the user. The saved sets cookie 82 preferably can be structured as a data dictionary with key values corresponding to data sets. The key values are the color set names assigned by the user, and each corresponding data set contains the serialized data associated with the saved color set.
When the user requests a previously saved or a pre-defined color set, the server returns the serialized data corresponding with the color set embedded in a client-side function call argument as follows.
The client-side reloadColrs function is a routine that deserializes the encoded data and recreates the corresponding DHTML elements and dragable sprite objects 66 that correspond to the color set retrieved, thus reconstructing the contents of the screen work-area when the color set was saved.
Product samples are treated very much the same as color swatches. Each product sample is associated with a dragable sprite object 66 and a DHTML DIV element containing an IMG element. Each dragable sprite object 66 corresponding with a product sample is also contained within the sprites object 65. One notably difference between the implementation of a color swatch and a product sample is that the SRC property of a product sample's corresponding IMG element points to a non-transparent image of the product. Two images are provided for each product sample: one showing a selected border as shown in 21 of
The serialized data for a product sample can be slightly different than that of a color swatch. For a color swatch, the serialized data preferably contains the color content in 24-bit packed RGB. In the case of a color sample, the corresponding data element contains the name of the image file containing the image of the product sample, with the file extension excluded. Color values and image names are distinguished by using characters in the image name that cannot occur in a packed, ASCII-coded hexadecimal value. To fetch the selected version of the product sample image, an “s” is appended to the name.
Thus as shown above, the following encoded serialized data is interpreted as follows. Each movable element's data (a color swatch or a product sample) is delimited by a pipe (|) character. Each element's data has 5 parts, which are in turn delimited by a comma as shown below.
The extract color menu 7 provides a user interface for performing a color extraction process. Specifically, in the preferred embodiment, an optical scanner can be linked to the system through a TWAIN interface. Through the TWAIN interface, the optical scanner can be commanded to scan a colored object, the scanning resulting in a digitized image of the colored object. Subsequently, the color can be extracted from a selected portion of the digitized image and provided to the system. Preferably, the extracted color can be visually disposed in a color swatch.
Notably, the selected portion of the digitized image can be subdivided into smaller areas referred to as color zones. Each color zone can have a geometrically uniform or non-uniform shape for example a square, rectangle, octagon, etc. As a result, a color can be extracted for each color zone using only data associated with the color zone. Finally, a color swatch can be generated for each of the color zones and placed in the work-screen area. Additionally, an average color for all of the color zones can be computed and visually displayed in a color swatch.
In one implementation of the color extraction process, the color zones can have uniform geometric shapes matching the shapes of items that will be used to assemble a finished work, such as a quilt, a stitching project, or a project involving paint or beads. In the case of a quilt, for instance, the color zones can be geometrically shaped to match the shape of those portions of fabric used to form the quilt. In this way, fabric colors of a quilt can be selected to accurately match the color of an accessory, for example curtains or a lamp. More particularly, the accessory can be scanned from which a set of color swatches can be displayed on the work-screen area. Notably, the color swatches can include both the color swatches for the color zones in addition to a color swatch for the entire selected portion of the accessory. Subsequently, fabric data and imagery can be retrieved from a database and displayed in the work-screen area. Significantly, the fabric data and imagery retrieved can match not only the colors of the swatches of corresponding color zones, but also the colors of the swatch for the entire selected portion of the accessory.
A further implementation of the color extraction process, can include a library of geometric shapes and patterns of shapes for use in subdividing a selected portion of a scanned object into color zones. In particular, patterns in the library can include stitching patters or bead patterns, to assist in matching the overall color scheme of a multi-colored fabric or bead arrangement. For instance, in the case of the bead pattern, the pattern can include shapes formed according to the shape of each bead and the stitch used to assemble the beads.
In operation, a user can browse or search the library of patterns from which a pattern can be chosen. Once a pattern has been chosen, the user can specify a number of shapes to be included in the pattern. Finally, the user can select a portion of the scanned image as displayed on the work-screen area. In consequence, the selected portion can be subdivided into the specified number of smaller areas having the specified shape and arrangement according to the pattern selected from the library.
The match color process invoked by menu item 8 in
In the preferred embodiment of the invention, the color match script performs the following transformations: For hue, the transformation can be described by the formula Hn=Hs+Sr×(deltaH+R×rnd) where Hn is the new hue, Hs is the hue of the currently selected color swatch, Sr is a randomly generated value that is either +1 or −1, deltaH is a hue displacement value that is dependent on the user's desired contrast selection as described below, R is a randomizing scalar as described below, and rnd is a random value between −0.5 and 0.5.
The value of deltaH is selected to deflect the new hue to a place on the color circle that is proportionally displaced from the current hue according to the user's selection. For a high hue contrast H, a half circle displacement is selected, for medium M 120 degrees, 60 degrees for low L, and 0 for S. R is simply a randomizing constant that establishes the maximum value of the random component of deflection for the new hue from the current hue. So for example, for a high, medium or low hue contrast selection, the displacement will be randomized by <15 degrees. When the user selects no hue contrast, R is set up so that only a small random component is introduced of <5 degrees just to introduce a small variance between the current and new colors, while maintaining the general hue of the current color.
In the more advanced implementation illustrated by the choices shown in
For brightness, the transformation used in the preferred embodiment is similar to that of hue, except that the range of the brightness parameter has an upper bound of 100% and a lower bound of 0%. For a high level of contrast, a 50% nominal deviation from the current color's brightness is selected, followed by 33%, 17% and 0% for medium, low and same selections respectively as illustrated in
where randS is a randomizing value, cS is the resulting saturation value and deltas is selected according to the user's selection as follows:
The last “if” statements ensure that the resulting values are not above 100% or less than 0%. If they are, the resulting value is further transformed. Since saturation values below about 20% tend to look gray with brightness values less than 50%, the resulting value is further scaled for the conditions that the resulting saturation value is below 35% as follows.
Significantly, the present invention is not limited to the above-described color matching algorithms. Rather, the above-described algorithms are determinable on the basis of best empirical performance for a particular application. Notably, many similar transformations are possible to optimize results on different applications. Accordingly, other suitable algorithms for color matching can be substituted for those algorithms described above.
The match product process invoked by menu item 9 in
where s is the saturation parameter value for the currently selected color swatch, Color_Saturation is the name of the corresponding saturation parameter in the database, b is the brightness parameter value for the currently selected color swatch, Color_Brightness is the name of the corresponding brightness parameter in the database, and the hue parameters are substituted based on the algorithm described below.
The expressions “BETWEEN b−5 AND b+5” and “BETWEEN s−5 AND s+5” establish a <5 search range for the corresponding brightness and saturation parameters. The result is that the database will return the item ID's for items whose brightness and saturation parameters are within <5 of the values b and s respectively.
Since the hue dimension of the color is circular, a SQL statement cannot provide a simple search range description with the use of the BETWEEN construct as was used for the brightness and contrast parameters. This is because in the database, the hues must be stored using a single arbitrary valid range of color angle values, although the range of −2<<0<2<is desirable to express ranges that span across the 0 degree point. However, the range −2<<0 <2<has duplicate values or points on the circle, precluding the use of single unique values for each item in the database. For example, the values −10 degrees and +350 degrees constitute an equivalent point on the circle, but the most expedient way to store these values is to use a single value corresponding to the first 0 to 2<cycle of the circle, or 0 to 360 degrees. Therefore, in SQL, the clause “BETWEEN −10 and 5” would fail, since there would be no negative values in the database. Similarly, the clause “BETWEEN 5 and 350” would yield erroneous results, because it would fetch items with hue values completely outside the desired range, as in 102 of
Referring to
By dividing the circle into the right number of equal segments, the search tolerance can be adjusted as desired. In the preferred embodiment, the circle is divided into 72 segments of 5 degrees, providing a search variability of <10 degrees. As a result, a user may find an item in the database whose hue characteristics are within <10 degrees of the currently selected color swatch, (the desired color). This is an adequate tolerance for most applications, but it can obviously be adjusted for more precision, without placing additional burden on the database.
When the database returns a set of records matching the desired criteria, the server-side script presents the available choices to the user in a dynamically created page, showing the sample images and descriptions of the matching items. The items listed should closely match the desired color characteristics exhibited by the currently selected color swatch. The user may then select one or more items to place in the work-screen area 11 of
The show cart menu entry 10, is implemented by fetching the item ID's for product items already in the virtual shopping cart, and calling procedures similar to those described herein to incorporate a new color swatch. Slight variations of the code account for the differences in the images used, and the parameters stored in the corresponding dragable sprite object 66. The corresponding on-drag and on-select handlers are similar also, except that they do not update the positions of the slider/indicators when a selection occurs.
The above then shows an innovative method using a Web browser and a server, providing the capability of selecting colors and displaying them as movable color swatches; searching for additional colors that harmonize in some arbitrary fashion with the selected color; searching for product items that approximate the color characteristics of a selected color swatch; displaying said product items as movable product sample images, saving and retrieving the color swatches and product samples and retaining their color content, relative positions and z-order; displaying product samples for those product items that are in the process of being purchased by the user; and selecting displayed product samples for purchase.
This application is a continuation of U.S. patent application Ser. No. 10/465,080, filed Jun. 19, 2003, currently, which is a continuation of U.S. patent application Ser. No. 09/702,103, filed on Oct. 30, 2000, now abandoned, which claims the benefit of U.S. Provisional Application No. 60/196,426, filed Apr. 12, 2000.
Number | Date | Country | |
---|---|---|---|
60196426 | Apr 2000 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10465080 | Jun 2003 | US |
Child | 11061381 | Feb 2005 | US |
Parent | 09702103 | Oct 2000 | US |
Child | 10465080 | Jun 2003 | US |