ARTIFICIAL INTELLIGENCE IN VIRTUALIZED FRAMING USING IMAGE METADATA

Abstract
Disclosed are various embodiments for employing artificial intelligence to programmatically generate virtual frames that are aesthetically pleasing. A computing device may include an inference engine and a knowledge base to identify characteristics of a provided image. A virtual frame may be programmatically generated based on the characteristics of the image, expert design criteria stored in the knowledge base, and a consumer's subjective and personal design preferences.
Description
FIELD OF THE INVENTION

This application relates to artificial intelligence, computer vision, and machine learning and, more specifically, the use of an inference engine and a knowledge base to programmatically generate an image of a customized product, as if assisted by the decision-making ability of a human expert. The customized product may include a customized virtual frame programmatically generated based on a desired subject of the frame that includes, for instance, a programmatically determined frame, moulding, matboard, glazing, fillet, liner, or other property of a frame.


BACKGROUND

In artificial intelligence, an expert system is a computer system that emulates the decision-making ability of a human expert. Traditional expert systems may include, for example, an inference engine and a knowledge base. Using a knowledge base that includes predetermined facts, an inference engine may evaluate information stored in the knowledge base, apply relevant rules, and assert new knowledge into the knowledge base.


Custom framing is the process of placing an item, such as a piece of artwork, a mirror, a diploma, etc., in a frame with or without decorative additions. Decorative additions may include items commonly used in custom framing such as mouldings, matboards, glazings, fillets, liners, etc. It is challenging for consumers to understand how to customize a frame with the myriad of options available, what materials and colors best suit specific art styles and how to confidently create the best design. It is not practical nor cost effective to have an expert designer assist consumers in every configuration of a frame. Existing systems categorize particular options for use in generating a recommendation, for example, by categorizing mouldings, matboards, glazings, etc., as “modern” or “bright colors” and making recommendations accordingly. However, existing systems still generate recommended products that are visually unpleasant, unappealing, or are aesthetically inconsistent with a subject of the frame, such as a piece of artwork, a mirror, or a diploma. Accordingly, generating aesthetically pleasing product configurations during virtual product configuration remains problematic.





BRIEF DESCRIPTION OF THE DRAWINGS

Many aspects of the present disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, with emphasis instead being placed upon clearly illustrating the principles of the disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.



FIG. 1 is a diagram of an example user interface rendered by a client device according to various embodiments of the present disclosure.



FIG. 2 is a drawing of a networked environment according to various embodiments of the present disclosure.



FIGS. 3-6, 7A, 7B, and 8-20 are pictorial diagrams of example user interfaces rendered by a client device in the networked environment of FIG. 2 according to various embodiments of the present disclosure.



FIGS. 21A and 21B are drawings of client devices capable of rendering the user interfaces of FIGS. 3-20 in the networked environment of FIG. 2 according to various embodiments of the present disclosure.



FIGS. 22A, 22B, 23, and 24 are flowcharts illustrating examples of functionality implemented by the virtual framing system executed in the networked environment of FIG. 2 according to various embodiments of the present disclosure.



FIGS. 25-26 are tables illustrating example weight methodologies that may be employed by the virtual framing system in generating recommendations according to various embodiments of the present disclosure.



FIGS. 27-29 are drawings depicting pseudo-code that may be employed by the virtual framing system in generating recommendations according to various embodiments of the present disclosure.



FIG. 30 is flowchart illustrating an example of functionality implemented by the virtual framing system executed in the networked environment of FIG. 2 according to various embodiments of the present disclosure.



FIG. 31 is a schematic block diagram that provides one example illustration of the computing environment of FIG. 2 according to various embodiments of the present disclosure.





DETAILED DESCRIPTION

The present disclosure relates to employing artificial intelligence in virtualized framing using image metadata to programmatically generate virtual frames. Custom framing is the process of placing an item, such as a piece of artwork, a mirror, a diploma, etc., in a frame with or without decorative additions. Decorative additions may include items commonly used in custom framing such as mouldings, matboards, glazings, fillets, liners, etc. Many systems exist that allow consumers to configure a product. These systems may account for compatibilities (or incompatibilities) of one component with another. However, those systems generally only account for physical capabilities (e.g., whether a particular doorknob is compatible on a particular type of door) or whether the items are in stock. Selection of a frame and its subcomponents, however, is traditionally guided by aesthetics and visual appeal, which are subjective in nature. To date, no systems account for aesthetic compatibilities while leveraging information provided by design experts through use of an inference engine and a knowledge base. Moreover, no systems account for a consumer's subjective and personal design preferences.


Consequently, embodiments described herein are directed towards improvements in aesthetic recommendation technology, namely leveraging artificial intelligence to generate virtual frames using compatibilities (or incompatibilities) specified by expert designer's through a knowledge base, while also accounting for a consumer's subjective and personal design preferences. According to various embodiments, a computing device, such as a server, may implement an expert design system using an inference engine and a knowledge base. The computing device may access a digital image having metadata, where the metadata is leveraged to generate a virtual frame recommendation that is aesthetically pleasing in light of the characteristics of the digital image. For instance, if a user uploads a modern and abstract photograph while customizing a frame, the computing device may leverage artificial intelligence to generate a virtual frame that is aesthetically functional with the modern and abstract photograph.


To this end, the metadata of the digital image may be leveraged by the computing device to determine various characteristics of the digital image, such as a time the digital image was created, whether the digital image is a photograph captured by a particular type of camera, a location where the digital image, or photograph, was taken, etc. Additionally, a color detection algorithm may be employed to identify colors used in the image where colors meeting a usage threshold may be identified. In other words, the most dominant colors or most focal colors in an image may be determined and used in programmatically suggesting components for a virtual frame. Information programmatically identified from the digital image, such as the dominant colors, may be added to the metadata for use in a current or future programmatic recommendation.


In some embodiments, the inference engine may have a margin of error indicative of the inference engine being uncertain of a characteristics of a digital image. In this regard, additional information pertaining to the digital image may be requested after an upload of the digital image. For instance, a verification of the dominant colors of or a style of a photograph may be obtained. The metadata pertaining to the digital image may be updated to include the additional information for use in a current or future programmatic recommendation.


Various components of a virtual frame may be identified by the inference engine, for example, to display in association with the digital image in a user interface. To this end, the inference engine may leverage a knowledge base having expert design data stored therein, subjective data pertaining to a user performing the configuration of the virtual frame, characteristics of the digital image, as well as other information described herein.


Accordingly, a virtual framing system may provide for a customization of a virtual frame by making suggestions that are aesthetically pleasing based on the subject of the frame, the subjective preferences of a consumer, and expert design recommendations. The virtual framing system provides a network-based computer expert system for custom framing that guides a consumer through an interactive design process of evaluation, collaboration, and selection. In addition, it allows the consumer to browse suggested design templates and educates the consumer with best design tips, best classes of products, best prices, or other product information.


In the following discussion, a general description of a virtual framing system that employs artificial intelligence in a virtualized framing process and its components is provided, followed by a discussion of the operation of the same.


With reference to FIG. 1, shown is a diagram of an example user interface rendered by a client device, such as a personal computer or a mobile device, according to various embodiments of the present disclosure. In the non-limiting example of FIG. 1, a visualization of a frame may be rendered on the client device for its customization and potential purchase where the user interface is generated by a virtual framing system. To this end, a virtual framing system may be described as a system that permits the customization of a frame while enabling a user to upload his or her own digital image (or import one or more through a social network) which may be included and shown as a subject of the frame. The digital image may include a photograph, a painting, a collage, a diploma, or other image as may be appreciated.


The virtual framing system may leverage artificial intelligence to generate or recommend a virtual frame that is aesthetically consistent with the specified digital image while using expert designer recommendations stored in the form of a knowledge base, also while accounting for a consumer's subjective and personal design preferences. For instance, when a digital image is uploaded (or imported) into the virtual framing system, a computing device, or server, may access the digital image for analysis. Various characteristics of the digital image may be identified from metadata embedded in the digital image. Additionally, a style detection mechanism as well as a color detection mechanism may be employed to identify one or more styles or colors of the digital image. For instance, colors identified in the digital image may be ranked to identify which of the plurality of colors meet a usage threshold indicating which colors are the most relevant, focal, or dominant.


The virtual framing system may ultimately generate a virtual frame that is aesthetically pleasing based on the characteristics of the digital image, expert design recommendations, or personal design preferences. Generating a virtual frame, as shown in FIG. 1, may include identifying, for example, particular choices or combinations of frames, mouldings, matboards, glazings, fillets, liners, etc., as will be discussed in greater detail below.


With reference to FIG. 2, shown is a networked environment 200 according to various embodiments. The networked environment 200 includes a computing environment 203, a client device 206, and one or more external services 207, which are in data communication with each other via a network 209. The network 209 includes, for example, the Internet, intranets, extranets, wide area networks (WANs), local area networks (LANs), wired networks, wireless networks, or other suitable networks, etc., or any combination of two or more such networks. For example, such networks may comprise satellite networks, cable networks, Ethernet networks, and other types of networks.


The computing environment 203 may comprise, for example, a server computer or any other system providing computing capability. Alternatively, the computing environment 203 may employ a plurality of computing devices that may be arranged, for example, in one or more server banks or computer banks or other arrangements. Such computing devices may be located in a single installation or may be distributed among many different geographical locations. For example, the computing environment 203 may include a plurality of computing devices that together may comprise a hosted computing resource, a grid computing resource and/or any other distributed computing arrangement. In some cases, the computing environment 203 may correspond to an elastic computing resource where the allotted capacity of processing, network, storage, or other computing-related resources may vary over time.


Various applications or other functionality may be executed in the computing environment 203 according to various embodiments. Also, various data is stored in a data store 212 that is accessible to the computing environment 203. The data store 212 may be representative of a plurality of data stores 212 as can be appreciated. The data stored in the data store 212, for example, is associated with the operation of the various applications and/or functional entities described below.


