# Patent

## Title
Avatar-based virtual dressing room

## Abstract

A method to help a user visualize how a wearable article will look on the user's body. Enacted on a computing system, the method includes receiving an image of the user's body from an image-capture component. Based on the image, a posable, three-dimensional, virtual avatar is constructed to substantially resemble the user. In this example method, data is obtained that identifies the wearable article as being selected for the user. This data includes a plurality of metrics that at least partly define the wearable article. Then, a virtualized form of the wearable article is attached to the avatar, which is provided to a display component for the user to review.

## Background
CROSS REFERENCE TO RELATED APPLICATIONS
This application is a continuation-in-part of U.S. patent application Ser. No. 12/752,917 filed 1 Apr. 2010 and entitled MOTION-BASED INTERACTIVE SHOPPING ENVIRONMENT, and of Patent Cooperation Treaty (PCT) Application PCT/CN2012/077303 filed 21 Jun. 2012 and entitled AVATAR CONSTRUCTION USING DEPTH CAMERA. The entirety of these applications is hereby incorporated by reference herein for all purposes.


BACKGROUND
Despite increasing access to technology, people in the modern world are increasingly busy. For many, however, attention to one's appearance remains a high priority. Many people continue to invest time in maintaining and augmenting their wardrobes, shopping for special outfits, etc. In some cases, the investment in time has to do with going to a retail establishment to try on and purchase clothing and accessories. The process of selecting the right article in the right size by trying on a series of candidate articles can be very time consuming. Online shopping provides a faster alternative to the conventional retail setting. Despite its advantages, however, online shopping presents certain drawbacks. One drawback is that it may be difficult for a person to visualize how a given article would look if worn by that person—owing to the rich variation in body size and shape, hair and skin color, etc., in the human population.
SUMMARY
One embodiment of this disclosure provides a method to help a user visualize how a wearable article will look on the user's body. Enacted on a computing system, the method includes receiving an image of the user's body from an image-capture component. Based on the image, a posable, three-dimensional, virtual avatar is constructed to substantially resemble the user. In this example method, data is obtained that identifies the wearable article as being selected for the user. This data includes a plurality of metrics that at least partly define the wearable article. Then, a virtualized form of the wearable article is attached to the avatar, which is provided to a display component for the user to review.
This Summary is provided to introduce, in simplified form, a selection of concepts that are further described in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any disadvantages noted in any part of this disclosure.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 shows an environment to help a user visualize how a wearable article will look on the user's body, in accordance with an embodiment of this disclosure.
FIG. 2 illustrates a method to help a user visualize how a wearable article will look on the user's body, in accordance with an embodiment of this disclosure.
FIG. 3 illustrates a method to construct an avatar of a human subject in accordance with an embodiment of this disclosure.
FIG. 4 shows aspects of a virtual skeleton in accordance with an embodiment of this disclosure.
FIG. 5 shows aspects of a virtual head mesh connected to a virtual body mesh in accordance with an embodiment of this disclosure.
FIGS. 6 and 7 illustrate example methods to obtain data that identifies a wearable article as being selected for a user, in accordance with embodiments of this disclosure.
FIG. 8 shows the presentation and review of an avatar with at least one attached wearable article, in accordance with an embodiment of this disclosure.
FIG. 9 illustrates a method to animate an avatar in accordance with an embodiment of this disclosure.
FIG. 10 schematically shows aspects of a computing system in accordance with an embodiment of this disclosure.



