USER INTERFACE AND METHODS TO ADAPT IMAGES FOR APPROXIMATING TORSO DIMENSIONS TO SIMULATE THE APPEARANCE OF VARIOUS STATES OF DRESS
Embodiments of the invention relate generally to computer-implemented image capture and processing, and more particularly, to user interfaces, systems, computer-readable media, and methods for approximating torso dimensions of a subject in an image to, for example, simulate appearance of the subject in various states of dress and/or generate imagery including different simulated layers of clothing for the subject of the image
This application is a continuation of copending U.S. Nonprovisional patent application Ser. No. 13/170,078, filed on Jun. 27, 2011 with Attorney Docket No. VEN-001 and entitled, “User Interface and Methods to Adapt Images for Approximating Torso Dimensions to Simulate the Appearance of Various States of Dress,” which claims the benefit of U.S. Provisional Patent Application No. 61/359,287, filed on Jun. 28, 2010 with Attorney Docket No. VEN-001P, and entitled “User Interface and Methods to Adapt Images for Approximating Torso Dimensions to Simulate the Appearance of Various States of Dress,” all of which is herein incorporated by reference for all purposes.
FIELDEmbodiments of the invention relate generally to computer-implemented image capture and processing, and more particularly, to user interfaces, systems, computer-readable media, and methods for approximating torso dimensions of a subject in an image to, for example, simulate appearance of the subject in various states of dress and/or generate imagery including different simulated layers of clothing for the subject of the image.
BACKGROUNDConventional mobile computing devices include cameras to capture images digitally and processor capabilities that enable the mobile computing devices, such as smart phones, to facilitate the use of various “apps,” or applications. Thus, the programming flexibility of such mobile computing devices enables these devices to be used as tools for applications beyond traditional uses as a personal digital assistant or phone.
A conventional application superimposes an image of a body and purports to be able to match the image of the body to a body part in a captured image, such as the head of a person. There are various drawbacks to this conventional approach. For example, a static predetermined body is used to superimpose over the body of the subject in the image. In one instance, the static predetermined body does not readily adapt to match the proportions of the person's head. The minimal or negligible ability to match the proportions of original and simulated body parts results in a perceived disjoint combination of images rather than a life-like replica of the subject in the image. Further, such application are not well-suited to capture images and determine whether an article clothing to be worn by a user or the object of the image may be visually pleasing, prior to actually wearing the article of clothing.
It would be desirable to provide improved techniques, user interfaces, systems, computer-readable media, and methods that minimize one or more of the drawbacks associated with conventional techniques for processing images.
The invention and its various embodiments are more fully appreciated in connection with the following detailed description taken in conjunction with the accompanying drawings, in which:
Like reference numerals refer to corresponding parts throughout the several views of the drawings. Note that most of the reference numerals include one or two left-most digits that generally identify the figure that first introduces that reference number.
DETAILED DESCRIPTIONVarious embodiments or examples of the invention may be implemented in numerous ways, including as a user interface, a system, a process, an apparatus, or a series of program instructions on a computer readable medium such as a computer readable storage medium or a computer network where the program instructions are sent over optical, electronic, or wireless communication links. In general, operations of disclosed processes may be performed in an arbitrary order, unless otherwise provided in the claims.
A detailed description of one or more examples is provided below along with accompanying figures. The detailed description is provided in connection with such examples, but is not limited to any particular example. The scope is limited only by the claims, and numerous alternatives, modifications, and equivalents are encompassed. Numerous specific details are set forth in the following description in order to provide a thorough understanding. These details are provided as examples and the described techniques may be practiced according to the claims without some or all of the accompanying details. For clarity, technical material that is known in the technical fields related to the examples has not been described in detail to avoid unnecessarily obscuring the description.
In view of the foregoing, the structures and/functionalities of image processor 120 can predict the appearance of subject 110 in clothing without having to view a mirror while wearing the garment. Therefore, a user can shop for clothing—and during the shopping experience (e.g., at a clothing store)—the user can take a picture of the user's person for purposes of simulating the appearance of one or more approximated body portions in various states of dress. For example, consider that subject 110 includes a head/face 109 as a reference body part and a layer of clothing 111, which obscures the dimensions of various covered body parts of subject 110, such as the dimensions of the torso, arms, and legs. Image processor 120 is configured to depict the user in an article of clothing within a result image, with either clothed portions being approximated (e.g., as approximated body portions) or unclothed portions being simulated (e.g., as simulated body portions). The user can view how a certain color of clothing or combination of clothing (and/or accessories) will be view when worn, although the user need not disrupt the shopping experience by trying numerous outfits, shirts, pants, and the like.
Continuing with the example shown, layer of clothing 111 can be one or more articles of clothing that constitutes winter attire (e.g., a heavy coat and pants), thereby obscuring the user's body parts that may be of interest. The different layers can be additive (e.g., two or more layers of cloths simulated as being on top of each other) or separate (e.g., different layers can be simulated separately). Should the user be shopping for summer or warmer weather attire, the body parts of interest, including the torso, are obscured from view. The image generator is configure to predict the appearance of the obscured parts. In one embodiment, image processor 120 can be configured to generate interior view image portion 142, thereby obviating the need to determine precise dimensions for body parts covered by layer of clothing 111. Further, a determination of a boundary of the body in the source need not be required. Thus, the generation of interior view image portion 142 can conserve computational resources as the entire body or it boundaries need not be simulated or determined. For example, interior view image portion 142 can be composed of data representing pixels that can be integrated (e.g., overlaid or superimposed over pixels representing layer of clothing 111) to form result image 152. Thus, a user has access to generated imagery to predict the appearance of the user in an article of clothing. In another embodiment, image processor 120 can be configured to predict the unclothed appearance of one or more body portions, such as the torso, arms or legs, to generate one or more approximated body portions relative to a reference body portion. Once the unclothed appearance of one or more body portions (e.g., approximated body portions) can be determined, then adjunct imagery, such as simulated clothing 134, can be sized to fit a simulated body portion and integrated into result image 150. Therefore, a user can predict how under-garments, swim suits, and the like can appear without wearing the garments.
Source image 110 can be generated by using an image capture device 103, such as a camera, retrieved from an image date repository 112 (e.g., from an image file 114), or any other known technique of acquiring data representing an image to be processed by image processor 120. Capture device 103 can be formed as part of computing device 102 or separately therefrom. Image processor 120 can be configured to receive signals from computing device 102 responsive to user interaction with portion 107 of user interface 104. The signals can be configured to, for example, guide the body detection and image modification processes.
Image processor 120 includes a face detector 122, a body generator 124 and an image modifier 128, according to various embodiments. Face detector 122 is configured to identify the face of subject 110 in, for example, image 105, whereby the face in this example serves as a reference body part from which information is used to generate one or more body parts including the torso. According to some embodiments, the term “reference body portion” can refer to, for example, a portion of a body that serves as a reference for generating or describing physical representations of an approximate body portion and/or a simulated body portion. In some cases, an approximate body portion and/or a simulated body portion can be adjusted in size or dimension to a range of sizes in which the approximated body portion is proportional to the reference body portion, such as a face. The range of sizes to achieve proportionality can be determined by the user or by relationships (e.g., algorithmically using, for instance, statistical or mathematical relationships) between body parts, such as depicted in
Body generator 124 is configured to determine one or more approximated body parts including an approximated torso for generating a simulated torso. In one embodiment, body generator 124 is configured to generate an approximated torso as a function of a silhouette of a body or torso. A silhouette, for example, can be composed of pixels, whereby the pixel data visually represents a boundary of the approximated torso used to generate a simulated torso. Body generator 124 is configured to receive attribute data specifying the relative size and position of the face to set the size of the approximated torso proportionate to the face, and to position the approximated torso at an appropriate distance (e.g., a height of a neck). In at least one instance, the silhouette of a torso can be positioned over the approximate location of the torso of subject 110. In various embodiments, an approximated or simulated body portion can described by data representing dimensions either in two dimensional space or three dimensional space, whereby a simulated body portion can, for example, be derived from a data model representing a three dimension model of the user.
Body generator 124 is configured to detect the body or torso of a subject (i.e., body detection) and/or select a body or torso as a simulated body or torso (i.e., body selection) for integration into a result image, accord to various embodiments. In some examples, the term “body detection” can refer to the determination or detection of one or more approximated body parts including an approximated torso. An approximated body part or portion can describe a clothed body part that is obscured from view in the source image. Body generator 124 operates to detect the approximate dimensions of a body part, such as a torso, for determining the boundaries with which to form a simulated body, especially when the body part is clothed or not visible in the source image. Body detection can also include determining or detecting an actual body or torso and dimensions thereof (e.g., for modifying the appearance of a subject wearing minimal clothing, such as a swim suit, when the actual body or torso can readily be detected). An approximated body part can be described by a set of dimensions that are predicted from the source image (e.g., predicted by size of reference body part. Or, a set of dimensions or attributes can be supplied by the user (e.g., a neck size or circumference, a chest size or circumference, a bicep size or circumference, a hip size or circumference, a waist size or circumference, as well as lengths of limbs and portions thereof). Data representing various approximated body portions can be stored in a database against which body part dimensions can be compared to retrieve data about a particular body part (e.g., dimensions of a head can be applied to the data base to find matches to other body part sizes that is proportional to the head). In some embodiments, an approximated body part, such as a torso, can be described by data representing a wire frame model having dimensions as the body part it serves to model, whereby the wire frame model describes generally the geometry (e.g., the contours, shapes, sizes and boundaries) of a particular body part.
In some examples, the term “body selection” can refer to the determination or selection of one or more simulated body parts including a simulated torso. Body selection can include determining or selecting a body part image (e.g., an image of a torso) for integration with the source image to form a result image. In some cases, a simulated body portion can be stored as an image file (e.g., a JPEG file) with other image files of other similar simulated body portions. In at least some examples, body selection can include the construction or generation (e.g., automatic, semi-automatic or manual generation) of an image of body part (e.g., as a computer generated image) to generate a simulated body part. In some embodiments, a simulated body portion can be selected or derived from data representing either a two dimensional or a three dimensional model having dimensions and an appearance as the body part it serves to model, whereby data representing the appearance of the simulated body portion can be applied to an approximated body part (e.g., as a wire frame model) to depict a body part with a specific color, texture, hair color, etc.). For example, computer graphic techniques, such as 2D/3D modeling and/or meshing, can be used to form a 2D/3D rendering of a simulated body portion along with surface treatments (e.g., texture mapping, bump mapping, surface shading, and the like).
Note that body selection need not use data (e.g., image data or attribute data describing body part parameters) derived from body detection, and, as such, body selection need not depend on body detection, according to some embodiments. Thus, body selection and body detection can be performed independent from each other. Note further that body generator 124 need not depend on face detector 122, and, thus, can operate to generate a simulated body part (e.g., simulated torso) independent of face detector 122 and/or data generated therefrom. Therefore, according to some embodiments, a simulated body part (e.g., a simulated body, simulated torso, simulated limb or any other simulated body part) can be determined first and can serve as a reference body part. That is, the simulated body part can be used to determine or select another body part. For example, a simulated torso can be used as a reference body part to detect, select, and/or generate a face or head image. Also, the simulated torso, as a reference body part, can be used to predict the dimensions and/or other attributes for the face or head image for generating a face or a head image.
In one embodiment, the size and/or position of the silhouette (or portions thereof) can be adjusted responsive to signals input into portion 107 of user interface 104, whereby the adjustment facilitates selection of suitable body or torso for simulation. Body generator 124 can select a silhouette that is associated with any of a number of body or torso images in files 117 stored in body image repository 116. Files 117 include data representing various body or torso types that can vary based on size, body weight, gender, body part proportions, etc. Files 117 can include a file having data representing the torso or body of subject 110. In one instance, data representing a body or torso can be selected randomly. Body generator 124 can operate to analyze source image 105 and select a silhouette that matches criteria for determining, for example, the best-fitting torso (e.g., different silhouettes can be gender-specific and vary by age). In some cases, the user can input signals via portion 107 of user interface 104 that specifies attributes such as, for example, the weight and/or height of subject 110, or other related information, that can be used to select one or more body or torso types. In some embodiments, body generator 124 can be configured to generate a simulated body and torso in real-time (or near real-time). In this instance, a silhouette or approximate boundary of an unclothed torso need not be generated. In one embodiment, image detector 120 and/or body generator 124 operate to detect torsos or bodies based either static images or multiple images constituting moving imagery (i.e., video in which one or more perspective views exist) captured by, for example, capture device 103.
Image modifier 128 is configured to modify one or more approximated body parts to generate a simulated torso. In one embodiment, image modifier 128 accesses adjunct data repository 118 to retrieve data in files 119 that represents, for example, different article of clothes (e.g., different under-garments) for integration into image 105. Therefore, a user can view the appearance of the user in result image wearing a particular under-garment. Image modifier 128 can be configured to scale a simulated torso relative to the head or face, and can also resize the result image, according to various embodiments.
In various embodiments, any of the described elements in
At 183, a decision is made whether to produce an interior view. Examples of the generation of the interior view are depicted in
Flow 170 passes from 172 to 173 if the periphery of a body portion is to be displayed. At 173, an image of a body portion is generated by using, for example, the subprocesses 174, 175 or 177, one or more of which can be used. At 174, a simulated body portion can be generated as a function of statistical or mathematical model (e.g., by using proportions among body parts). At 175, a simulated body portion periphery can be adjusted by adjusted a silhouette to form at least a portion of the simulated body portion. For example, an image of an unclothed torso can be adapted to fit within the boundaries of the silhouette, with the boundaries of the silhouette being adjusted, as shown in
Body approximator 330 can be configured to select a silhouette, which corresponds (e.g., best fitting) to a selected body or image, to generate a simulated body or torso. The silhouette can be adjusted by a user interacting with the user interface to adjust the size of the silhouette. In some embodiments, body approximator 330 can generate an indication for display on the user interface when the silhouette and reference body part (e.g., the face) are not within a range of values indicating that they are proportionate to each other and combinable. The indication can be shown by coloring the silhouette red. In some cases, body approximator 330 operates to facilitate a manual body detection process.
Edge detector 332 is configured to detect edges of features in a digital image by, for example, increasing the visibility of edges and other detail present in a digital image. For example, edge detector 332 can implement Difference of Gaussians (“DoG”) techniques or any other similar technique to detect the edges of the layers of clothing in the source image and the edges of the unclothed body parts, such as the head. Auto selector 340 is configured to select data representing pixels constituting a body or torso image that is used to generate a simulated body or torso. In one instance, auto selector 340 selects a torso image that substantially matches or fits into the edges defined by, for example, edge detector 332. Body size adjustment module 342 is configured to generate portions of a silhouette (e.g., points or handles) that enable a user to select a point or portion of a silhouette's boundary and to modify an approximated torso to fit the unclothed torso of the subject. One embodiment of body size adjustment module 342 is shown in
In some embodiments, masks such as mask 608 need not be used. Rather, pixel data representing the layer of clothing can be modified to include coloring or imagery matching a portion of the background of the source image. To illustrate, the image processor can fill the original image where the body is with background imagery by, for example, cloning background around the body. For example, instead of using a mask, image processor can re-paint clothing around the body using a background color using a silhouette in which a simulated body is painted or overlaid in association or within the boundaries silhouette. Thus, the layer of cloths need not be removed and the simulated body or torso can be blended (e.g., integrated) into the original image. The image processor is configured to align the simulated body and blended imagery (e.g., image data of the layer of clothing is replaced with image data derived from the background of the source image) with a face or head.
According to some examples, computer system 1400 performs specific operations in which processor 1404 executes one or more sequences of one or more instructions stored in system memory 1406. Such instructions can be read into system memory 1406 from another computer readable medium, such as static storage device 1408 or disk drive 1410. In some examples, hard-wired circuitry can be used in place of or in combination with software instructions for implementation. In the example shown, system memory 1406 includes modules of executable instructions for implementing an operation system (“O/S”) 1432, an application 1436, and an image processor module 1438, which, in turn, can provide the functionalities described herein.
The term “computer readable medium” and “computer readable media” refer, at least in one embodiment, to any medium or media that participate in providing instructions to processor 1404 for execution. Such a medium or media can take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 1410. Volatile media includes dynamic memory, such as system memory 1406. Transmission media includes coaxial cables, copper wire, and fiber optics, including wires that comprise bus 1402. Transmission media can also take the form of electromagnetic, acoustic or light waves, such as those generated during radio wave and infrared data communications.
Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, carrier wave, or any other medium from which a computer can read.
In some examples, execution of the sequences of instructions can be performed by a single computer system 1400. According to some examples, two or more computer systems 1400 coupled by communication link 1420 (e.g., links to LAN, PSTN, or wireless network) can perform the sequence of instructions in coordination with one another. Computer system 1400 can transmit and receive messages, data, and instructions, including program code (i.e., application code) through communication link 1420 and communication interface 1412. Received program code can be executed by processor 1404 as it is received, and/or stored in disk drive 1410, or other non-volatile storage for later execution. In one embodiment, system 1400 (or a portion thereof) can be implemented as a hand-held device, such as a mobile phone 1450. But in other embodiments, system 1400 can be implemented as a personal computer (i.e., a desk top computer) or any other computing device.
In at least some of the embodiments of the invention, the structures and/or functions of any of the above-described interfaces and panels can be implemented in software, hardware, firmware, circuitry, or a combination thereof. Note that the structures and constituent elements shown herein, as well as their functionality, can be aggregated with one or more other structures or elements. Alternatively, the elements and their functionality can be subdivided into constituent sub-elements, if any. As software, the above-described described techniques can be implemented using various types of programming or formatting languages, frameworks, syntax, applications, protocols, objects, or techniques, including C, Objective C, C++, C#, Flex™, Fireworks®, Java™, Javascript™, AJAX, COBOL, Fortran, ADA, XML, HTML, DHTML, XHTML, HTTP, XMPP, and others. These can be varied and are not limited to the examples or descriptions provided.
The various embodiments of the invention can be implemented in numerous ways, including as a system, a process, an apparatus, or a series of program instructions on a computer readable medium such as a computer readable storage medium or a computer network where the program instructions are sent over optical or electronic communication links. In general, the steps of disclosed processes can be performed in an arbitrary order, unless otherwise provided in the claims.
The foregoing description, for purposes of explanation, uses specific nomenclature to provide a thorough understanding of the invention. However, it will be apparent to one skilled in the art that specific details are not required in order to practice the invention. In fact, this description should not be read to limit any feature or aspect of the present invention to any embodiment; rather features and aspects of one embodiment can readily be interchanged with other embodiments. Notably, not every benefit described herein need be realized by each embodiment of the present invention; rather any specific embodiment can provide one or more of the advantages discussed above. In the claims, elements and/or operations do not imply any particular order of operation, unless explicitly stated in the claims. It is intended that the following claims and their equivalents define the scope of the invention.
Claims
1. A computer-readable medium executable in association with a processor, the computer-readable medium comprising executable instructions to:
- capture data representing a source image including a human body;
- generate for an interface a first interface portion configured to display a reference body portion of the human body;
- identify the reference body portion of the human body, the reference body portion serving as a reference with which to generate an approximated body portion of the human body;
- adjust the size of the approximated body portion to match a range of sizes in which the approximated body portion is proportional to the reference body portion;
- determine whether to display adjunct imagery in association with the approximated body portion or to display a simulated body portion; and
- generate for the interface a second interface portion configured to display either the adjunct imagery or the simulated body portion, or both.
Type: Application
Filed: Feb 4, 2015
Publication Date: Nov 5, 2015
Inventor: Vlad Vendrow (Redwood City, CA)
Application Number: 14/613,794