The components executed on the computing environment 203, for example, include a virtual framing system 215, which may include an inference engine 218, an export application 222, as well as other applications, services, processes, systems, engines, or functionality not discussed in detail herein. In various embodiments, the inference engine 218 may further include an image analysis engine 221, a color detection engine 224, a style detection engine 227, as well as other applications, services, processes, systems, engines, or functionality not discussed in detail herein.


Generally, the virtual framing system 215 is executed to leverage artificial intelligence to programmatically generate a virtual frame that is aesthetically consistent with a digital image while using expert designer recommendations stored in the form of a knowledge base 230, also while accounting for a consumer's subjective and personal design preferences. In addition, the virtual framing system 215 may be executed in order to facilitate the online purchase of a customized frame over the network 209 via an electronic marketplace. The virtual framing system 215 also performs various backend functions associated with the online presence of a merchant in order to facilitate the online purchase of customized frames, as will be described. For example, the virtual framing system 215 generates network pages 233, such as web pages or other network content, accessible through a network site 235 or domain for the purposes of customizing a frame.


The inference engine 218 may include logic that applies logical rules to the knowledge base 230 and realizes “new knowledge” given a set of circumstances, for example, not previously analyzed by the inference engine 218. In some embodiments, the inference engine 218 may implement forward chaining while, in other embodiments, the inference engine 218 implement backward chaining, either of which may be employed through a series of IF-THEN statements. For example, if a digital image 239 is analyzed as having a tree, the progressions of IF-THEN statements may be described as:


If the digital image includes a tree, the digital image is a landscape; If the digital image is a landscape, classical or natural styles should apply;


If classical or natural styles should apply, bright colors should not be used, and so forth.


The image analysis engine 221 is executed to access digital images 239a . . . 239b (collectively “digital images 239”) to determine various characteristics of the digital images 239. In one embodiment, the image analysis engine 221 analyzes metadata 242 included in a header, footer, or other portion of a digital image 239. Such information may include, for example, a file format (e.g., JPEG, PNG, TIFF), an image resolution (e.g., 3000×2000 for a 6 megapixel image), image encoding (e.g., RGB), contrast data, saturation data, lighting data, whether a camera flash was on or off during a photograph, a distance from the camera to the subject, a shutter speed, an aperture, and location information (e.g., a longitude and latitude obtained from a global positioning system (GPS) available in some cameras). Traditionally, the metadata 242 is included in a header or at the beginning of a file. Additionally, the image analysis engine 221 may utilize information stored in an exchangeable image file (EXIF), international color consortium (ICC) profile, international press telecommunication council (IPTC), print image matching (PIM), PIM II, or other appropriate format.


The color detection engine 224 is executed to examine a digital image 239 and its metadata 242 to identify colors located within the digital image 239. The colors identified in the digital image 239 may be ranked by the virtual framing system 215 to identify which of the plurality of colors meet a threshold indicating which colors are the most used, relevant, dominant, or focal. According to one embodiment, colors detected in the digital image 239 may be categorized as focal, accent, or neutral (FAN) colors, although it is understood additional categories may be used.


The style detection engine 227 is configured to examine a digital image 239 and its metadata 242 to identify styles associated with the digital image 239, where styles may include, for example, urban, contemporary, traditional, transitional, classic, modern, gallery, surreal, photorealism, or other category. In some embodiments, the style detection engine 227 identifies artifacts, regions, or potential objects based on hexadecimal value variations to compare to a catalogue of images 245 in the knowledge base 230, where each of the images in the catalogue has known style categories. For instance, if a digital image 239 includes a tree, the style detection engine 227 may recognize that the digital image 239 is a painting or a photograph of a landscape, as determined based on a comparison with landscapes stored in the catalogue of images 245.


Based on an analysis of a digital image 239 by the components of the inference engine 218, the inference engine 218 may programmatically generate a virtual frame in the form of a recommendation. The virtual frame may include, for example, a particular combination of a frame border, moulding, matboard, glazing, fillet, liner, etc. determined according to rules specified in the knowledge base 230.


The export application 222 is executed to export data from the virtual framing system 215 according to one or more predefined formats. In addition, the export application 222 is configured to generate one or more purchase orders respective of a fulfillment party automatically determined for a user or selected by the user. The purchase orders may comprise, for example, data corresponding to a finalized frame customization process, such as item numbers, colors, sizes, specifications, etc. for particular choices or combinations of mouldings, matboards, glazings, fillets, liners, etc., defined by the user during a customization process. The purchase orders may be generated purchase order documents that may be sent to fulfillment parties for fulfillment of construction of the customized frame. In addition, the purchase orders may be generated according to electronic data interchange (EDI) standards provided by or otherwise stored in association with a respective fulfillment party. The export application 222 may also operate or provide one or more application programming interfaces (APIs) that enables the virtual framing system 215 to interact with external services 207.


Fulfillment parties may comprise, for example, virtual partners associated with the virtual framing system 215 that may fulfill purchases generated by the users of the virtual framing system 215. Thus, according to various embodiments, after completion of a customized framing process, a user may be prompted to select a fulfillment party based on a proximity of the fulfillment party to the user or an estimated cost of the fulfillment. For example, the user may be prompted to provide a zip code in which the user resides. The virtual framing system 215 may determine the frame shops located with a certain distance of the zip code and may present a list of the frame shops to the user along with an estimate of the fulfillment for each of the frame shops. A purchase order may be generated according a selected on the frame shops within the list. The purchase order may be generated according to a predefined format identified by the selected frame shop and stored in data store 212.


The data stored in the data store 212 includes, for example, a knowledge base 230, and potentially other data. The knowledge base 230 may comprise, for example, digital images 239, the catalogue of images 245, user profile data 248, expert design data 252, as well as other data. User profile data 248 may include “subjective data” (subjective data 255) which includes personal or subjective preferences associated with a user or user account. The subjective data 255 may include historical data determined based on previous frame configurations, digital images 239 imported, weighted selections made in a design style quiz, or other information. The subjective data 255 may be described as a design profile for a user account, as can be appreciated. The subjective data 255 may be used by the virtual frame system 215 to determine a relevant portion of the expert design data 252 to use when programmatically identifying components of a virtual frame.


Digital images 229 may include, for example, digital images uploaded or shared with the virtual framing system 215 or public artwork made available by the virtual framing system 215. Each digital image 239 has metadata 242 associated therewith that may be used in generating a virtual frame.


Expert design data 252 may include, for example, rules employed by the inference engine 218 that are consistent with design recommendations made by design experts. To this end, expert design data 252 may specify color, style, and category compatibilities (and incompatibles) which ultimately causes the inference engine 218 to follow best design practices. For example, particular FAN colors may be identified in a digital image provided by a user during a frame customization process. According to the FAN colors, certain colors, sizes, or textures of frames, mats, or fillets may be used in programmatically generating a virtual frame. As styles tend to change, the expert design data 252 may be updated with up-to-date style recommendations without affecting the functionality of the virtual framing system 215.


The client device 206 is representative of a plurality of client devices that may be coupled to the network 209. The client device 206 may comprise, for example, a processor-based system such as a computer system. Such a computer system may be embodied in the form of a desktop computer, a laptop computer, personal digital assistants, cellular telephones, smartphones, set-top boxes, music players, web pads, tablet computer systems, game consoles, electronic book readers, “smart” devices such as “Smart TVs,” kiosk computing devices, scrolling marquee devices, or other devices with like capability. According to various embodiments in which the client device 206 comprises a marquee device, such as a scrolling marquee device, the marquee device may be configured to display, utilizing audio or video in association with a user interface, an advertising for a plurality of predefined custom frame combinations, a tutorial for a plurality of best design concepts, and advertising for a plurality of new product designs, each of which may be accessed from the data store 212. The client device 206 may include a display 266. The display 266 may comprise, for example, one or more devices such as liquid crystal display (LCD) displays, gas plasma-based flat panel displays, organic light emitting diode (OLED) displays, electrophoretic ink (E ink) displays, LCD projectors, touch screen displays, or other types of display devices, etc.


The client device 206 may be configured to execute various applications such as a client application 269 or other applications. The client application 269 may be executed in a client device 206, for example, to access network content served up by the computing environment 203 and/or other servers, thereby rendering a user interface 272 on the display 266. To this end, the client application 269 may comprise, for example, a browser, a dedicated application, etc., and the user interface 272 may comprise a network page 233, an application screen, etc. According to various embodiments, a dedicated application may comprise, for example, an application configured to be executed on the Android® operating system (Android), the iPhone® operating system (iOS), the Windows® operating system, or similar operating systems. The client device 206 may be configured to execute applications beyond the client application 269 such as, for example, email applications, social networking applications, word processors, spreadsheets, and/or other applications.


Next, a general description of the operation of the various components of the networked environment 200 is provided. To begin, the virtual framing system 215 may access a digital image 239 provided by or otherwise selected by a user of the virtual framing system 215. The colors of the digital image may be examined on a pixel-by-pixel basis to identify unique colors located within the digital image. The colors identified in the digital image may be ranked to identify which of the plurality of colors meet a predefined threshold indicating which colors are the most relevant or dominant colors in the digital image. By utilizing the most dominant colors of the digital image, the virtual framing system may subsequently generate recommendations, such as expert design recommendations, to be presented to the user by comparing the most dominant colors to one or more predefined design templates that may be stored in a data store or like memory.


Further, the recommendations may be based at least in part on user input provided during the customization process, such as a treatment of art (e.g., watercolor, charcoal, photography), the style of the art (e.g., traditional, contemporary, transitional), a medium on which the art is printed (e.g., canvas), user preferences determined utilizing a style quiz (e.g., user preferences towards monochromatic, achromatic, and/or complimentary designs), a size of the art, a condition of the art, and/or other information. The recommendations may include, for example, particular choices or combinations of mouldings, matboards, glazings, fillets, liners, etc., and/or colors and textures thereof, for presentation to the user as will be discussed in greater detail below.


The recommendations generated by the virtual framing system 215 may be encoded in one or more user interfaces 272 such as a network page 233 or a client application 269. The user interface 272, or data used in generating the user interface 272, may be sent to the client device 206, such as a computer or mobile device, for rendering.