DETAILED DESCRIPTION
As used in this disclosure, an ‘avatar’ is a posable, three-dimensional, computer representation of a human subject. An avatar can be used in various applications—e.g., video games, interactive training software, physical therapy, or in a retail setting. More generally, an avatar can be used wherever a virtual representation of the subject is desired.
One example application of an avatar in a retail setting is to enable a customer to ‘try on’, virtually, all manner of wearable articles. Such articles may include clothing, eyewear, footwear, accessories, prostheses, jewelry, tattoos, and/or make-up, as examples. Having augmented her avatar with such articles in virtualized form, the customer may be able to predict how she might look when wearing the corresponding actual articles. This approach can be used to pre-screen the articles prior to an actual visit to the fitting room, to save time. In addition, the customer may elect to share with others the images of her avatar with the attached virtual articles. In some scenarios, the sharing can be done remotely—via email or cell phone, for example—with friends or family members not physically present. In this manner, the customer may profit from another's counsel before making a decision to purchase an article. In an avatar-based on-line retail experience, the entire process of selecting an article, trying the article on, and then purchasing the article can be conducted in the privacy of the customer's home or workplace.
FIG. 1 shows, in one embodiment, an environment 10 for constructing an avatar of a human subject 12, which is the user of the environment. The system includes a vision-based, user-input device 14A, positioned to sight the subject. In the illustrated embodiment, the user-input device is operatively coupled to personal computer 16A, which is operatively coupled to monitor 18A. In one, non-limiting embodiment, the user-input device may be a Kinect® system from Microsoft corporation of Redmond, Wash., and the personal computer may be a video-game system, such as the XBOX 360®, also from Microsoft corporation. The personal computer may include a logic subsystem 20 with an associated storage subsystem 22, as described in further detail hereinafter. The storage subsystem may include instructions that cause the logic subsystem to enact aspects of the methods here described.
In the embodiment illustrated in FIG. 1, user-input device 14A includes a depth camera 24 configured to acquire a depth map of subject 12. The user-input device also includes a color camera 26 configured to acquire a color image of at least the subject's face. More generally, the nature and number of cameras in the user-input device may differ in the various embodiments of this disclosure. Such cameras may be configured to acquire image data from which the depth map is obtained via downstream processing. As used herein, the term ‘depth map’ refers to an array of pixels registered to corresponding regions of an imaged scene, with a depth value of each pixel indicating the depth of the corresponding region. ‘Depth’ is defined as a coordinate parallel to the optical axis of the depth camera, which increases with increasing distance from the user-input device.
In one embodiment, image data from a pair of stereoscopic cameras may be co-registered and mathematically combined to yield a depth map. In other embodiments, user-input device 14A may be configured to project a structured infrared illumination comprising numerous, discrete features (e.g., lines or dots). The depth camera may be configured to image the structured illumination reflected from the subject. Based on the spacings between adjacent features in the various regions of the imaged subject, a depth map of the subject may be constructed.
In other embodiments, user-input device 14A may be configured to project a pulsed infrared illumination. A pair of cameras may be configured to detect the pulsed illumination reflected from the subject. Both cameras may include an electronic shutter synchronized to the pulsed illumination, but the integration times for the cameras may differ such that a pixel-resolved time-of-flight of the pulsed illumination, from the source to the subject and then to the cameras, is discernible from the relative amounts of light received in corresponding pixels of the two cameras.
The configurations described above enable various methods for helping a user to visualize how a wearable article will look on the user's body, for mediating an on-line retail experience, etc. Some such methods are now described, by way of example, with continued reference to the above configurations. It will be understood, however, that the methods here described, and others within the scope of this disclosure, may be enabled by different configurations as well. The methods may be entered upon any time system 10 is operating, and may be executed repeatedly.
FIG. 2 illustrates an example method 28 to help a user visualize how a wearable article will look on the user's body. The method may be enacted on a computing system, such as system 16A of FIG. 1.
At 30 of method 28, an image of the user's body is received from an image-capture component, such as user-input device 14A. The image includes at least a portion of the user's body, but may include the user's head and/or face as well. In the embodiments here contemplated, the image may be one of a set of images of the user received from the image-capture component. The set may include one or more depth maps.
At 32 a posable, three-dimensional, virtual avatar is constructed to substantially resemble the user. The avatar may be constructed based at least partly on the image(s) received at 30.
FIG. 3 illustrates an example method 34 to construct an avatar of a human subject. At 36 a virtual skeleton of the subject is obtained based on one or more of the depth maps received. FIG. 4 shows an example virtual skeleton 38 in one embodiment. The virtual skeleton includes a plurality of skeletal segments 40 pivotally coupled at a plurality of joints 42. In some embodiments, a body-part designation may be assigned to each skeletal segment and/or each joint. In FIG. 4, the body-part designation of each skeletal segment 40 is represented by an appended letter: A for the head, B for the clavicle, C for the upper arm, D for the forearm, E for the hand, F for the torso, G for the pelvis, H for the thigh, J for the lower leg, and K for the foot. Likewise, a body-part designation of each joint 42 is represented by an appended letter: A for the neck, B for the shoulder, C for the elbow, D for the wrist, E for the lower back, F for the hip, G for the knee, and H for the ankle. Naturally, the arrangement of skeletal segments and joints shown in FIG. 4 is in no way limiting. A virtual skeleton consistent with this disclosure may include virtually any type and number of skeletal segments and joints.
In one embodiment, each joint may be assigned various parameters—e.g., Cartesian coordinates specifying joint position, angles specifying joint rotation, and additional parameters specifying a conformation of the corresponding body part (hand open, hand closed, etc.). The virtual skeleton may take the form of a data structure including any or all of these parameters for each joint. In this manner, the metrical data defining the virtual skeleton—its size, shape, orientation, position, etc.—may be assigned to the joints.
Returning now to FIG. 3, the skeletal segments and/or joints of the virtual skeleton may be fit to the depth map at 36 of method 34. This action may determine the appropriate positions, rotation angles, and other parameter values of the various joints of the skeleton. Via any suitable minimization approach, the lengths of the skeletal segments and the positions and rotational angles of the joints may be adjusted for agreement with the various contours of the depth map. In some embodiments, the act of fitting the skeletal segments may include assigning a body-part designation to a plurality of contours of the depth map. Optionally, the body-part designations may be assigned in advance of the minimization. As such, the fitting procedure may be informed by or based partly on the body-part designations. For example, a previously trained collection of body models may be used to label certain pixels from the depth map as belonging to a particular body part; a skeletal segment appropriate for that body part may then be fit to the labeled pixels. If a given contour is designated as the head of the subject, then the fitting procedure may seek to fit to that contour a skeletal segment pivotally coupled to a single join—viz., the neck. If the contour is designated as a forearm, then the fitting procedure may seek to fit a skeletal segment coupled to two joints—one at each end of the segment. Furthermore, if it is determined that a given contour is unlikely to correspond to any body part of the subject, then that contour may be masked or otherwise eliminated from subsequent skeletal fitting. The foregoing description should not be construed to limit the range of approaches that may be used to construct a virtual skeleton, for a virtual skeleton may be derived from a depth map in any suitable manner without departing from the scope of this disclosure.
Continuing in FIG. 3, at 44 a set of characteristic metrics is harvested from the virtual skeleton obtained at 36. Such metrics may correspond to distances between predetermined points of the virtual skeleton. In some embodiments, the set of characteristic metrics may be related intelligibly to the size and shape of the subject's body. For example, the characteristic metrics may include one or more of a height, a leg length, an arm length, a shoulder width, a chest radius, a waist radius, a buttocks radius, an arm radius, and a leg radius of the subject.
At 46 the set of characteristic metrics harvested in this manner is provided as input to an algorithm configured to output a virtual body mesh resembling the subject's body. In other words, the algorithm computes the virtual body mesh as a function of the characteristic metrics. In some embodiments, the algorithm used for this purpose may be an algorithm trained using machine learning. More particularly, the algorithm may be one that has been trained using an actual human model in a range of poses and a range of human models in a single pose, as described in further detail in PCT Application PCT/CN2012/077303, the entirety of which is incorporated by reference.
Continuing in FIG. 3, at 48 of method 34, a virtual head mesh distinct from the virtual body mesh is constructed. The virtual head mesh may be constructed based on a second depth map different from the first depth map referred to hereinabove. The second depth map may be acquired when the subject is closer to the depth camera than when the first depth map is acquired. In one embodiment, the second depth map may be a composite of three different image captures of the subject's head: a front view, a view turned thirty degrees to the right, and a view turned thirty degrees to the left. In the second depth map, the subject's facial features may be resolved more finely than in the first depth map. In other embodiments, the subject's head may be rotated by angles greater than or less than thirty degrees between successive image captures.
To construct the virtual head mesh, a virtual head-mesh template may be deformed to minimize distance between points on the second depth map and corresponding points on the virtual head mesh. The virtual head mesh may then be augmented with color and texture derived from one or more image captures from the color camera of the user-input device. In this manner, the virtual head mesh may be personalized to resemble the actual human subject—viz., it may present facial features resembling those of the subject both in shape and in skin color/texture.
At 50 the virtual body mesh is connected to the virtual head mesh. In this step, the head of the virtual body template mesh is first cut out, and then is connected to the virtual head template mesh by triangulating the two open boundaries of the template meshes. The connected model is then stored in the system and loaded when the virtual body mesh and the virtual head mesh are ready. The two template meshes are replaced by two virtual meshes, respectively, since they have the same connectivities. The scale of the virtual head mesh is adjusted according to the proportion consistent with the virtual body mesh. The vertices around the neck are also smoothed, while the other vertices are held fixed. In this manner, a geometrically realistic and seamless head/body mesh may be constructed.
At 52 the virtual body mesh is augmented with a skin color and/or skin texture appropriate for the subject. In some embodiments, the skin color and/or skin texture may be selected based on color-image data from user-input device 14A—such as color image data from a region that includes the subject's face. In other words, the skin color and/or skin texture applied to the virtual body mesh may be synthesized to match that of the subject's face. In one embodiment, the system first selects a body texture image in a pre-designed database and then modulates the low frequency color component so that its overall color is consistent with the color of the face skin. FIG. 5 shows an example virtual head mesh 54 and a combined head/body mesh 56. According to the methods set forth herein, the head-and-body model may accurately represent a size and shape of the user's body.
Returning now to FIG. 2, at 58 of method 28, data is obtained that identifies a particular wearable article as being selected for the user. Such data may include a plurality of metrics that at least partly define the wearable article. In one embodiment, the plurality of metrics may define the configuration of the article. They may define, for example, a sewing pattern. The data may also include data identifying the material(s)—e.g., fabric(s)—from which the wearable article is made, as well as the color(s) of the material(s). FIGS. 6 and 7 illustrate example methods 58A and 58B, respectively, that may be used to obtain such data.
In method 58A, the wearable article is selected for the user via input from another person. In one embodiment, the other person may be a friend or relative of the user. In another embodiment, the other person may be selected by a local or remote computing system, such as computing system 16A, based on suitable criteria. For example, the other person may be selected because that person exhibits purchasing behaviors similar to that of the user—a history of purchasing the same actual items, or items of the same style or price range, for example.
At 60 a mechanism is provided, via computing system 16A, for the user to request such input from the other person. In any convenient manner, the user may open a channel to receive from the other person suggestions that identify one or more wearable articles. The input from the other person may take several different forms. One example form of input may include an indication of one or more outfits worn by the other person, and suggested for the user. When a suggestion is received through an open channel, the suggested wearable article may, at 62, be selected for the user by computing system 16A. At 64 relevant data—e.g., metrical data, material data, color data, etc.—that define the wearable article—are retrieved. In one embodiment, the data may be retrieved from a database maintained by a vendor or manufacturer of the article. From 64 the method returns.
In some embodiments, the various channels that transmit suggestions for wearable articles and/or requests for suggestions can be email channels, text- or picture-messaging channels, tweets, and/or communications channels of one or more social networks.
Turning now to FIG. 7, in method 58B the wearable article is selected by invoking a selection engine of a local or remote computing system, such as computing system 16. In the embodiment here illustrated, the selection engine is configured to select the wearable article from an inventory of articles accessible to the user. In one embodiment, the inventory may include articles for sale to the user—e.g., the inventory of one vendor or the combined inventories of a plurality of vendors. In another embodiment, the inventory may include a ‘celebrity wardrobe’ of articles owned or endorsed by a particular celebrity. In other embodiments, the inventory may include (or be limited to) articles already in the user's wardrobe. In this embodiment, the inventory may be populated in any suitable manner. Tags of articles already purchased can be scanned into a data file of computing system 16, for example. In other examples, user-input device 14A may be used to acquire one or more images of the actual article—either worn or unworn during image acquisition. Once populated, the inventory of wearable articles may be interrogated for various data—e.g., a tally of the number of clothing items of a particular color, category, style, and/or brand. The approaches describe herein may also provide various ways to depopulate the user's inventory. For example, unwanted items in a wardrobe may be identified by the user—either directly or indirectly (e.g., by their disuse)—and posted for sale through an Internet service.
Returning now to the method as illustrated, at 66 the inventory accessible to the user is parsed for a wearable article. In subsequent decision blocks of method 58B, the wearable article is analyzed with respect to selected criteria. It will be understood that the criteria chosen for inclusion in FIG. 7 are illustrative, but not limiting in any sense. Naturally, any of the illustrated decision blocks can be omitted, different blocks included, etc.
At 68 of method 58B, it is determined whether the article is appropriate for current or predicted weather conditions. If the wearable article is appropriate for the weather conditions, then the method advances to 70. However, if the wearable article is not appropriate, then the method returns to 66, where the inventory is again parsed for the next wearable article. Accordingly, the selection engine may be configured to select the wearable article based at least partly on current or predicted weather in the user's locality.
At 70 it is determined whether the wearable article is available to be worn. If the article is available to be worn, then the method advances to 72. However, if the article is not available to be worn, then the method returns to 66. In this manner, the inventory of articles accessible to the user may exclude articles currently unavailable for wearing. Accordingly, the illustrated method may cooperate with an associated method to track a plurality of articles in the user's wardrobe to determine which items are currently available. An article may be unavailable because it is in the laundry or at the cleaner's, on loan to another person, etc.
In a related embodiment, an associated method may track when each article in the user's wardrobe was last cleaned, and thereby exclude articles that are in need of cleaning. In another related embodiment, an associated method may track articles in the user's wardrobe to determine how frequently each item has been worn. Accordingly, the inventory of articles accessible to the user may exclude articles worn by the user above a threshold frequency. This feature is borne out at 72 of method 58B, where it is determined whether the wearable article has been worn too much. If the wearable article has not been worn too much, then the method advances to 74. However, if the article has been worn too much, then the method returns to 66.
At 74 it is determined whether the wearable article meets selected match criteria. Thus, the wearable article referred to hereinabove may be a wearable first article; the selection engine may be configured to select the first article based on one or more of color, style, and/or brand matching with respect to a wearable second article. In one embodiment, the wearable second article may be an article already selected by the user for wearing and/or purchase. In another embodiment, the wearable second article may be an article already in a wardrobe of the user. Accordingly, the selection engine may be configured to select the first article from an inventory of articles for sale to the user based on one or, more of color, style, and/or brand matching with respect to a second article already in the user's wardrobe.
Furthermore, the second article can be one of a plurality of articles in the user's wardrobe to which the first article is matched. Method 58B can be used, in a sense, to fill gaps in the user's wardrobe. This feature can be enacted according to an algorithm that searches for a set of articles found in the wardrobe of the user. The target domain for the search may include the wardrobes of selected other users on a network. If the set is found in the wardrobes of a significant number of other users, together with an additional article not included in the set, then the algorithm may return this additional item as the selected first wearable article of method 58B.
Continuing in method 58B, if the wearable article does meet the match criteria, then the method advance to 64. Otherwise, the method returns to 66. At 64 data on the wearable article is retrieved, in the manner described above for method 58A. From 64 the method returns.
No aspect of methods 58A or 58B should be understood in a limiting sense, for a wearable article may be selected for the user in other ways too. For instance, the wearable article may be selected through an automated service of a vendor of the wearable article. In some embodiments, the user may select from a plurality of such services offered by the vendor—services associated with wearable articles endorsed by different celebrities (e.g., the Joe Hammerswing line, the Bonnie Belle line, etc.).
Returning again to FIG. 2, at 76 a virtualized form of the wearable article is sized to fit the user's body. In the embodiments here contemplated, the dimensions of the user's body may be estimated based on the avatar as constructed, or on any of the data used to construct the avatar. For example, the dimensions of the user's body may be extracted from the virtual skeleton or on the depth map(s) on which the virtual skeleton is based.
At 78 a virtualized form of wearable article is attached to the avatar. At this stage of processing, the metrical data for the selected article may be adapted based on the underlying topology of the avatar. Material data for the wearable article may be used to determine how the wearable article will conform to the topology. For instance, the resiliency of a fabric may be used as an indication of the degree to which the fabric will stretch to accommodate the user's body. In embodiments where a plurality of wearable articles are to be reviewed simultaneously, virtualized forms of a first, second, third wearable article, etc., may be attached to the avatar.
At 80 the avatar, with the virtualized form of the wearable article(s) attached, is provided to a display component—e.g., display 18A of FIG. 1—for review by the user. FIG. 8 illustrates the presentation and review of avatar 82 by user 12, in one example scenario. Here, virtualized forms of boots 84 and jacket 86 are attached to the avatar. In certain embodiments, the avatar may be presented for display on the display component together with an avatar of another person—e.g., a person whom the user wishes to be seers with. In one embodiment, the avatar may be provided in an array of different poses, as selected by the user, or in an animated form that expresses the different poses.
FIG. 9 illustrates an example method 88 to animate the avatar. At 34 of method 88, an avatar is constructed. In one embodiment, the avatar may be constructed according to the methods illustrated hereinabove. At 90 an initial desired pose for the animated avatar is specified. The initial desired pose may be a standing pose having arms outstretched, having the right hand raised, having the left leg lifted, etc. At 92 the virtual skeleton is repositioned based on the desired pose. At 94 a deformation of the virtual body mesh is computed, as described above, based on the repositioned virtual skeleton. In one embodiment, computing the deformation may include applying a linear skinning model to the virtual body mesh. In another embodiment, computing the deformation may include applying a mechanical skinning simulation to the virtual body mesh. In the mechanical skinning simulation, the motion of the user's flesh and skin is simulated, according to Newtonian physics, as a function of the displacement of the virtual skeleton. From 94, the method may return to 90 with a subsequent desired pose specified. The subsequent desired pose may be an incrementally changed pose, for example. Accordingly, the steps of repositioning the virtual skeleton and computing the deformation of the virtual body mesh may be repeated in order to animate the avatar.
In the approach contemplated herein, virtually any input mechanism may be used to specify the initial and subsequent desired poses for the avatar. Such mechanisms may include spoken commands directing body movement, or selection from among a menu of body movements and/or gestures via a user interface. In yet another embodiment, real-time skeletal tracking with user-input device 14A may guide the movement of the animated avatar. More particularly, the user may specify the movement of the avatar simply by moving her own body in the manner desired for the avatar. The user-input device may be configured to track the movement of the user's body, and provide a stream of gesture data to the personal computer on which method 88 is enacted.
In certain embodiments, the user may optionally authorize that the presentation of her avatar, with wearable article(s) attached, be shared with at least one other person. Accordingly, the user may request that the other person post a comment concerning how the user's avatar looks while wearing the item. By tracking the other person's comment, the user may profit from the other person's advice.
Returning again to FIG. 2, at 96 of method 28, a mechanism is provided for user to buy the wearable article that has been selected for and reviewed by the user. In one embodiment, the mechanism may include a channel from computing system 16A to an online retail service of the vendor of wearable article selected for purchase. In this manner, method 28 provides the basic functionality to guide a user through selection and purchase of the wearable article.
The subsequent steps of method 28 may be enacted once the user has agreed to the selection, has received the selected wearable article (if the article was purchased) and put on the article. At 98 one or more images of user are received while the user is wearing the actual article is received. At 100 these images are saved for subsequent review by the user. In this manner, the user can maintain a record of how she actually looks in each item of her wardrobe.
Aspects of this disclosure are set forth by example, with reference to the illustrated embodiments described above. Components, process steps, and other elements that may be substantially the same in one or more embodiments are identified coordinately and are described with minimal repetition. It will be noted, however, that elements identified coordinately may also differ to some degree. It will be further noted that the drawing figures included in this disclosure are schematic and generally not drawn to scale. Rather, the various drawing scales, aspect ratios, and numbers of components shown in the figures may be purposely distorted to make certain features or relationships easier to see.
In the methods illustrated and/or described herein, some of the indicated process steps may be omitted without departing from the scope of this disclosure. Likewise, the indicated sequence of the process steps may not always be required to achieve the intended results, but is provided for ease of illustration and description. One or more of the illustrated actions, functions, or operations may be performed repeatedly, depending on the particular strategy being used.
In some embodiments, the methods and processes described above may be tied to a computing system of one or more computing devices. In particular, such methods and processes may be implemented as a computer-application program or service, an application-programming interface (API), a library, and/or other computer-program product.
FIG. 10 schematically shows a non-limiting embodiment of a computing system 16 that can perform one or more of the methods and processes described above. Computing system 16 is shown in simplified form. It will be understood that virtually any computer architecture may be used without departing from the scope of this disclosure. In different embodiments, computing system 16 may take the form of a mainframe computer, server computer, desktop computer, laptop computer, tablet computer, home-entertainment computer, network computing device, gaming device, mobile computing device, mobile communication device (e.g., smart phone), etc.
Computing system 16 includes a logic subsystem 20 and a storage subsystem 22. Computing system 16 may optionally include a display subsystem 18, input subsystem 14, communication subsystem 102, and/or other components not shown in FIG. 10. Computing system 16 may also optionally include or interface with one or more user-input devices such as a keyboard, mouse, game controller, camera, microphone, and/or touch screen, for example. Such user-input devices may form part of input subsystem 14 or may interface with input subsystem 14.
Logic subsystem 20 includes one or more physical devices configured to execute instructions. For example, the logic subsystem may be configured to execute instructions that are part of one or more applications, services, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions may be implemented to perform a task, implement a data type, transform the state of one or more components, or otherwise arrive at a desired result.
The logic subsystem may include one or more processors configured to execute software instructions. Additionally or alternatively, the logic subsystem may include one or more hardware or firmware logic machines configured to execute hardware or firmware instructions. The processors of the logic subsystem may be single-core or multi-core, and the programs executed thereon may be configured for sequential, parallel or distributed processing. The logic subsystem may optionally include individual components that are distributed among two or more devices, which can be remotely located and/or configured for coordinated processing. Aspects of the logic subsystem may be virtualized and executed by remotely accessible networked computing devices configured in a cloud-computing configuration.
Storage subsystem 22 includes one or more physical, non-transitory, devices configured to hold data and/or instructions executable by the logic subsystem to implement the herein-described methods and processes. When such methods and processes are implemented, the state of storage subsystem 22 may be transformed—e.g., to hold different data.
Storage subsystem 22 may include removable media and/or built-in devices. Storage subsystem 22 may include optical memory devices (e.g., CD, DVD, HD-DVD, Blu-Ray Disc, etc.), semiconductor memory devices (e.g., RAM, EPROM, EEPROM, etc.) and/or magnetic memory devices (e.g., hard-disk drive, floppy-disk drive, tape drive, MRAM, etc.), among others. Storage subsystem 22 may include volatile, nonvolatile, dynamic, static, read/write, read-only, random-access, sequential-access, location-addressable, file-addressable, and/or content-addressable devices.
It will be appreciated that storage subsystem 22 includes one or more physical, non-transitory devices. However, in some embodiments, aspects of the instructions described herein may be propagated in a transitory fashion by a pure signal—e.g., an electromagnetic or optical signal, etc.—that is not held by a physical device for a finite duration. Furthermore, data and/or other forms of information pertaining to the present disclosure may be propagated by a pure signal.
In some embodiments, aspects of logic subsystem 20 and of storage subsystem 22 may be integrated together into one or more hardware-logic components through which the functionally described herein may be enacted, at least in part. Such hardware-logic components may include field-programmable gate arrays (FPGAs), program- and application-specific integrated circuits (PASIC/ASICs), program- and application-specific standard products (PSSP/ASSPs), system-on-a-chip (SOC) systems, and complex programmable logic devices (CPLDs), for example.
The terms ‘module,’ ‘program,’ and ‘engine’ may be used to describe an aspect of computing system 16 implemented to perform a particular function. In some cases, a module, program, or engine may be instantiated via logic subsystem 20 executing instructions held by storage subsystem 22. Accordingly, FIG. 10 shows engines 104, which include the selection engine described hereinabove, among others. It will be understood that different modules, programs, and/or engines may be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Likewise, the same module, program, and/or engine may be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc. The terms ‘module,’ ‘program,’ and ‘engine’ may encompass individual or groups of executable files, data files, libraries, drivers, scripts, database records, etc.
It will be appreciated that a ‘service’, as used herein, is an application program executable across multiple user sessions. A service may be available to one or more system components, programs, and/or other services. In some implementations, a service may run on one or more server-computing devices.
When included, display subsystem 18 may be used to present a visual representation of data held by storage subsystem 22. This visual representation may take the form of a graphical user interface (GUI). As the herein described methods and processes change the data held by the storage subsystem, and thus transform the state of the storage subsystem, the state of display subsystem 18 may likewise be transformed to visually represent changes in the underlying data. Display subsystem 18 may include one or more display devices utilizing virtually any type of technology. Such display devices may be combined with logic subsystem 20 and/or storage subsystem 22 in a shared enclosure, or such display devices may be peripheral display devices.
When included, communication subsystem 102 may be configured to communicatively couple computing system 16 with one or more other computing devices. Communication subsystem 102 may include wired and/or wireless communication devices compatible with one or more different communication protocols. As non-limiting examples, the communication subsystem may be configured for communication via a wireless telephone network, or a wired or wireless local- or wide-area network. In some embodiments, the communication subsystem may allow computing system 16 to send and/or receive messages to and/or from other devices via a network such as the Internet.
Finally, it will be noted that the subject matter of the present disclosure includes all novel and non-obvious combinations and sub-combinations of the various processes, systems and configurations, and other features, functions, acts, and/or properties disclosed herein, as well as any and all equivalents thereof.