Referring next to FIG. 3, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. As discussed above, it is beneficial for the virtual framing system 215 to generate custom framing visualizations that may be useful to a customer during a purchase of a frame. It may be beneficial to authenticate a user prior to granting the user access to the virtual framing system 215 although authentication of the user may be optional in various embodiments. Accordingly, in FIG. 3, an authentication component 303 may be utilized to authenticate a user by prompting the user to provide various authentication information. In the non-limiting example of FIG. 3, a user may be prompted for a username and a password utilizing, for example, a username field 306 and a password field 309. Although the user interface 272 of FIG. 3 is configured to authenticate a user utilizing at least a username and password, the present disclosure is not so limited. For example, authentication may be based at least in part on a user's internet protocol (IP) address, biometric data, network cookies, etc.


Turning now to FIG. 4, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. As discussed above, the virtual framing system 215 may access a digital image provided by or otherwise selected by a user of the virtual framing system. Accordingly, a user may be prompted to determine whether to provide a digital image or to select an image from one or more predefined images. In the non-limiting example of FIG. 4, a user may engage component 403 which may initiate a rendering of one or more user interfaces 272 that are configured to facilitate an ingestion process whereby a user provides the virtual framing system 215 with a digital file, as will be discussed in greater detail below with respect to FIG. 5. For example, a user may be prompted to upload a digital image locally stored on the user's computer (e.g., the client device 206).


Alternatively, the user may engage a component 406 to initiate a rendering of one or more user interfaces 272 that are configured to assist the user in making a selection of a predefined piece of art accessed from the data store 212, as will be discussed in greater detail below. In certain scenarios, the user may desire to purchase a frame for a mirror as opposed to a frame for a piece of artwork. By engaging component 409, a rendering of one or more user interfaces 272 that are configured to assist the user in making a selection of a mirror may be initiated.


Moving on to FIG. 5, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. As discussed above with respect to FIG. 4, a user may be prompted to determine whether the user desires to provide a digital image to generate a customized frame for the digital image. For example, in the event a user has indicated the desire to provide a digital image (e.g., by engaging component 403 in FIG. 4), the user interface 272 of FIG. 5 may subsequently be rendered. In the non-limiting example of FIG. 5, a user may engage component 503 which may initiate a capture of the digital image although the digital image may otherwise be uploaded if the digital image already exists. By engaging the capture component 503, a process may be initiated whereby the user captures the digital image of the art utilizing, for example, a capture device such as a webcam, digital camera, tablet camera, phone camera, etc.


In the event the user has successfully provided the digital image via the capture device (or via an upload if the digital image was preexisting), the digital image may be dynamically rendered in the visualization region 506 utilizing asynchronous JavaScript and extensible markup language (AJAX) or similar technology.


The successful provision of the digital image by the user may enable further features in the user interface 272 of FIG. 5. For example, a customization component 509 may facilitate a modification of the digital image by providing the user with the ability to rotate or crop the digital image. Further, the user may provide a title of the digital image using a title field 512. The title of the digital image may be used, for example, in accessing a saved framing process in future framing sessions, as will be discussed in greater detail below.


A condition field 515 may prompt a user to provide a condition of the digital image that may be used in generating recommendations for particular frames, mouldings, matboards, glazings, fillets, liners, etc. For example, a user may provide via the condition field 515 whether the art subject of the digital image comprises a tear, a fade, a water coloring, etc. A condition notes field 518 may grant the ability to provide customized notes that may be saved in association with the digital image and/or the framing process. The condition notes provided by the user via the condition notes field 518 may be used, for example, in accessing a saved framing process in future framing sessions.


Further, the user may be prompted to provide a material and an art style of the art subject to the digital image via a materials component 521 and an art style component 524, respectively. A size component 527 may prompt the user to provide an existing or desired size of the art subject of the digital image. For example, the size component 527 may be configured to permit the user the ability to define a width and/or a height according to a respective metric. According to various embodiments, the size component 527 may be configured to maintain scale ratios according to the digital image provided to the virtual framing system 215. Accordingly, a custom frame component 530 may be engaged by the user to initiate the rendering of one or more additional user interfaces to provide custom frame dimensions.


Referring next to FIG. 6, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 6, a plurality of recommendations 236b, 236c, 236d, 236e, and 236f may be generated by the virtual framing system 215 according to at least the user input provided via the user interface 272 of FIG. 5.


As discussed above, the colors of the digital image may be examined on a pixel-by-pixel basis to identify unique colors located within the digital image. The colors identified in the digital image may be ranked to identify which of the plurality of colors meet a predefined threshold indicating which colors are the most relevant and/or most dominant colors in the digital image. By utilizing the most relevant colors of the digital image, the virtual framing system 215 may generate recommendations to be presented to the user by comparing the most relevant and/or most dominant colors to one or more predefined best design templates that may be stored in a data store. The recommendations may include, for example, particular choices or combinations of mouldings, matboards, glazings, fillets, liners, etc. In the non-limiting example of FIG. 6, the generated recommendations a-f comprise, for example, a frame 606, a mat 609, as well as the digital image provided by the user. A zoom component 612 may facilitate an increase of a size of the recommendation in the user interface 272 for a better inspection by the user.


In the event a user desires to purchase one of the recommendations, such as a best design recommendation, the user may engage a purchase component 615 that may initiate the rendering of one or more additional user interfaces 272 that conduct a checkout process, as will be discussed in greater detail below. Alternatively, the user may desire to further customize a respective recommendation by engaging the customize component 618 that may generate one or more additional user interfaces 272 that facilitate the customization of the respective recommendation, as will be discussed in greater detail with respect to FIGS. 7A-B and FIGS. 14-25. Similarly, if a user desires to create a new design independent of one of the generated recommendations, the user may engage an alternative customize component 621 that facilitates the customization of a frame, as will be discussed in greater detail with respect to FIGS. 7A-B and FIGS. 14-25.


Turning now to FIG. 7A, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 7A, the user interface 272 may be configured to customize a selection of a mat, if desired by the user during a customization process. A visualized mat and fillet region 703 may facilitate the navigation between respective mat or fillet options during the customization process of a user. For example, the user may have indicated that the user would like up to three mat options during his or her customization process. Accordingly, the visualized mat and fillet region 703 may generate up to three mat or fillet options that, when engaged, facilitate a selection of a respective mat or fillet for the engaged portion of the frame. For example, by engaging the innermost mat, a selection region 706 may be generated providing a plurality of recommended mats or fillets. By engaging a respective mat or fillet in the selection region 706, the corresponding mat or fillet in the visualized mat and fillet region 703 may be updated dynamically, as well as the corresponding mat or fillet in the visualization region 506, utilizing AJAX or similar technology. The recommended mats or fillets within the selection region 706 may be generated, for example, utilizing at least the most relevant and/or most dominant colors identified in the digital image provided by or otherwise selected by the user, as will be discussed below with respect to FIGS. 22A-B.


A search field 709 provides the user the ability to search for particular items, such as frames, mouldings, matboards, glazings, fillets, liners, etc. utilizing, all with immediate visibility and configuration, for example, an item name or item number. An item details region 712 is configured to provide information about a selected item 715 in the selection region 706. For example, a user may engage a particular item in the selection region 706 utilizing, for example, a cursor 718. The item details region 712 may dynamically update to provide the user information about the selected item 715. In addition, a dialog 721 may be generated to provide the user with a name, color, and/or item number corresponding to the selected item 715.


A status component 724 of the user interface 272 may be configured to provide the user the ability to save or print the current framing process, as may be appreciated. In addition, the status component 724 may be configured to provide the user the ability to proceed to a checkout process that may facilitate the purchase of the customized frame as shown in the visualization region 506. A navigation region 727 may facilitate user-controlled navigation between respective phases in the customization process. For example, by engaging a respective portion of the navigation region 727, the user may be redirected to a user interface 272 corresponding to the engaged portion, such as the user interface 272 of FIGS. 7A-B configured to facilitate the selection of a mat.


Referring next to FIG. 7B, shown is a pictorial diagram of another example user interface 272b rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. The non-limiting example of FIG. 14B depicts an alternative item engaged in the selection region 706b. For example, a user may engage a particular item in the selection region 706b utilizing, for example, a cursor 718, whereas the selected mat material flows upward into a highlights view in position with the selected region. The item details region 712b may dynamically update to provide the user information about the selected item 715b. Also discussed above with respect to FIG. 14A, a dialog 721b may be generated to provide the user with a name, color, and/or item number corresponding to the selected item 715b.


Moving on to FIG. 8, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 8, shown is a user interface 272 configured to facilitate a selection of a mirror in the event the user desires to frame a particular mirror. FIG. 8 may be generated, for example, responsive to a selection of the component 409 of FIG. 4. An orientation field 803 is configured to facilitate a selection of a vertical or a horizontal mirror. One or more sizes of mirrors 806 may be generated responsive to the selection of the vertical or horizontal orientation via the orientation field 803. By engaging a selection component 809, one or more additional user interfaces 272 may be rendered facilitating the customization of a frame comprising a corresponding mirror 806.


Turning now to FIG. 9, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 9, the user interface 272 may be configured to customize a selection of a frame, if desired by the user during a customization process. A style list 903 and a finish list 906 may facilitate the navigation between respective styles and finishes of frames during the customization process conducted by a user. For example, by engaging a style or a finish via the style list 903 and/or the finish list 906, a selection region 909 may be generated providing a plurality of recommended frames. By engaging a respective frame in the selection region 909, the corresponding frame may be generated in the visualization region 506, utilizing AJAX or similar technology. The recommended frames within the selection region 909 may be generated, for example, utilizing at least most-purchased frames associated with mirrors or based on user preferences.


A search field 912 provides the user the ability to search for particular items, such as frames, mouldings, matboards, glazings, fillets, liners, etc. utilizing, for example, an item name or item number. An item details region 915 is configured to provide information about a selected item, such as a frame, in the selection region 909. A status component 918 of the user interface 272 may be configured to provide the user the ability to save or print the current framing process, as may be appreciated. In addition, the status component 918 may be configured to provide the user the ability to proceed to a checkout process that may facilitate the purchase of the customized frame as shown in the visualization region 506. A navigation region 921 may facilitate user-controlled navigation between respective phases in the customization process. For example, by engaging a respective portion of the navigation region 921, the user may be redirected to a user interface 272 corresponding to the engaged portion, such as the user interface 272 of FIG. 9 configured to facilitate the selection of a frame for a mirror 806.


Referring next to FIG. 10, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 10, shown is a user interface 272 configured to facilitate a selection of artwork in the event the user desires to select artwork from a predefined list made available by the virtual framing system 215. FIG. 10 may be generated, for example, responsive to a selection of a category in FIG. 11. A style field 1003, a color field 1006, and a size field 1009 is configured to dial down a listing of applicable artwork. A selection area 1012 may be generated and/or updated responsive to the selection of a particular style, color, size. By engaging a piece of artwork in the selection area 1012, one or more additional user interfaces 272 may be rendered facilitating the customization of a frame comprising the corresponding piece of artwork selected.


Turning now to FIG. 11, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 11, the user interface 272 may be configured to customize a selection of a fillet, if desired by the user during a customization process. A companion fillet region 703 may facilitate the navigation between respective fillets during the customization process of a user. For example, the user may choose between no fillet, a fillet at the frame, a fillet at the mat, or a fillet at both the mat and the frame. Accordingly, the visualized mat and fillet region 703 may facilitate a selection of a respective fillet for a frame. According to various embodiments, the selection of the respective fillet for the frame would be automated to rank and present the expert design recommendations based on art style, design, and metadata 242 previously gathered as discussed above.


A selection region 706 may be generated providing a plurality of recommended fillets. By engaging a respective fillet in the selection region 706, the corresponding fillet in the companion fillet region 703 may be updated dynamically, as well as the corresponding mat or fillet in the visualization region 506, utilizing AJAX or similar technology. The recommended fillets within the selection region 706 may be generated, for example, utilizing at least the most relevant and/or most dominant colors identified in the digital image provided by or otherwise selected by the user, as will be discussed below with respect to FIGS. 22A-B.


A search field 709 provides the user the ability to search for particular items, such as frames, mouldings, matboards, glazings, fillets, liners, etc. utilizing, for example, an item name or item number. An item details region 712 is configured to provide information about a selected item (not shown) in the selection region 706. The item details region 712 may dynamically update upon a selection to provide the user information about the selected item 715.


A status component 724 of the user interface 272 may be configured to provide the user the ability to save or print the current framing process, as may be appreciated. In addition, the status component 724 may be configured to provide the user the ability to proceed to a checkout process that may facilitate the purchase of the customized frame as shown in the visualization region 506. A navigation region 727 may assist with user-controlled navigation between respective phases in the customization process. For example, by engaging a respective portion of the navigation region 727, the user may be redirected to a user interface 272 corresponding to the engaged portion, such as the user interface 272 of FIG. 11 configured to facilitate the selection of one or more fillets.


Moving on to FIG. 12, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 12, the user interface 272 may be configured to customize a selection of a frame, if desired by the user during a customization process. A style list 903 and a finish list 906 may facilitate the navigation between respective styles and finishes of frames during the customization process conducted by a user. For example, by engaging a style or a finish via the style list 903 and/or the finish list 906, a selection region 909 may be generated providing a plurality of recommended frames. By engaging a respective frame in the selection region 909, the corresponding frame may be generated in the visualization region 506, utilizing AJAX or similar technology. The recommended frames within the selection region 706 may be generated, for example, utilizing at least most-purchased frames associated with mirrors or based on user preferences.


Referring next to FIG. 13, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 13, the user interface 272 may be configured to customize a selection of a frame, if desired by the user during a customization process. According to various embodiments, by engaging a respective frame in the selection region 909, a corresponding description dialog 1303 may be rendered providing more information associated with the frame engaged in the selection region 909. In the non-limiting example of FIG. 13, information about a frame that may be presented in the description dialog 1703 may comprise, for example, an item number corresponding to the frame, a finish, a width, a style, a description, and/or any other information associated with the frame engaged by the user.


Turning now to FIG. 14, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 14, the user interface 272 may be configured to customize a selection of glass or glazing (e.g., acrylic glazing), that may be employed in a construction of the frame, if desired by the user during a customization process. By engaging a respective type of glass or glazing in a selection region 1403, the corresponding type of glass or glazing may be generated in the visualization region 506, utilizing AJAX or similar technology. The recommended types of glass or glazing within the selection region 1403 may be generated, for example, utilizing at least most-purchased types of frames associated with mirrors, best design choices, or based on user preferences. For example, in the event a type of glass or glazing corresponds to a best design choice (according to best designs stored in the data store 212), a badge 1406 may be placed in association with the type of glass to recommend a particular type of glass to the user.


A frame details region 1409 is configured to provide information about the features selected for the frame during the customization process. The information provided in the frame details region 1409 may include, for example features, such as the artwork selected or provided by the user, a unique order number, a material of the artwork, a size of the frame, a type of mat, a type of fillet, a type of frame, and a type of glass. A status component 1412 of the user interface 272 may be configured to provide the user the ability to save or print the current framing process, as may be appreciated. In addition, the status component 1412 may be configured to provide the user the ability to proceed to a checkout process that may facilitate the purchase of the customized frame as shown in the visualization region 506.


A navigation region 1415 may facilitate user-controlled navigation between respective phases in the customization process. For example, by engaging a respective portion of the navigation region 1415, the user may be redirected to a user interface 272 corresponding to the engaged portion, such as the user interface 272 of FIG. 14 configured to facilitate the selection of a type of glass or glazing during the customization process.


Moving on to FIG. 15, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 15, a change color component 1503 may be engaged by the user to change a color of a virtual wall region 1506 shown in the visualization region 506. For example, a user may desire to view a customized frame or frames on a wall color similar to the wall within a home of the user. Accordingly, the change color component 1503 provides the ability to view the visualization region 506 with respect to the color of the wall within the home or office of the user. As shown in the non-limiting example of FIG. 15, the virtual wall region 1506 is shown as a color provided by the user via the change color component 1503.


Turning now to FIG. 16, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 16, a view in room component 1603 may be engaged by the user to view the frame depicted in the visualization region 506 in a virtual room. For example, a user may desire to view a customized frame or frames on a wall of a room similar to a wall within a home of the user. Accordingly, the view in room component 1603 provides the ability to view the visualization region 506 with respect to a wall within a room in, for example, the home or office of the user. According to various embodiments, the region of the user interface is further configured to provide a three-dimensional interaction with the virtual room when engaged by the user. For example, the user may use a mouse or hand gestures on a touch screen display to circumnavigate the virtual room in its corresponding region of the user interface. The three-dimensional interaction may be generated utilizing known three-dimensional reconstruction techniques (e.g., stereo vision, camera models, etc.) from a plurality of images either provided by the user during the customization process or provided by the virtual framing system 215.


The view in room component 1603 may comprise, for example, a plurality of types of rooms 1606a, 1606b, 1606c, 1606d, and 1606e in which a customized frame may be rendered. Types of rooms may comprise, for example, a transitional room, a contemporary room, a traditional room, an eclectic room, a sports room, etc. When engaged by the user, a dialog or one or more additional user interfaces 272 may be rendered to generate the customized frame within a type of room corresponding to the engaged type of room, as will be discussed below with respect to FIG. 17.


Moving on to FIG. 17, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 22, the user interface 272 may comprise, for example, a virtual room dialog 1703 comprising the customized frame generated in the first visualization region 506a of the user interface 272. The type of room generated in the virtual room dialog 1703 may be generated in response to a selection of a type of room made by the user, for example, via the user interface 272 of FIG. 16. As shown in the virtual room dialog, a second visualization region 506b may be rendered with respect to scale of a virtual room. In addition, a wall color shown in the virtual room dialog 1703 may be the same as a wall color provided by the user, for example, via the change color component 1503 described with respect to FIGS. 19-20.


According to various embodiments, the virtual framing system 215 may facilitate an upload of a picture of a room provided by the user. Accordingly, the frame customized by the user may be generated within the room with an appropriate aspect ratio and at a proper angle aligned with the wall. This may be accomplished by employing known computer vision algorithms employed to determine three-dimensional information from a two-dimensional image, such as those that determine sizes and angles of walls.


Referring next to FIG. 18, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 18, a personal archive add-on component 1803 is configured to provide the user with the ability to further customize a frame. In certain situations, it may be beneficial to the user to place a machine-readable visual identifier, such as a bar code or a quick response (QR) code, etc., in a particular position of the glazing within the custom frame and/or frames. As may be appreciated, when the visual identifier is detected using a visual identifier reading device (e.g., barcode scanner, QR code scanner), a message may be displayed, a predefined action may be initiated, a hyperlink may be accessed, etc. Accordingly, the add-on component may be configured to generate a visual identifier for placement on the custom frame design by etching the visual identifier on the glass, on the frame, on the matboard, or by placing a label or decal on a particular portion of the custom frame design as defined by the user.


Utilizing a text field 1806, a user may enter text to be displayed or a URL to be accessed in response to a reading of the visual identifier utilizing a visual identifier reading device. A generate code component 1809 may be engaged to initiate a rendering of the visual identifier in a preview region 1812 within the add-on component and/or the visualization region 506 as depicted by the visual identifier 1815 within the customized frame. According to various embodiments, the generated visual identifier may encode a link to a web service operated or in communication with the virtual framing system 215. The web service may be configured to display the predefined text, play a personalized audio recording, or initiate the predefined action, as set forth by the user during the customization process. The placement of the visual identifier 1815 on a respective frame may be facilitated using a configure placement component 1818 that may initiate one or more user interfaces 272 to facilitates a selection and placement of the visual identifier 1815 on a respective portion of the customized frame.