## Claims

1. In a computing system having a computer operatively coupled to a depth camera, a method to help a subject visualize how a wearable article will look on the subject, the method comprising:
receiving with the computer a depth map of the subject, the depth map acquired by the depth camera;
obtaining with the computer a virtual skeleton of the subject based on the depth map;
harvesting from the virtual skeleton by the computer a set of subject metrics corresponding to distances between predetermined points of the virtual skeleton;
providing the subject metrics as input to an engine of the computer configured to output a virtual body mesh as a function of the subject metrics;
refining the virtual body mesh by the computer, by varying the subject metrics to decrease distance between points on the depth map and corresponding points of the virtual body mesh, the refined virtual body mesh being a basis for a posable, three-dimensional, virtual avatar resembling the subject;
obtaining at the computer data that identifies the wearable article as being selected for the subject, the data including a plurality of article metrics at least partly defining the wearable article;
attaching by the computer a virtualized form of the wearable article to the avatar; and
providing the avatar, with the virtualized form of the wearable article attached, from the computer to a display component of the computing system, for the subject to review.

2. The method of claim 1 wherein the wearable article is selected for the subject via input from a person other than the subject.

3. The method of claim 2 further comprising providing a mechanism for the subject to request the input from the person other than the subject.

4. The method of claim 2 wherein the input includes an indication of one or more outfits worn by the person other than the subject.