Turning now to FIG. 19, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 19, an add-on component 1803 provides the user with the ability to further customize a frame. In certain situations, it may be beneficial to the user to place a lighting device, such as a light emitting diode (LED)-based device, etc., in a particular position of the frame such as the back side of the frame. Various LED-based devices may be configured to display a particular color of light. Other LED-based devices may be configured to dynamically change the color of light. As may be appreciated, when on display the light emitted from the back side of the frame may illuminate portions of the wall on which the frame is placed.


According to various embodiments, a lighting device, such as an LED-based device, may communicate with a client device 206 via Bluetooth®, wireless fidelity (Wi-Fi), ZigBee®, Infrared, Near Field Communication (NFC), and/or any other communication technology to sync a color of the light to a specified color defined in the client device 206 using, for example, a client application 269. In various embodiments, a color of a multi-color LED device located, for example, on the back side of a frame may be controlled by a web service, wherein one or more users may specify a particular color to the web service that may initiate a change of the color of the LED device. As a non-limiting example, a mobile application running on a first mobile device may interface with the web service, wherein a user of the mobile first mobile device may communicate a particular color to the web service via the mobile application, for example, based on an emotion the user is feeling or for a variety of other reasons. For example, a person having somber emotions may select a blue color which, in effect, may communicate his or her emotion to be displayed via the LED device. A second mobile device (e.g., a local device) may download instructions from the web service to change the color of the LED device, for example, when the second mobile device is within a communication range of the LED device located on or near a custom frame. The second mobile device may initiate a changing of the LED device via Wi-Fi, ZigBee®, Infrared, Near Field Communication (NFC), and/or any other communication technology, when the second mobile device is within a communication range of the LED device on the custom frame. As may be appreciated, when a user selects various features of the LED device via the user interface, the selections provided by the user may be used in the generation of a purchase order document so that a customized frame may have the features customized via the user interface 272.


Accordingly, the add-on component may be configured to provide the user with the ability to customize settings of a LED-based device by either defining a custom color utilizing the additional light component 1903 or by adding a dynamic light color utilizing the add dynamic light component 1906. When a user engaged a preview in room component 1909, a dialog 1912 may be rendered providing a preview of the customized frame within a particular room. An illuminated region 1915 shown within the dialog 1912 may correspond to either a light color predefined by the user or may dynamically change if a user has indicated the use of a dynamic light device.


Moving on to FIG. 20, shown is a pictorial diagram of an example user interface 272 rendered by a client device 206 in the networked environment 200 of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 20, a check out dialog 2003 may be rendered notifying the user that all portions of the customization proceed have been complete. An add to cart component 2006 may initiate an addition of the customized frame created during the customization process to a virtual shopping chart and may proceed to a checkout process, as discussed below with respect to FIG. 24.


Moving on to FIGS. 21A-B, shown are drawings of client devices 206a . . . 206b capable of rendering the user interfaces 272 of FIGS. 3-20 in the networked environment of FIG. 2 according to various embodiments of the present disclosure. In the non-limiting example of FIG. 21A, a first client device 206a may comprise, for example, a kiosk computing device. In the non-limiting example of FIG. 21B, a second client device 206b may comprise, for example, a television. The first client device 206a and the second client device 206b may comprise, for example, a first display 266a and a second display 266b. The first display 266a and the second display 266b may further comprise, for example, a liquid crystal display (LCD), a gas plasma-based flat panel display, an organic light emitting diode (OLED) display, an electrophoretic ink (E ink) display, an LCD projector, a touch screen display, or other types of display devices, etc.


As discussed above with respect to FIG. 2, a client device 206 may comprise, for example, a processor-based system such as a computer system. Such a computer system may be embodied in the form of a desktop computer, a laptop computer, personal digital assistants, cellular telephones, smartphones, set-top boxes, music players, web pads, tablet computer systems, game consoles, electronic book readers, “smart” devices such as “Smart TVs,” kiosk computing devices, or other devices with similar capability. The client device 206 may include a display 266.


Referring next to FIGS. 22A-B, shown is a flowchart that provides one example of the operation of a portion of the virtual framing system 215 according to various embodiments. It is understood that the flowchart of FIGS. 22A-B provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portion of the virtual framing system 215 as described herein. As an alternative, the flowchart of FIGS. 22A-B may be viewed as depicting an example of elements of a method implemented in the computing environment 203 according to one or more embodiments.


Beginning with 2202, the virtual framing system 215 may access a digital image provided by or otherwise selected by a user of the virtual framing system 215. According to one embodiment, the user may be provided with the ability to upload an image locally accessible by the client device 206. Upon a completion of the upload, the image provided by the user may be stored, for example, in the data store 212 for access by the virtual framing system 215. In various embodiments, the user may be provided with predefined digital images (e.g., artwork offered for purchase by the virtual framing system 215) which are stored in the data store 212 for selection by the user. The user may select one or more the predefined digital images. Accordingly, the virtual framing system 215 may access or otherwise obtain the digital image selected by or provided by the user.


In 2204, a plurality of preferences may be accessed in association with the digital image accessed in 2202. For example, the preferences may comprise a material or surface on which the digital image may be placed (e.g., canvas, linen, laminate). In one embodiment, a component of a user interface 272 may be generated prompting the user to provide the material or surface from, for example, a predefined list of materials. Similarly, the preferences may comprise a size of the surface or material on which the digital image may be placed (e.g., 16″×20″, 18″×24″, 36″×48″). In one embodiment, a component of a user interface 272 may be generated prompting the user to provide the size of the material or surface from, for example, a predefined list of sizes.


Moving on to 2206, one or more art styles may be accessed in association with the digital image accessed in 2202. For example, a style of art of the digital image may be beneficial in generating recommendations, such as expert design recommendations, for particular mouldings, matboards, glazings, fillets, liners, etc. that may be aesthetically pleasing in association with the digital image. According to various embodiments, a component of a user interface 272 may be generated prompting the user to provide the art style of the digital image from, for example, a predefined list of art styles. According to various embodiments, the art style may be determined from metadata extracted from the digital image and/or other characteristics of the digital image.


In 2208, the colors of the digital image may be automatically detected by the virtual framing system 215. For example, the colors of the digital image may be examined on a pixel-by-pixel basis to identify unique colors located within the digital image. The colors identified in the digital image may be ranked to identify which of the plurality of colors meet a predefined threshold indicating which colors are the most relevant or dominant colors in the digital image. By utilizing the most relevant or dominant colors of the digital image, the virtual framing system 215 may generate recommendations, such as expert design recommendations, to be presented to the user, as will be discussed in greater detail below. The most relevant or dominant colors may be categorized by a type of the colors. According to one embodiment, the type of colors may be categorized as focal, accent, and/or neutral (FAN) although it is understood that additional categorizations may be employed.


In 2210, the focal colors may be identified. Similarly, the accent colors and the neutral colors may be identified in 2212 and 2214, respectively. According to one embodiment, the focal colors, the accent colors, and the neutral colors may be identified, for example, by comparing the colors identified in the digital image to predefined expert templates of typical focal colors, accent colors, and neutral colors, wherein the predefined expert templates are stored in the data store 212 and accessible by the virtual framing system 215. The focal colors, the accent colors, and the neutral colors identified in the digital image may be ranked according to a respective category to identify which of the plurality of colors meet a predefined threshold indicating which colors are the most relevant or dominant colors in each category. For example, all or a portion of the focal colors may be ranked to identify the most relevant focal colors in the digital image.


In 2216, one or more custom designs may be identified according to the colors identified in, for example, 2208, 2210, 2212, and 2214. For example, based on the FAN colors identified in the digital image, a plurality of model designs predefined in the data store 212 may be accessed. As a non-limiting example, if a focal color of the image is a dark red color, a model design may be accessed for the dark red color or a color similar to the dark red color. A model design, for example, may comprise an arrangement, spatial placement, color, and/or size of a frame, a moulding, a matboard, a glazing, a fillet, a liner, and/or other components. Similarly, the accent colors and the neutral colors may be used in determining respective parts of the model design such as the arrangement, spatial placement, material colors, and/or size of the frame, the moulding, the matboard, the glazing, the fillet, the liner, and/or other components.


According to the one or more custom designs identified in 2216, a plurality of mats may be identified in 2218, 2220, 2222, 2224, for each of a plurality of design styles such a monochromatic design shown in 2226, an achromatic design shown in 2228, a complimentary design shown in 2230, and/or a gallery design shown in 2232. For each of the design styles, a corresponding frame style may be selected in 2234, 2236, 2238, and/or 2240.


In 2242, a recommended expert design style may be generated utilizing at least the material or size identified in 2204, the art style identified in 2206, the colors identified in 2208, 2210, 2212, and 2214, and/or the custom designs identified in 2216. The recommendation design style generated by the virtual framing system 215 in 2242 may be displayed in 2244, for example, by encoding the recommended design style in one or more user interfaces 272, such as a network page 233 or a mobile application. The user interface 272, or data used in generating the user interface, may be sent to the client device 206, such as a computer or mobile device, for rendering.


In 2246, a design style selected by the user via the user interface 272, may be obtained or otherwise accessed. In 2248, a visualization region may be generated comprising, for example, the arrangement, spatial placement, material colors, and/or size of the frame, the moulding, the matboard, the glazing, the fillet, the liner, and/or other components, determined (if applicable) according to the selected design style obtained in 2246. Subsequently, the visualization region may be encoded in a user interface 272 and sent to the client device 206 for display.


As may be appreciated, the user of the virtual framing system 215 may desire to make additional modifications to all or portions of the components used in generating the visualization region. Accordingly, in 2250, it may be determined whether the user has indicated to change a quantity of matboards. If so, a matboard quantity may be selected by the user in 2252 and accessed by the virtual framing system 215. The visualization region may be regenerated to reflect the change in matboard quantity, if applicable. In 2254, it may be determined whether the user has indicated that the user desires to proceed to a checkout process whereby a user may initiate a purchase of the item, as will be discussed in greater detail. If so, the virtual framing system 215 may end and proceed to a checkout process, as will be discussed in greater detail below.


Moving on to 2256, it may be determined whether the user has indicated to change a color of the one or more matboards. If so, a matboard color may be selected by the user in 2258 for each of the one or more matboards and may be accessed by the virtual framing system 215. The visualization region may be regenerated to reflect the change in matboard color, if applicable. In 2260, it may be determined whether the user has indicated that the user desires to proceed to a checkout process whereby a user may initiate a purchase of the item, as will be discussed in greater detail. If so, the virtual framing system 215 may end and proceed to a checkout process, as will be discussed in greater detail below.


Referring next to 2262, it may be determined whether the user has indicated to change one or more of the recommended frames. If so, a different frame may be selected by the user in 2264 and may be accessed by the virtual framing system 215. The visualization region may be regenerated to reflect the change in the frame, if applicable. In 2266, it may be determined whether the user has indicated that the user desires to proceed to a checkout process whereby a user may initiate a purchase of the item, as will be discussed in greater detail. If so, the virtual framing system 215 may end and proceed to a checkout process, as will be discussed in greater detail below.


Turning now to 2268, it may be determined whether the user has indicated to change a glazing of glass used in the frame and represented in the visualization region. If so, a different glazing may be selected by the user in 2270 and may be accessed by the virtual framing system 215. The visualization region may be regenerated to reflect the change in the glazing, if applicable. In 2272, it may be determined whether the user has indicated that the user desires to proceed to a checkout process whereby a user may initiate a purchase of the item, as will be discussed in greater detail. If so, the virtual framing system 215 may end and proceed to a checkout process, as will be discussed in greater detail below.


According to various embodiments, the frame, the art, and the decorative additions shown in the visualization region may be depicted relative to a room or other space, such as a living room or a dining room. In 2274, it may be determined whether the user has indicated to change a wall color surrounding the frame used in the visualization of the frame represented in the visualization region. If so, a custom wall color may be selected by the user in 2276 and may be accessed by the virtual framing system 215. The visualization region may be regenerated to reflect the change in the wall color, if applicable. In 2278, it may be determined whether the user has indicated that the user desires to proceed to a checkout process whereby a user may initiate a purchase of the item, as will be discussed in greater detail. If so, the virtual framing system 215 may end and proceed to a checkout process, as will be discussed in greater detail below.


Next, in 2280, it may be determined whether the user has indicated to a desire to view the frame, the art, and the decorative additions in a visualized image of a room. If so, a room style may be selected by the user in 2282 and may be accessed by the virtual framing system 215. The room style may be selected by the user, for example, by engaging a visual identifier representing a respective style of room. For example, a visual identifier (e.g., a picture) of a living room may be engaged by the user to generate a visualization region comprising the frame in the visualized living room, in 2284. According to various embodiments, a user may be provided with an option to upload a personal room setting to view the custom frame artwork(s) in the user's own environment. The virtual framing system 215 may generate a visualization of the room using, for example, one or more digital images provided by the user and allow the user to position the custom framed artwork(s) anywhere on the wall of the room. In addition, the room may be scaled appropriately automatically or at the direction of the user, so the custom frame size would be correct. The virtual framing system 215 may end and proceed to a checkout process, as will be discussed in greater detail below.


Turning now to FIG. 23, shown is a flowchart that provides one example of the operation of a portion of the virtual framing system 215 according to various embodiments. Specifically, the flowchart of FIG. 23 provides greater detail of identifying a mat, as set forth in 2218, 2220, 2222, and 2224. It is understood that the flowchart of FIG. 23 provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portion of the virtual framing system 215 as described herein. As an alternative, the flowchart of FIG. 23 may be viewed as depicting an example of elements of a method implemented in the computing environment 203 according to one or more embodiments.


In 2303, the colors of the digital image may be detected by the virtual framing system 215. For example, the colors of the digital image may be examined on a pixel-by-pixel basis to identify unique colors located within the digital image. Next, in 2306, the colors identified in the digital image may be ranked to identify which of the plurality of colors meet a predefined threshold indicating which colors are the most relevant or dominant colors in the digital image. As a non-limiting example, the predefined threshold may be employed, for example, to identify the top-10 most predominant colors in the image determined by calculating a ratio of the top-10 colors relative to other colors in the image. As discussed above with respect to FIGS. 22A-B, by utilizing the most relevant colors of the digital image, the virtual framing system 215 may generate recommendations, such as expert design mat color recommendations, to be presented to the user.


In 2309, for each of the colors meeting the predefined threshold, the virtual framing system 215 may be operable to compare a hexadecimal code (hex code) of a respective color to a hex code for each of a plurality of predefined colors, for example, accessed from the data store 212. As a non-limiting example, the predefined colors may be a plurality of mat colors stored in the data store 212. Although the above-described comparison of the colors meeting the predefined threshold with the plurality of predefined colors utilizes hex codes, it is not so limited. For example, hue-saturation-light (HSL) codes and red-green-blue (RGB) codes may be implemented to determine a similarity between two colors, as shown in 2312.


As a non-limiting example, a first hex code of a dominant color of the digital image may be compared to a second hex code corresponding to a color of a mat accessed from the data store 212. The first hex code and the second hex code may each be converted into an RGB code and then into a HSL code to obtain a distance between the HSL codes by employing HSL color space distance calculation and/or International Commission on Illumination (CIE) color comparison. One or more weights may be used in the determination of the distance. For example, Table 1 depicts example weights that may be used in the determination of a distance between two colors:









TABLE 1





Example Weights Used in Determination of Color Distance


















Hue:
55%



Saturation:
40%



Lightness:
 5%










However, the definition of the weights may vary, as may be appreciated. In 2315, it is determined whether the similarity (e.g., the distance) between two colors has a similarity greater than a predefined threshold (e.g., 90% as shown in FIG. 23). If so, in 2318, the color accessed from the data store (i.e., the ideal color) may be used in a recommendation of its corresponding mat. As shown in 2321, the one or more recommendations may be encoded in a user interface 272 for rendering by a client device 206.


Turning now to FIG. 24, shown is a flowchart that provides one example of the operation of a portion of the virtual framing system 215 according to various embodiments. It is understood that the flowchart of FIG. 24 provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portion of the virtual framing system 215 as described herein. As an alternative, the flowchart of FIG. 24 may be viewed as depicting an example of elements of a method implemented in the computing environment 203 according to one or more embodiments.


In box 2403, the frame, the art (or item enclosed via the frame), and any decorative additions (e.g., mouldings, matboards, glazings, fillets, liners, or other items) selected by the user via the user interfaces 272 described herein may be identified for use in generating a purchase order. As may be appreciated, various frame shops, or affiliate partners, may be capable of fulfilling the selections specified by the user. Thus, according to various embodiments, the user may be prompted to select a fulfillment party based on a proximity of the fulfillment party to the user and/or an estimated cost of the fulfillment. For example, the user may be prompted to provide a zip code in which the user resides. The virtual framing system 215 may determine the frame shops located with a certain distance of the zip code and may present a list of the frame shops to the user along with an estimate of the fulfillment for each of the frame shops. The user may be free to make his or her own selection and the selection may be received or otherwise accessed by the virtual framing system 2406.


In 2409, it may be determined whether the selected fulfillment party has any requirements used in generating a purchase order. For example, the fulfillment party may request purchase orders be formatted according to certain requirements or constraints. Accordingly, the order requirements and constraints identified may be satisfied in generating the purchase order in 2412. In 2415, the purchase order may be transmitted to the fulfillment party along with any assets required, such as the digital image provided by the user. The purchase order may comprise, for example, the frame, the art, and/or the decorative additions as identified in 2403.


In 2418, a financial transaction may be conducted utilizing a payment gateway on behalf of the fulfillment party, if desired. Alternatively, the virtual framing system 215 may redirect the user to a payment gateway independent of the virtual framing system 215, such as, for example, the payment gateway operated by the fulfillment party.


Moving on to FIG. 25, shown is a table 2503 illustrating an example weight methodology that may be employed by the virtual framing system 215 in generating recommendations according to various embodiments of the present disclosure. In the non-limiting example of FIG. 25, the weights illustrated in table 2503 may be utilized to generate recommendations to be surfaced or otherwise presented to a user. For example, a design quiz may be provided to a user prompting the user with a plurality of design choices, wherein selections (as well as the lack of selections) assists in determining design criteria noted in the “Design Criteria Tables” of FIGS. 25 and 26.


As a user selects particular design choices in the design quiz, more information may be determined about the user, such as a “sense of style” of the user as well as design preferences. Accordingly, based on the information provided by the user during the design quiz, the information may be weighted to determine recommendations for the user. As shown in FIG. 25, certain indications of styles provided by a user may be afforded more weight than indications of other styles. For example, in the “traditional” column, a weight of 3 may afford more weight to traditional style preferences indicated by the user as opposed to a weight of 1 for “contemporary transitional.” Although shown with certain weights, the present disclosure is not so limited. For example, the weights may be predefined in the data store 212 by an administrator of the virtual framing system 215. Alternatively, in various embodiments, the weights may dynamically change by employing known machine learning algorithms such as the RETE pattern matching algorithm, the RETE pattern matching algorithm, and/or other machine learning strategies.


Referring next to FIG. 26, shown is a table 2603 illustrating an example weight methodology that may be employed by the virtual framing system 215 in generating recommendations according to various embodiments of the present disclosure. In the non-limiting example of FIG. 65, the weights illustrated in table 2603 may be utilized to generate recommendations to be surfaced or otherwise presented to a user. For example, as the user progresses through the series of user interfaces 272 (e.g., FIGS. 3-20), the information provided by a user may be used in determining recommendations based on determined preferences for the user.


As a user selects particular design choices utilizing the user interfaces 272, more information may be determined about the user, such as a “sense of style” of the user as well as design preferences for the user. Accordingly, based on the information provided by the user during the progression of the user interfaces 272, the information may be weighted to determine recommendations for the user. As shown in FIG. 26, certain indications of styles provided by a user may be afforded more weight than indications of other styles. For example, the size of a digital image provided by the user with a weight of 10 may afford more weight than a genre of the image indicated by the user having a weight of 9. Although FIG. 26 is shown with certain weights, the present disclosure is not so limited. For example, the weights may be predefined in the data store 212 by an administrator of the virtual framing system 215. Alternatively, in various embodiments, the weights may dynamically change by employing known machine learning algorithms such as the RETE pattern matching algorithm, the RETE pattern matching algorithm, and/or other machine learning strategies.