5. The method of claim 4 further comprising selecting the person other than the subject as someone exhibiting purchasing behavior similar to that of the subject, with respect to wearable articles.

6. The method of claim 1 wherein the wearable article is selected by an automated service of a vendor of the wearable article.

7. The method of claim 1 wherein the wearable article is selected via a selection engine of the computer, the selection engine being configured to select the wearable article from an inventory of articles accessible to the subject.

8. The method of claim 7 wherein the inventory of articles accessible to the subject includes articles for sale to the subject.

9. The method of claim 7 wherein the inventory of articles accessible to the subject includes articles in a wardrobe of the subject.

10. The method of claim 9 wherein the inventory of articles accessible to the subject excludes articles currently unavailable for wearing, the method further comprising tracking a plurality of articles in the wardrobe to determine which items are currently unavailable for wearing.

11. The method of claim 9 wherein the inventory of articles accessible to the subject excludes articles worn by the subject above a threshold frequency, the method further comprising tracking a plurality of articles in the wardrobe to determine how frequently each item has been worn.

12. The method of claim 7 wherein the wearable article is a first wearable article, and wherein the selection engine is configured to select the first wearable article based on one or more of color, style, and brand matching with respect to a second wearable article.

13. The method of claim 12 wherein the second wearable article is an article already selected by the subject for wearing or purchase.