FIGS. 27-29 are drawings depicting pseudo-code that may be employed by the virtual framing system in generating recommendations according to various embodiments of the present disclosure. For example, an implementation of pseudo-code of FIGS. 27-29 may comprise code set forth in an application, such as the virtual framing system 215, the inference engine 218, the image analysis engine 221, the color detection engine 224, the style detection engine 227, or the export application 222 that, when executed, causes a processor of a computing device to perform actions as shown in the pseudo-code and described herein.


Turning now to FIG. 30, shown is a flowchart 3000 that provides one example of the operation of the virtual framing system 215 according to various embodiments. It is understood that the flowchart of FIG. 30 provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portion of the virtual framing system 215 as described herein. As an alternative, the flowchart of FIG. 30 may be viewed as depicting an example of elements of a method implemented in the computing environment 203 according to one or more embodiments.


Embodiments are described herein being directed towards improvements in aesthetic recommendation technology, namely leveraging artificial intelligence to generate virtual frames for display using characteristics of a digital image 239, a knowledge base 230 that includes design rules specified by expert designer's, and a consumer's subjective and personal design preferences (stored as subjective data 255). According to various embodiments, at least one computing device, such as a collection of one or more servers, may employ artificial intelligence using the inference engine 218 and the knowledge base 230. The virtual framing system 215 permits the customization of a frame while enabling a user to upload his or her own digital image (or import one or more through a social network) which may be included and shown as a subject of the frame in a user interface 272.


Beginning with 3003, a digital image 239 may be accessed, where the digital image 239 is selected, uploaded, imported, or otherwise provided to the virtual framing system 215. The digital image may include a photograph, a painting, a collage, a diploma, or other image as may be appreciated. Next, in 3006, metadata 249 associated with the digital image 239 may be accessed, for example, to generate a virtual frame recommendation that is aesthetically pleasing in light of the characteristics of the digital image 239. Hence, in 3009, the characteristics of the digital image 239 may be identified, for example, by analyzing the metadata 249 associated with the digital image 239, hexadecimals values, or other mechanism described herein. The various characteristics of the digital image 239 may include a time the digital image 239 was created, whether the digital image is a photograph captured by a particular type of camera, a location where the digital image 239 was taken, etc.


Additionally, identifying the characteristics can include, for example, applying an image or object recognition mechanism, as shown in 3012, such as those known and being applied in computer vision. An image recognition mechanism may include, for example, an algorithm that identifies artifacts, regions, or potential objects based on hexadecimal value variations in the digital image 239. In one example, the detected artifacts are compared to the catalogue of images 245 stored in the knowledge base 230, where each of the images in the catalogue has a known characteristic (e.g., a style, image type, or other characteristic). For instance, if a digital image 239 includes a tree, the digital image 239 may be recognized as being a painting or a photograph of a landscape, as determined based on a comparison with landscapes stored in the catalogue of images 245.


In 3015, a style detection mechanism may be applied to identify styles associated with the digital image 239, where styles may include, for example, classic, modern, surreal, photorealism, or other quantifiable style. In some embodiments, the image recognition described in 3012 may be used, where the style detection engine 227 identifies artifacts, regions, or potential objects based on hexadecimal value variations to compare to a catalogue of images 245 in the knowledge base 230. For instance, if a digital image 239 includes a building in black and white, the style detection engine 227 may recognize that the digital image 239 is a photograph of a cityscape, as determined based on a comparison with images stored in the catalogue of images 245.


Next, in 3018, a color detection mechanism may be applied to identify colors used in the image where colors meeting a usage threshold may be identified. In other words, the most dominant colors or most focal colors in the digital image 239 may be determined. In some embodiments, FAN colors are identified from the digital image 239.


In some embodiments, the inference engine may have a margin of error indicative of the inference engine being uncertain of a characteristics of a digital image. Accordingly, in 3021, a determination may be made whether additional information is required based on the margin of error. If additional information is required, the process may proceed to 3024 where additional information may be obtained by prompting a user of the client device 206 to provide the additional information, or information necessary to verify the applied image recognition, style detection, color detection, or other characteristics of the digital image 239. For example, a verification of the dominant colors of or a style of a photograph may be obtained.


Thereafter, or if additional information is not required in 3021, the process may proceed to 3027. In 3027, the metadata pertaining to the digital image 239 may be updated to include the characteristics of the digital image 239 identified programmatically as well as any additional information obtained from the user. The characteristics of the digital image 239 identified may include the results of 3009, 3012, 3015, and 3018, as may be appreciated. The metadata 242 (as updated) may be used in a current or future recommendation, as can be appreciated.


In 3030, the inference engine 218 and the knowledge base 230 may be employed to programmatically identify components of a virtual frame that are aesthetically consistent with the digital image 239. The components may be assembled for display in a user interface 272, as may be appreciated. The components may include, for example, a frame border, a moulding, a matboard, a glazing, a fillet, a liner, or other component of a frame.


To this end, the inference engine 218 may use expert designer recommendations, or rules, stored in the knowledge base 230 as expert design data 252. Additionally, the inference engine 218 may account for a consumer's subjective and personal design preferences using subjective data 255. In some embodiments, the subjective data 255 may be obtained as a result of a design style quiz. For instance, a user may be provided with particular images of artwork, furniture, rooms, or frames and allow the user to specify or select aesthetically pleasing images.


Moreover, using subjective data 255, a user preference for materials, colors, styles, or other categories may be used in generating a recommended frame configuration based on subjective data 255 collected from previous designs or configuration sessions with the virtual framing system 215. In further embodiments, a user may be “traced” (or, in other words, the design configuration may be followed) and the user identified based at least in part on a photo upload, a saved design, a design portfolio with previously configured frames, metadata, or other information. Indicators in the form of a user interface component may be generated to show more recommendations, such as “You may also like . . . ” This may be driven from various categories, such as “Artist,” “Style,” “Frame Profile/Design.”


The components of the virtual frame identified in 3030, or the virtually assembled frame, may be stored association with a user account, or an account of a user customizing the virtual frame. To this end, later access to the virtual frame may be provided or the virtual frame may be shared or made public such that it is searchable by other users of the network site 235. Additionally, machine learning may be employed by updating the knowledge base 230 in response to a completion of a further configuration of the virtual frame by the user to continue improving identification in and operation of the virtual framing system 215. Thereafter, the process proceeds to completion. Accordingly, a virtual framing system may be provided that allows for a customization of a virtual frame by making suggestions that are aesthetically pleasing based on the subject of the frame, the subjective preferences of a consumer, and expert design recommendations.


With reference to FIG. 31, shown is a schematic block diagram of the computing environment 203 according to an embodiment of the present disclosure. The computing environment 203 includes one or more computing devices 3103. Each computing device 3103 includes at least one processor circuit, for example, having a processor 3106 and a memory 3109, both of which are coupled to a local interface 3112. To this end, each computing device 3103 may comprise, for example, at least one server computer or like device. The local interface 3112 may comprise, for example, a data bus with an accompanying address/control bus or other bus structure as can be appreciated.


Stored in the memory 3109 are both data and several components that are executable by the processor 3106. In particular, stored in the memory 3109 and executable by the processor 3106 are the virtual framing system 215, the color detection engine 224, the export application 222, and potentially other applications. Also stored in the memory 3109 may be a data store 212 and other data. In addition, an operating system may be stored in the memory 3109 and executable by the processor 3106.


It is understood that there may be other applications that are stored in the memory 3109 and are executable by the processor 3106 as can be appreciated. Where any component discussed herein is implemented in the form of software, any one of a number of programming languages may be employed such as, for example, C, C++, C#, Objective C, Java®, JavaScript®, Perl, PHP, Visual Basic®, Python®, Ruby, Flash®, or other programming languages.


A number of software components are stored in the memory 3109 and are executable by the processor 3106. In this respect, the term “executable” means a program file that is in a form that can ultimately be run by the processor 3106. Examples of executable programs may be, for example, a compiled program that can be translated into machine code in a format that can be loaded into a random access portion of the memory 3109 and run by the processor 3106, source code that may be expressed in proper format such as object code that is capable of being loaded into a random access portion of the memory 3109 and executed by the processor 3106, or source code that may be interpreted by another executable program to generate instructions in a random access portion of the memory 3109 to be executed by the processor 3106, etc. An executable program may be stored in any portion or component of the memory 3109 including, for example, random access memory (RAM), read-only memory (ROM), hard drive, solid-state drive, USB flash drive, memory card, optical disc such as compact disc (CD) or digital versatile disc (DVD), floppy disk, magnetic tape, or other memory components.


The memory 3109 is defined herein as including both volatile and nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power. Thus, the memory 3109 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid-state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, or a combination of any two or more of these memory components. In addition, the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), or magnetic random access memory (MRAM) and other such devices. The ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other like memory device.


Also, the processor 3106 may represent multiple processors 3106 and/or multiple processor cores and the memory 3109 may represent multiple memories 3109 that operate in parallel processing circuits, respectively. In such a case, the local interface 3112 may be an appropriate network that facilitates communication between any two of the multiple processors 3106, between any processor 3106 and any of the memories 3109, or between any two of the memories 3109, etc. The local interface 3112 may comprise additional systems designed to coordinate this communication, including, for example, performing load balancing. The processor 3106 may be of electrical or of some other available construction.


Although the virtual framing system 215, the color detection engine 224, the export application 222, and other various systems described herein may be embodied in software or code executed by general purpose hardware as discussed above, as an alternative the same may also be embodied in dedicated hardware or a combination of software/general purpose hardware and dedicated hardware. If embodied in dedicated hardware, each can be implemented as a circuit or state machine that employs any one of or a combination of a number of technologies. These technologies may include, but are not limited to, discrete logic circuits having logic gates for implementing various logic functions upon an application of one or more data signals, application specific integrated circuits (ASICs) having appropriate logic gates, field-programmable gate arrays (FPGAs), or other components, etc. Such technologies are generally well known by those skilled in the art and, consequently, are not described in detail herein.