14. The method of claim 12 wherein the second wearable article is an article in a wardrobe of the subject.

15. The method of claim 7 wherein the selection engine is configured to select the wearable article based on current or predicted weather in a locality of the subject.

16. The method of claim 1 wherein providing the avatar to the display component includes providing the avatar of the subject together with an avatar of a person other than the subject.

17. The method of claim 1 further comprising receiving an image of the subject while wearing the wearable article and saving that image for the subject to review.

18. Enacted on a computing system including a computer operatively coupled to a depth camera, a method to help a subject visualize how a wearable article will look on the subject, the method comprising:
receiving with the computer a depth map of the subject, the depth map acquired by the depth camera;
obtaining with the computer a virtual skeleton of the subject based on the depth map;
harvesting from the virtual skeleton by the computer a set of subject metrics corresponding to distances between predetermined points of the virtual skeleton;
providing the subject metrics as input to an engine of the computer configured to output a virtual body mesh as a function of the subject metrics;
refining the virtual body mesh by the computer by varying the subject metrics to decrease distance between points on the depth map and corresponding points of the virtual body mesh, the refined virtual body mesh being a basis for a posable, three-dimensional, virtual avatar resembling the subject;
providing by the computer a mechanism for the subject to request input from a person other than the subject, regarding selection of the wearable article;
obtaining at the computer data that identifies the wearable article as being selected for the subject via input from the person other than the subject, the data including a plurality of article metrics that at least partly define the wearable article;
attaching by the computer a virtualized form of the wearable article to the avatar; and
providing the avatar, with the virtualized form of the wearable article attached, from the computer to a display component for the subject to review.