The flowcharts of FIGS. 22-24 show the functionality and operation of an implementation of portions of the virtual framing system 215. If embodied in software, each block may represent a module, segment, or portion of code that comprises program instructions to implement the specified logical function(s). The program instructions may be embodied in the form of source code that comprises human-readable statements written in a programming language or machine code that comprises numerical instructions recognizable by a suitable execution system such as a processor 3106 in a computer system or other system. The machine code may be converted from the source code, etc. If embodied in hardware, each block may represent a circuit or a number of interconnected circuits to implement the specified logical function(s).


Although the flowcharts of FIGS. 22-24 show a specific order of execution, it is understood that the order of execution may differ from that which is depicted. For example, the order of execution of two or more blocks may be scrambled relative to the order shown. Also, two or more blocks shown in succession in FIGS. 22-24 may be executed concurrently or with partial concurrence. Further, in some embodiments, one or more of the blocks shown in FIGS. 22-28 may be skipped or omitted. In addition, any number of counters, state variables, warning semaphores, or messages might be added to the logical flow described herein, for purposes of enhanced utility, accounting, performance measurement, or providing troubleshooting aids, etc. It is understood that all such variations are within the scope of the present disclosure.


Also, any logic or application described herein, including the virtual framing system 215, the color detection engine 224, the export application 222, that comprises software or code can be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system such as, for example, a processor 3106 in a computer system or other system. In this sense, the logic may comprise, for example, statements including instructions and declarations that can be fetched from the computer-readable medium and executed by the instruction execution system. In the context of the present disclosure, a “computer-readable medium” can be any medium that can contain, store, or maintain the logic or application described herein for use by or in connection with the instruction execution system.


The computer-readable medium can comprise any one of many physical media such as, for example, magnetic, optical, or semiconductor media. More specific examples of a suitable computer-readable medium would include, but are not limited to, magnetic tapes, magnetic floppy diskettes, magnetic hard drives, memory cards, solid-state drives, USB flash drives, or optical discs. Also, the computer-readable medium may be a random access memory (RAM) including, for example, static random access memory (SRAM) and dynamic random access memory (DRAM), or magnetic random access memory (MRAM). In addition, the computer-readable medium may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other type of memory device.


Further, any logic or application described herein, including the virtual framing system 215, the color detection engine 224, the export application 222, may be implemented and structured in a variety of ways. For example, one or more applications described may be implemented as modules or components of a single application. Further, one or more applications described herein may be executed in shared or separate computing devices or a combination thereof. For example, a plurality of the applications described herein may execute in the same computing device 3103, or in multiple computing devices in the same computing environment 203. Additionally, it is understood that terms such as “application,” “service,” “system,” “engine,” “module,” and so on may be interchangeable and are not intended to be limiting.


Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.


It should be emphasized that the above-described embodiments of the present disclosure are merely possible examples of implementations set forth for a clear understanding of the principles of the disclosure. Many variations and modifications may be made to the above-described embodiment(s) without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.

Claims
  • 1. A system, comprising: at least one computing device comprising program instructions executable in the at least one computing device that, when executed, cause the at least one computing device to: access a digital image received from a client device in response to an upload of the digital image through a frame customization system, wherein the digital image comprises metadata pertaining to the digital image;apply an image recognition mechanism to identify at least one object embodied in the digital image;identify a plurality of colors used in the digital image to identify a subset of the plurality of colors meeting a usage threshold;update the metadata pertaining to the digital image to include information pertaining to the at least one object and the subset of the plurality of colors meeting the usage threshold;programmatically identify, using an inference engine and a knowledge base comprising expert design data, components of a virtual frame to display in association with the digital image, wherein the components of the virtual frame are identified by the inference engine based at least in part on subjective data pertaining to a user associated with the digital image and the expert design data;generate at least one user interface that comprises the digital image as a portion of a virtual frame, the virtual frame having the components programmatically identified; andcommunicate the at least one user interface to a client device for rendering.
  • 2. The system of claim 1, wherein the components of the virtual frame are programmatically identified based at least in part on a color detection mechanism and a style detection mechanism applied to the digital image, the components comprising at least one of: a frame border, a moulding, a matboard, a glazing, a fillet, and a liner.
  • 3. The system of claim 1, wherein the at least one computing device further comprises program instructions that, when executed, cause the at least one computing device to store the components of the virtual frame programmatically identified in association with a user account.
  • 4. The system of claim 1, wherein the at least one computing device further comprises program instructions that, when executed, cause the at least one computing device to: generate at least one additional user interface that prompts a user of the client device to provide additional information pertaining to the digital image; andupdate the metadata pertaining to the digital image to include the additional information.
  • 5. The system of claim 1, wherein the components of the virtual frame are programmatically identified based at least in part on the subjective data, the subjective data being obtained based at least in part on at least one selection made in a design style quiz provided through the client device, wherein the subjective data is determined according to a weight assigned to the at least one selection.
  • 6. The system of claim 5, wherein the subjective data is used to determine a relevant portion of the expert design data to use when programmatically identifying the components of the virtual frame.
  • 7. The system of claim 1, wherein the at least one user interface is generated by the at least one computing device to include at least one user interface component that facilitates a further configuration of the virtual frame.
  • 8. The system of claim 7, wherein the at least one computing device further comprises program instructions that, when executed, cause the at least one computing device to employ machine learning by updating the knowledge base in response to a completion of the further configuration of the virtual frame.
  • 9. A computer-implemented method, comprising: accessing, by at least one computing device that has at least one hardware processor, a digital image comprising metadata pertaining to the digital image;identifying, by the at least one computing device, a plurality of colors used in the image to identify a subset of the plurality of colors meeting a usage threshold;generating, by the at least one computing device, user interface data used to render at least one form for providing additional information pertaining to the digital image;updating, by the at least one computing device, the metadata pertaining to the digital image to include the additional information and the subset of the plurality of colors meeting the usage threshold;identifying, by the at least one computing device, a selection of the digital image from a catalogue of images;programmatically identifying, by the at least one computing device, components of a virtual frame to display in association with the digital image using an inference engine and a knowledge base comprising expert design data, wherein the components of the virtual frame are identified by the inference engine based at least in part on subjective data pertaining to a user that selected the digital image from the catalogue of images and a relevant portion of the expert design data;generating, by the at least one computing device, at least one user interface that comprises the digital image as a portion of a virtual frame, the virtual frame having the components programmatically identified; andsending, by the at least one computing device, the at least one user interface to a client device associated with the user for rendering.
  • 10. The method of claim 9, further comprising: applying, by the at least one computing device, an image recognition mechanism to identify at least one object embodied in the digital image; andupdating, by the at least one computing device, the metadata pertaining to the digital image to include information pertaining to the at least one object.
  • 11. The method of claim 9, wherein the design expert data comprises data pertaining to a companion relationship between at least two of: a moulding, a matboard, a glazing, a fillet, and a liner.
  • 12. The method of claim 9, wherein the components of the virtual frame are programmatically identified based at least in part on a color and a style, the components comprising at least one of: a moulding, a matboard, a glazing, a fillet, and a liner.
  • 13. The method of claim 9, wherein the components of the virtual frame are programmatically identified based at least in part on the subjective data, the subjective data being obtained based at least in part on at least one selection made in a design style quiz provided through the client device, wherein the subjective data is determined according to a weight assigned to the at least one selection.
  • 14. The method of claim 13, wherein the subjective data is used to determine a relevant portion of the expert design data to use when programmatically identifying the components of the virtual frame.
  • 15. The method of claim 9, wherein the at least one user interface is generated by the at least one computing device to include at least one user interface component that facilitates a further configuration of the virtual frame.
  • 16. The method of claim 9, further comprising employing, by the at least one computing device, machine learning to update the knowledge base in response to a completion of the further configuration of the virtual frame.
  • 17. The method of claim 9, wherein the at least one user interface is configured to provide a two-dimensional or three-dimensional interaction with a virtual room, wherein the virtual room comprises the virtual frame in at least one region of the virtual room.
  • 18. A system, comprising: at least one computing device comprising program instructions executable in the at least one computing device that, when executed, cause the at least one computing device to: access a digital image comprising metadata pertaining to the digital image;identify a plurality of colors used in the image to identify a subset of the plurality of colors meeting a usage threshold;generate user interface data used to render at least one form for providing additional information pertaining to the digital image;update the metadata pertaining to the digital image to include the additional information and the subset of the plurality of colors meeting the usage threshold;identify a selection of the digital image from a catalogue of images;programmatically identify components of a virtual frame to display in association with the digital image using an inference engine and a knowledge base comprising expert design data, wherein the components of the virtual frame are identified by the inference engine based at least in part on subjective data pertaining to a user that selected the digital image from the catalogue of images and a relevant portion of the expert design data;generate at least one user interface that comprises the digital image as a portion of a virtual frame, the virtual frame having the components programmatically identified; andsend the at least one user interface to a client device associated with the user for rendering.
  • 19. The system of claim 18, wherein the at least one computing device further comprises program instructions that, when executed, cause the at least one computing device to: apply an image recognition mechanism to identify at least one object embodied in the digital image; andupdate the metadata pertaining to the digital image to include information pertaining to the at least one object.
  • 20. The system of claim 18, wherein the components of the virtual frame are programmatically identified based at least in part on a color and a style, the components comprising at least one of: a moulding, a matboard, a glazing, a fillet, and a liner.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of U.S. patent application Ser. No. 14/138,225 entitled “Virtual Custom Framing Expert System,” filed Dec. 23, 2013, to be issued as U.S. Pat. No. 9,542,703, which claims the benefit of and priority to U.S. Provisional Application No. 61/909,627 entitled “Electronic Custom Framing System,” filed Nov. 27, 2013, the contents of both being incorporated by reference in their entirety herein.

Provisional Applications (1)
Number Date Country
61909627 Nov 2013 US
Continuation in Parts (1)
Number Date Country
Parent 14138225 Dec 2013 US
Child 15401376 US