19. Enacted on a computing system including a computer operatively coupled to a depth camera, a method to guide a user through purchase of a wearable first article, the method comprising:
receiving with the computer a depth map of the subject, the depth map acquired by the depth camera;
obtaining with the computer a virtual skeleton of the subject based on the depth map;
harvesting from the virtual skeleton by the computer a set of subject metrics corresponding to distances between predetermined points of the virtual skeleton;
providing the subject metrics as input to an engine of the computer configured to output a virtual body mesh as a function of the subject metrics;
refining the virtual body mesh by the computer by varying the subject metrics to decrease distance between points on the depth map and corresponding points of the virtual body mesh, the refined virtual body mesh being a basis for a posable, three-dimensional, virtual avatar resembling the subject;
invoking a selection engine of the computing system, the selection engine being configured to select the first article from an inventory of articles for sale to the subject based on one or more of color, style, and brand matching with respect to a wearable second article already in a wardrobe of the subject;
obtaining at the computer data that identifies the selected first article, the data including a plurality of article metrics at least partly defining the first article;
sizing by the computer a virtualized form of the first article to fit the subject;
attaching by the computer virtualized forms of the first and second articles to the avatar;
providing the avatar, with the virtualized forms of the first and second articles attached, from the computer to a display component for the subject to review; and
providing by the computer a mechanism for the subject to buy the first article.

20. A computing system comprising:
a depth camera;
a computer operatively coupled to the depth camera, the computer including:
a processor; and
a computer memory holding instructions that when executed by the processor, cause the processor to:
receive from the depth camera a depth map of the subject;
obtain a virtual skeleton of the subject based on the depth map;
harvest from the virtual skeleton a set of subject metrics corresponding to distances between predetermined points of the virtual skeleton;
provide the subject metrics as input to an engine to output a virtual body mesh as a function of the subject metrics;
refine the virtual body mesh by varying the subject metrics to decrease distance between points on the depth map and corresponding points of the virtual body mesh, the refined virtual body meshing being a basis for a posable, three-dimensional, virtual avatar resembling the subject;
obtain data that identifies the wearable article as being selected for the subject, the data including a plurality of article metrics that at least partly define the wearable article;
attach a virtualized form of the wearable article to the avatar; and
provide the avatar, with the virtualized form of the wearable article attached, to a display component for the subject to review.