A method for generating a three-dimensional (3D) garment model of a single garment.

The method addresses the challenges of 3D clothing reconstruction by generating a 3D garment model from 2D images, ensuring high-fidelity and regularity, suitable for industrial applications and digital content creation.

JP2026511519APending Publication Date: 2026-04-14TENCENT AMERICA LLC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
TENCENT AMERICA LLC
Filing Date
2023-09-20
Publication Date
2026-04-14

AI Technical Summary

Technical Problem

Existing 3D modeling and reconstruction of clothing face challenges due to varying styles and materials, leading to insufficient accuracy and irregular topology, which limits their application in industrial-level contexts.

Method used

A method for generating a 3D garment model involves determining a garment template from multiple 2D images, extracting keypoint sets, and constructing a 3D mesh using vertices and faces, with adjustments based on garment parameters to account for different skirt types and wrinkle characteristics.

Benefits of technology

This approach enables high-fidelity 3D garment reconstruction, suitable for industrial applications by improving regularity and fidelity, and can be used in game development and virtual environments to enhance digital content creation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026511519000001_ABST
    Figure 2026511519000001_ABST
Patent Text Reader

Abstract

A garment template is determined from a pre-built garment model associated with a single garment in multiple 2D images, and represents a 3D mesh containing multiple full loops. Multiple side silhouettes of a single garment are determined based on multiple 2D images. Multiple keypoint sets are determined based on the multiple full loops and multiple side silhouettes of the garment template. Each of the multiple keypoint sets is determined based on one of the corresponding full loops. Multiple vertices and multiple edge loops of the 3D garment model are determined based on the multiple keypoint sets and multiple garment parameters. Multiple faces of the 3D garment model are determined based on the determined multiple vertices.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] Reference This application claims priority to U.S. Patent Application No. 18 / 142,463, “Three-Dimensional Modeling and Reconstruction of Clothing,” filed on 2 May 2023, which is incorporated herein by reference in its entirety.

[0002] This disclosure describes embodiments of computational methods generally related to three-dimensional (3D) modeling and reconstruction of clothing. [Background technology]

[0003] The background art descriptions provided herein are for the purpose of generally presenting the context of this disclosure. The works of the inventors named herein are not, expressly or implicitly, recognized as prior art to this disclosure, insofar as they are described in the background art section, as are any other descriptions that may otherwise not qualify as prior art at the time of filing.

[0004] Three-dimensional (3D) modeling and reconstruction are fundamental challenges in game development. Reconstructing 3D clothing can be difficult because clothing can have a variety of styles and materials. Relevant 3D modeling algorithms can reconstruct clothing with high fidelity from multi-view images. However, the reconstruction quality is highly dependent on the quality of the training data. Furthermore, due to constraints imposed by skinned multi-person linear models (SMPLs) human templates and limitations of neural networks, these methods can suffer from insufficient accuracy and irregular topology, which prevents them from being applied to industrial-level applications. [Overview of the Initiative] [Means for solving the problem]

[0005] Aspects of this disclosure include methods, apparatus, and non-temporary computer-readable storage media for computational techniques. In some examples, an apparatus for generating a three-dimensional (3D) skirt model includes processing circuits.

[0006] According to one aspect of the present disclosure, a method for generating a 3D garment model of a garment is provided. In this method, a garment template is determined from a pre-constructed garment model and associated with a garment. The garment is comprised of multiple 2D images, each corresponding to a different side of the garment. The garment template represents a 3D mesh containing multiple full loops, each containing multiple vertices. Multiple side silhouettes of the garment are determined based on the multiple 2D images. Multiple keypoint sets are determined based on the multiple full loops and multiple side silhouettes of the garment template. Each of the multiple keypoint sets is determined based on a corresponding one of the multiple full loops of the garment template and contains at least one of a central keypoint or an edge keypoint. Multiple vertices and multiple edge loops of the 3D garment model are determined based on the multiple keypoint sets and multiple garment parameters associated with the multiple 2D images of the garment. Each of the multiple edge loops includes (i) a first side and a second side, and (ii) one or more vertices from a set of vertices. The multiple faces of the 3D garment model are determined based on the multiple vertices contained within the multiple edge loops.

[0007] In some embodiments, the 3D garment model is generated based on a set of determined vertices and a set of determined faces. In one example, the 3D garment model is generated by combining a set of determined vertices and a set of determined faces.

[0008] In one example, to determine a clothing template, a body silhouette is determined associated with multiple 2D images of a single garment. To determine the body silhouette, a 3D model of the body is determined based on one or more of the multiple 2D images. Multiple height values ​​are determined associated with the lower part of the body in the 3D model. Each of the multiple height values ​​represents a different height along the lower part of the body. A set of vertices is determined for each of the multiple height values. Each of the vertex sets contains multiple vertices within the range corresponding to one of the multiple height values. Multiple boundary loops of the body silhouette are determined. Each of the multiple boundary loops contains one of the vertex sets.

[0009] In one example, to determine a garment template, vertices contained in multiple full loops are extracted from the foreground layer of a garment in multiple 2D images. The vertices contained in the multiple full loops are sorted from the top to the bottom of the multiple full loops. The vertices in each of the multiple full loops are also sorted in a clockwise direction, etc. Faces are generated based on the sorted vertices of the multiple full loops. The multiple full loops are extended by adding vertices to the top and bottom of the multiple full loops. The distance between each of the two full loops is adjusted. Vertices and faces of multiple half-loops are extracted. The multiple half-loops are associated with the body silhouettes of bodies contained in multiple 2D images. The garment template is determined based on (i) the vertices and faces of the multiple full loops and (ii) the vertices and faces of the multiple half-loops.

[0010] In some embodiments, to determine multiple side silhouettes of a garment, the left silhouette is determined based on the left boundary of the garment in a front view image of multiple 2D images. The front silhouette is determined based on the front boundary of the garment in a side view image of multiple 2D images. The back silhouette is determined based on the back boundary of the garment in a side view image of multiple 2D images.

[0011] In one example, to determine multiple keypoint sets, the top full loop of the multiple full loops of the garment template is sorted to the top of a garment, and the bottom full loop of the multiple full loops of the garment template is sorted to the bottom of a garment, based on the fact that the center of each of the multiple full loops of the garment template is included in at least one of the front view images of the multiple 2D images or the side view images of the multiple 2D images. The center keypoint, left keypoint, front keypoint, and back keypoint of each of the multiple full loops of the garment template are determined to be keypoints included in the multiple keypoint sets.

[0012] In one example, to determine multiple vertices, multiple edge loops of a 3D garment model are determined based on multiple keypoint sets. Each of the multiple edge loops is determined based on one of the keypoint sets. Therefore, the center of each of the multiple edge loops is the central keypoint of each of the keypoint sets. The diameter of each of the multiple edge loops along its principal axis is the difference between the central keypoint and the left keypoint of each of the keypoint sets. The first distance along each of the multiple edge loops along its secondary axis is the difference between the central keypoint and the previous keypoint of each of the keypoint sets. The second distance along each of the multiple edge loops along its secondary axis is the difference between the central keypoint and the back keypoint of each of the keypoint sets.

[0013] In one example, to determine multiple vertices, based on multiple garment parameters indicating that a garment is a first skirt type (e.g., a smooth-shaped skirt), M is used on each first side (e.g., the front side) of multiple edge loops. s The set of vertices for / 2 is determined, and the M on the first side s Each of the vertex groups of / 2 contains the respective vertex. sThe vertex group of M / 2 is determined at a corresponding second side (e.g., the back side) of a plurality of edge loops, and M of the second side s Each of the vertex groups of M / 2 contains its respective vertices, and M s is a predefined group number.

[0014] In one example, to determine a plurality of vertices, based on a plurality of clothing parameters indicating that a piece of clothing is of a second skirt type (e.g., a Z-shaped skirt), M is at the first side of each of the plurality of edge loops z The vertex group of M / 2 is determined, and M is at a corresponding second side of a corresponding one of the plurality of edge loops z The vertex group of M / 2 is determined. M z represents a predefined number of wrinkles associated with a piece of clothing. M z Two vertices in each of the vertex groups of M / 2 are determined in the first edge loop of the plurality of edge loops, and the two vertices include a vertex in the wrinkle region of a piece of clothing and another vertex in the non-wrinkle region. M in an edge loop other than the first edge loop of the plurality of edge loops z Three vertices are determined in each of the vertex groups of M / 2, and the three vertices include a first vertex and a second vertex in the wrinkle region of a piece of clothing and a third vertex in the non-wrinkle region.

[0015] In one example, to determine a plurality of vertices, based on a plurality of clothing parameters indicating that a piece of clothing is of a third skirt type (e.g., a wavy skirt), M w The vertex group of M / 2 is determined at the first side of each of the plurality of edge loops, and M w The vertex group of M / 2 is determined at a corresponding second side of a corresponding one of the plurality of edge loops, and M w represents a predefined number of wrinkles associated with a piece of clothing. M in the first edge loop of the plurality of edge loops wIn each of the vertex groups of / 2, two vertices are determined. These two vertices include a first vertex in the wrinkled region of a garment and a second vertex in the non-wrinkled region. In response to the transition between the first edge loop and the second edge loop being less than the transition threshold, M in the second edge loop of the multiple edge loops w Four vertices are determined in each of the vertex sets of / 2. The four vertices include three vertices in the wrinkled region of a garment and one vertex in the non-wrinkled region. In response to the transition between the first edge loop and the second edge loop being greater than or equal to the transition threshold, M in the second edge loop of the multiple edge loops w Eight vertices are determined in each of the vertex groups of / 2. These eight vertices include seven vertices in the wrinkled region of a garment and vertices in the non-wrinkled region. M in edge loops other than the first and second edge loops of multiple edge loops w In each of the vertex groups of / 2, eight vertices are determined, and these eight vertices include seven vertices in the wrinkled region and vertices in the non-wrinkled region of a garment.

[0016] To determine multiple faces of a 3D garment model, in one example, based on multiple garment parameters indicating that a garment is a first skirt type, such as a smooth-shaped skirt, the multiple faces of the 3D garment model are determined based on the faces associated with the garment template. In one example, based on multiple garment parameters indicating that a garment is one of a second skirt type (e.g., a Z-shaped skirt) and a third skirt type (e.g., a wavy skirt), in response that a first edge loop and a second edge loop of a plurality of edge loops have the same number of vertices, (i) the first vertex of the first edge loop and the first vertex of the second edge loop, (ii) the second vertex of the first edge loop and the second vertex of the second edge loop, and (iii) the first vertex of the first edge loop and the second vertex of the second vertex are connected to form two faces, respectively. In response to the fact that the first and second edge loops among the multiple edge loops have different numbers of vertices, (i) the first vertex of the first edge loop and the first vertex of the second edge loop, and (ii) the first vertex of the first edge loop and the second vertex of the second edge loop are connected on the basis that the Euclidean distance between the first vertex of the first edge loop and the second vertex of the second edge loop is smaller than the Euclidean distance between the first vertex of the second edge loop and the second vertex of the first edge loop.

[0017] In some embodiments, the multiple garment parameters represent at least one of the following: garment type, number of garment corner points, number of garment wrinkles, size of garment wrinkles, wrinkle type, or area ratio of garment wrinkles.

[0018] In this method, the clothing type of a single garment is determined. To determine the clothing type of a single garment, a neural network is trained based on random garment parameters, and the clothing type of a single garment is determined based on the neural network.

[0019] In one example, default values ​​for feature parameters associated with the garment type of a garment are determined to train a neural network. Feature parameters may include the number of corner points of the garment, the number of wrinkles, the size of the wrinkles, the wrinkle type, or the area ratio of the wrinkles. The garment type of a garment includes one of the following: a smooth-shaped skirt, a Z-shaped skirt, and a wavy skirt. Random values ​​are generated for the feature parameters. Each random value falls within the range of one of the default values ​​corresponding to one of the feature parameters. The garment mesh is reconstructed based on the generated random values ​​for the feature parameters. A random texture is added to the garment mesh, which exhibits a random geometric pattern. Front, back, and side views of the garment are rendered based on the reconstructed garment mesh with the added random texture.

[0020] This method determines the number of clothing corner points associated with a single garment. To determine the number of clothing corner points associated with a single garment, one of several 2D images is binarized into a binary image, and the clothing region in the binary image is set as the foreground region. A convex hull is extracted from the binary image. The convex hull represents the set of pixels in a convex polygon enclosing the foreground region in the binary image. Smooth points are filtered out from the convex hull to retain the unsmooth points. Each unsmooth point contains a curvature greater than or equal to a threshold. For each unsmooth point, (i) the sum of the first and second coordinate values, and (ii) the difference between the first and second coordinate values ​​are determined. The upper right corner point corresponding to the maximum value of the sum of the first and second coordinate values ​​is determined. The upper left corner point corresponding to the minimum value of the sum of the first and second coordinate values ​​is determined. The lower left corner point corresponding to the maximum difference between the first and second coordinate values ​​is determined, and the lower right corner point corresponding to the minimum difference between the first and second coordinate values ​​is determined.

[0021] This method determines the number of wrinkles associated with a garment. To determine the number of wrinkles, one of several 2D images is converted to grayscale, based on the assumption that the garment is a Z-shaped skirt. An edge map is extracted from the converted 2D image. Multiple linear segments are determined in the extracted edge map based on a stochastic Hough transform. The number of wrinkles in the garment is determined based on the number of determined linear segments.

[0022] This method determines the number of wrinkles associated with a garment. To determine the number of wrinkles, one of several 2D images is binarized into a binary image based on the fact that the garment is a wavy skirt, and the garment region in the binary image is set as the foreground region. The bottom curve of the garment is extracted from the binary image. Multiple peaks in the bottom curve are determined such that each of the multiple peaks has a peak prominence greater than a first threshold, and the distance between two adjacent peaks among the multiple peaks is greater than a second threshold. The number of determined multiple peaks is used to determine the number of wrinkles in the garment.

[0023] This method determines the size of wrinkles associated with a garment. To determine the size of the wrinkles, one of several 2D images is binarized into a binary image, based on the fact that the garment is a wavy skirt. The bottom curve of the garment is extracted from the binary image. Multiple peaks in the bottom curve are determined such that each of the multiple peaks has a peak prominence greater than a first threshold, the distance between two adjacent peaks of the multiple peaks is greater than a second threshold, and each of the multiple peaks is located within a valid window that includes the central portion of the garment. The wrinkle width is determined as the average distance between two adjacent peaks of the multiple peaks, and the wrinkle depth is determined as the average prominence of the multiple peaks.

[0024] In this method, the wrinkle type is determined based on the fact that a garment is a wavy skirt. To determine the wrinkle type, one of several 2D images is binarized into a binary image. The bottom curve of the garment is determined based on the binary image. Whether the wrinkle type is double Z-type or single V-type is determined based on the slope of the bottom curve.

[0025] This method determines the area ratio of wrinkles associated with a single garment. To determine the area ratio of wrinkles, one of several 2D images is converted to grayscale based on the fact that the garment is either a Z-shaped skirt or a wavy skirt. An edge map is extracted from the converted 2D image. From the extracted edge map, multiple linear segments corresponding to the wrinkles of the garment are determined. The area ratio of wrinkles is determined based on the ratio of the maximum wrinkle height to the height of the garment.

[0026] According to another aspect of this disclosure, an apparatus is provided. The apparatus has a processing circuit. The processing circuit may be configured to perform any one or a combination of methods for generating a 3D skirt model of a skirt.

[0027] Aspects of the present disclosure also provide a non-temporary computer-readable medium for storing instructions causing at least one processor to execute one or a combination of methods for generating a 3D skirt model of a skirt when executed by at least one processor.

[0028] Further features, properties, and various advantages of the disclosed subject matter will become clearer from the following detailed description and accompanying drawings. [Brief explanation of the drawing]

[0029] [Figure 1] This figure shows an example of a face vertex mesh according to several embodiments. [Figure 2] This is an illustrative diagram of an edge loop according to several embodiments. [Figure 3] This is a schematic diagram of an exemplary pipeline for generating a three-dimensional (3D) skirt model. [Figure 4] This is a schematic diagram of an exemplary pipeline for body silhouette extraction. [Figure 5] This is a diagram illustrating an exemplary pipeline for isosurface extraction. [Figure 6] This is a diagram illustrating an exemplary pipeline for skirt template extraction. [Figure 7] This is a diagram illustrating an exemplary pipeline for skirt reconstruction. [Figure 8] This figure shows an exemplary skirt type in several embodiments. [Figure 9] This figure shows a first exemplary process of surface generation according to several embodiments. [Figure 10] This figure shows a second exemplary process of surface generation according to several embodiments. [Figure 11] This figure illustrates parameter prediction according to several embodiments. [Figure 12] This is a schematic diagram of an exemplary pipeline for skirt type prediction. [Figure 13] This is an illustrative diagram of a skirt corner point according to several embodiments. [Figure 14] This is an illustrative diagram of skirt corner point detection according to several embodiments. [Figure 15] This is an illustrative diagram for estimating the number of folds in a pleated skirt. [Figure 16] This is an illustrative diagram for estimating the number of folds in a wavy skirt. [Figure 17] This is an illustrative diagram for estimating the size of wrinkles for a wavy skirt. [Figure 18A] This is an illustrative diagram of the first type of wrinkle in a wavy skirt. [Figure 18B] This is an illustrative diagram of the second type of wrinkles in a wavy skirt. [Figure 19]This is an illustrative diagram of estimation in the wrinkled area of ​​a skirt. [Figure 20] This is an illustrative diagram of a reconstructed skirt. [Figure 21] This flowchart outlines an exemplary process for reconstructing a 3D skirt model of a skirt according to several embodiments of the present disclosure. [Figure 22] This is a schematic diagram of a computer system according to one embodiment. [Modes for carrying out the invention]

[0030] A mesh, or face-vertex mesh, can represent an object as a set of faces and vertices. As shown in Figure 1, an object (100) may be represented by a plurality of vertices v0-v9 and a plurality of faces f0-f15. A face may contain a plurality of vertices. For example, f0 may contain vertices v0, v4, and v5. A vertex may be the intersection of a plurality of faces. For example, vertex v0 may be the intersection of faces f0, f1, f12, f15, and f7. Face-vertex meshes are widely used as input to modern graphics hardware. In this disclosure, a three-dimensional (3D) model of clothing may be reconstructed based on a two-dimensional (2D) image of the clothing, based on a parametric model such as SmartSkirt. In an exemplary embodiment, a skirt is used as an example. The skirt may be reconstructed via SmartSkirt based on a 2D skirt image. The 2D skirt image may be computer-generated or manually drawn. The 3D model generated by SmartSkirt may be represented by a face-vertex mesh.

[0031] An edge loop can be defined as a set of edges that follow a central edge in any "quadrilateral branching". The loop terminates when it encounters another type of branching (e.g., a trilateral or quintulateral branching). Figure 2 shows an exemplary edge loop (200) on a mesh surface. As shown in Figure 2, edge loop (200) extends through a first quadrilateral branching (202) and a second quadrilateral branching (204). Edge loop (200) connects the left trilateral branching (206) and the right quintulateral branching (208). An edge loop on a mesh surface can be a completed loop (or full loop) or a half-loop (or incomplete loop). A half-loop may indicate that the edge loop terminates at another type of branching.

[0032] For a 3D mesh with a given number of vertices, routing is the process of forming faces by connecting the vertices of the 3D mesh.

[0033] In this disclosure, a 3D model of a skirt may be generated from one or more 2D images based on a parametric model, for example, based on SmartSkirt. One or more 2D images may include cloth information and / or body information. One or more 2D images may be created manually, computer-generated, or captured by an electronic device (e.g., a camera or video recorder). SmartSkirt may reconstruct a high-fidelity 3D skirt using a stylized triangulation. SmartSkirt may include a preprocessing stage and a reconstruction stage. In the preprocessing stage, the silhouette of the body (or body image) may be determined by analyzing a 3D model (e.g., a 3D nude model) generated from one or more 2D images, and a template (or skirt template) may be extracted by analyzing an existing skirt (e.g., a previously generated skirt). In the reconstruction stage, a parameter prediction module may be applied to predict parameters associated with the skirt. A skirt reconstruction module (or skirt generation module) can take parameters as input, analyze one or more 2D images, and generate a set of edge loops to represent the skirt shown in one or more 2D images.

[0034] The task of estimating the 3D structure of cloth from a single image can be extremely difficult, primarily due to the limited information available in the input and the enormous search space involved. In a related example, clothing deformation has been studied from skinned multi-person linear model (SMPL) body models from multiview images, with clothing being an additional term in the SMPL. To digitize a person wearing highly detailed clothing, end-to-end deep learning methods capable of inferring both 3D surface and texture from a single image may also be applied. However, end-to-end deep learning methods tend to accept low-resolution images as input to cover large spatial situations and, due to memory limitations, produce inaccurate 3D estimates. The limitations of end-to-end deep learning methods can be addressed by formulating a multilevel architecture that can be trained end-to-end. A multilevel architecture includes a coarse level that observes the entire image at low resolution and a fine level that estimates highly detailed geometry by observing high-resolution images, focusing on overall inference. However, early-stage techniques of multilevel architecture cannot obtain separate meshes of clothing from an image.

[0035] A Multi-Garment Network (MGN) is layered on top of SMPL and reconstructs a clothing-laden mesh from multiple frames of video (e.g., frames 1-8). MGN leverages a digital wardrobe by aligning a set of clothing templates with a dataset of real-world 3D scans of people in different clothing and poses. In the MGN method, given a small number of RGB frames (e.g., 8 frames), semantically segmented images (I) and 2D joints (J) can be pre-calculated. The MGN accepts {I,J} as input and can infer the underlying human body shape in separable clothing and poses. Predictions can be further refined using frame-by-frame pose predictions. MGN can be trained with a combination of 2D and 3D training signals. 2D training signals can be used for online refinement during testing.

[0036] Deep Fashion3D (DF3D) can infer clothing geometry from a single image. DF3D uses applicable templates to enable learning different types of clothing within a single network. DF3D uses a template mesh M t It starts with generating the template mesh M t It automatically applies its topology to match the target clothing category in the input image I. Then, M t This is achieved by fitting the estimated 3D pose. p It is transformed into a mesh M. By treating the feature lines as graphs, DF3D applies an image-guided graph convolutional network to capture the 3D feature lines, which then triggers a handle-based deformation. t To generate this, DF3D initially employs OccNet (or Occupancy Networks) to create a mesh model M. I Generate M I By incorporating the fine surface details learned from M l to M IAdaptive alignment is performed, discarding outliers and noise caused by forcing near surfaces during the process.

[0037] SMPLicit can also represent the topologies of different garments in a unified manner. A core aspect of SMPLicit includes an implicit function network C that predicts the unsigned distance from a query point p to the isosurface of the garment. Input P β The body shape is encoded from p. During training, network C is trained collaboratively and a latent spatial representation is created. The image encoder f receives an SMPL occlusion map from the ground truth garment and the ground truth garment is shaped into z. cut It is included to map to the second component z. style It is trained as an autodecoder. In inference, network C(·) is run against a densely sampled 3D space, and the marching cubes method is used to generate a 3D clothing mesh. Each cloth vertex can be posed using the learned skinning parameters of the nearest SMPL vertex. The flexibility of SMPLicit's representation is based on an implicit model conditioned on the SMPL's human body parameters and a learnable latent space that is semantically interpretable and consistent with clothing attributes.

[0038] Nevertheless, due to the constraints imposed by the SMPL human template and the limitations of neural networks, methods such as MGN, DF3D, or SMPLocit can be affected by insufficient accuracy and irregular topology, and are therefore not well-suited for certain applications, including industrial-level applications.

[0039] Embodiments of this disclosure include, for example, the generation of a 3D skirt model based on SmartSkirt. The 3D skirt may be reconstructed using a stylized triangulation that can outperform the relevant techniques in terms of regularity and fidelity.

[0040] Parametric models, such as SmartSkirt, can offer a novel framework for efficiently reconstructing high-fidelity skirt meshes using stylized triangulation from multiple view images. For example, three view images (e.g., front view, back view, and side view images) may be used. A key feature of the parametric model (or SmartSkirt) is the generation of a set of superelliptic edge loops with dedicated jittering to represent the target skirt (e.g., by adding vertices to the superelliptic edge loops). Therefore, based on the parametric model (e.g., SmartSkirt), the user can modify the appearance of the skirt, including its style, pattern, and / or routing, by adjusting parameters. Embodiments of this disclosure can be used in game development or other virtual environments such as the metaverse to generate clothing or objects for 3D avatars, thereby improving the efficiency of digital content creation.

[0041] Figure 3 shows an exemplary pipeline of a system (300) for reconstructing a 3D skirt model of a skirt based on a 2D image, such as via SmarkSkirt. As shown in Figure 3, the system (300) may include two modules: a skirt generation module (300A) and a parameter prediction module (300B). The skirt generation module (300A) may include a preprocessing step and a skirt reconstruction step. The preprocessing step may include a body silhouette extraction unit (302) and a skirt template extraction unit (304). A preprocessing step is provided to extract a body silhouette and a skirt template from an input 2D image in order to reconstruct a skirt that fits a 3D avatar and satisfies style requirements. The body silhouette extraction unit (302) may be configured to extract a body silhouette from a body image contained in the 2D image. The skirt template extraction unit (304) may generate a skirt template based on the 2D image. The skirt reconstruction stage may include a skirt silhouette extraction unit (306) configured to generate a side silhouette of the skirt, a loop key point generation unit (308) configured to determine key points of the skirt (e.g., key points at the four corners), a vertex generation unit (310) configured to generate vertices of the 3D skirt model, and a face generation unit (312) configured to generate faces of the 3D skirt model. The parameter prediction module (300B) may include a neural network (316) configured to predict the type of skirt and an image processing unit (318) configured to detect wrinkle features of the skirt.

[0042] Referring further to Figure 3, multiple 2D images of the skirt, such as a front view image (322), a back view image (324), and a side view image (326), may be provided to the parameter prediction module. The neural network (316) may determine the type of skirt. For example, the neural network (316) may determine whether the skirt is at least one of a smooth skirt, a pleated skirt (or a Z-shaped skirt), or a wavy skirt (or a corrugated skirt). The image processing unit (318) may generate wrinkle features of the skirt, such as corner points, the number of wrinkles, the size of the wrinkles, and / or the wrinkle area ratio. The skirt parameters (320) generated by the parameter prediction module (300B) may be provided to the skirt generation module (300A) to generate a 3D skirt model (314) of the skirt.

[0043] In this disclosure, the term "module" (and other similar terms such as "unit" and "submodule") may refer to a software module, a hardware module, or a combination thereof. A software module (e.g., a computer program) may be developed using a computer programming language. A hardware module may be implemented using processing circuits and / or memory. Each module may be implemented using one or more processors (or processors and memory). Similarly, a processor (or processors and memory) may be used to implement one or more modules. Furthermore, each module may be part of a larger module that includes the functionality of the module.

[0044] In the body silhouette extraction unit (302), to prevent the skirt from entering the body, the body silhouette may be extracted from a 3D model (e.g., a 3D nude model). The 3D nude model may be a 3D mesh of a body generated based on one or more 2D images in which the body is contained within one or more 2D images. The 3D nude model may be computer-generated or manually constructed. Figure 4 shows an exemplary pipeline for extracting a body silhouette from a 2D image based on the body silhouette extraction unit (302). As shown in Figure 4, the body silhouette extraction unit (302) may extract a body silhouette from a 2D image based on the following steps: (1) In step 1, the body mesh (402) may be subdivided. The mesh (402) may be a computer-generated or manually created 3D mesh of a body based on one or more 2D images. In exemplary embodiments of the present disclosure, the body mesh (402) is constructed manually. The body may be subdivided, for example, by a midpoint subdivision method. Based on the midpoint subdivision method, each linear segment of the mesh (402) may be divided into equal halves. The mesh (402) may be subdivided into a mesh (404) which contains more linear segments than the mesh (402). (2) In step 2, the set of height values ​​for the lower body {h i |i=1,2,3,…N} can be sampled uniformly. Each height value h i In this case, the vertex set {v i |v iy <h i +δ&v iy > h i The vertices in {-δ} can be determined, where δ is a small value. For example, as shown in Figure 4, multiple vertex sets can be determined, such as vertex set (406) and vertex set (408). Each of these multiple vertex sets can contain multiple vertices, each corresponding to a different height value. (3) In step 3, vertex {v i For each group (or set) of}, the bounding box {x min,i ,x max,i ,z min,i ,z max,i} can be determined, and the central z value is z center,i =( z min,i +z max,i ) / 2 can be determined. As shown in Figure 4, the first bounding box (410) and the second bounding box (412) can be determined. (4) In step 4, vertex {v i For each group of}, the boundary superellipse can be determined based on equation (1).

number

number

number

[0045] To meet routing requirements, a skirt template may be extracted from a previously constructed skirt. A pre-constructed skirt may be a manually constructed 3D mesh. A manually generated skirt may be based on a skirt image, or another skirt image, such as one or more of the 2D images (322), (324), and (326). In one example, an ideal template should satisfy one or more of the following rules: (1) Edge loops at different heights are sorted from top to bottom or bottom to top. (2) The vertices on the edge loop are sorted clockwise or counterclockwise. (3) The distance between the two loops is uniform. (4) The template is long enough to cover the entire skirt.

[0046] In some embodiments, pre-constructed skirts, such as manually constructed skirts, may not be directly used as skirt templates for one or more of the following reasons: (1) A manually constructed skirt may include multiple layers. For example, as shown in Figure 5, a manually constructed skirt 502 may include multiple layers in the upper region. (2) Even if each edge loop contains the same number of vertices, the vertices and faces may not be organized, making it unsuitable for use as a template for routing. (3) The distance between the two edge loops does not have to be uniform. (4) An existing skirt (for example, a manually constructed skirt) does not need to be long enough to serve as a template for other skirts.

[0047] In this disclosure, the template extraction unit (304) can generate templates from pre-built skirts, which may be manually constructed or generated by computer software, by making the following modifications: (1) A suitable layer (e.g., a foreground layer) of a pre-constructed skirt (e.g., a manually constructed skirt) may be selected as a template. (2) The order of vertices and faces can be adjusted. For example, vertices on different loops are sorted from top to bottom. Vertices on edge loops are sorted clockwise. Thus, the first vertex may be located on the right hip of the skirt template. For example, the first vertex is located on the right hip (520) of the skirt template, as shown in Figure 5. (3) The distance between edge loops can be adjusted so that the edge loops are uniformly distributed. (4) The template may be extended from the top and / or bottom so as to be long enough to cover the other skirt.

[0048] An exemplary process for generating a skirt template can be described below and shown correspondingly in Figure 5. (1) In step 1, the appropriate layers (504) (e.g., foreground layer or outer layer) of the manually constructed skirt (MCS) (502) can be extracted as the base for the template. (2) In step 2, full loop (or full edge loop) vertices, for example, all full loop vertices, may be extracted from the appropriate layer (504) of the manually constructed skirt (502), and the order of the vertices may be adjusted. For example, vertices on different full loops (or full edge loops) may be sorted from top to bottom. Vertices on each edge loop (or each full edge loop) may be sorted clockwise or counterclockwise. Thus, the first vertex may be positioned on the right side of the waist (520). Furthermore, a stylized face may be generated based on the full loop vertices. As shown in Figure 5, a stylized full loop (508) may be formed when step 2 is completed. (3) In step 3, the stylized full loop (508) can be extended by adding vertices above and / or below the vertices of the full loop. As shown in Figure 5, the stylized full loop (508) can be extended into an extended full loop (510) in which a full loop (510A) can be added above the stylized full loop (508) and a full loop (510B) can be added below the stylized full loop (508). (4) In step 4, the distance between each of the two full-edge loops can be adjusted. Thus, the full-edge loops can be distributed uniformly. As shown in Figure 5, after the distances are adjusted, a uniform full loop (512) can be formed. (5) In step 5, the vertices and faces (506) of the half-loop (or half-edge loop) may be extracted from the appropriate layer (504). The vertices and faces (506) of the half-edge loop may represent the skeleton (or body silhouette) of the body. (6) In step 6, the vertices and faces of the full-edge loops and half-edge loops may be stored in a database or memory structure (518) as a template (514) having a skeleton. (7) In step 7, a template (516) without a skeleton (for example, without half-edge loops or half-loop vertices) can be constructed. For example, to obtain a template (516) without a skeleton, the vertices and faces of half-edge loops can be removed from a uniform full loop (512). (8) In step 8, the vertices and faces of full-edge loops in the template (516) that does not have a skeleton may also be stored in a database or memory structure (518).

[0049] Figure 6 shows an exemplary pipeline for the skirt reconstruction phase. In the skirt reconstruction phase, the skirt reconstruction module (or skirt generation module) generates a front view mask (602) (also called the front image, which is a binary image and uses 1 or 0 to indicate whether a pixel exists). front , side view mask (604) (or side view image) I side It can accept input parameters (e.g., skirt parameters (320)) as input and generate or export a 3D skirt mesh (606).

[0050] As shown in Figure 6, in the skirt generator (or skirt generation module), the silhouette extraction unit (306) extracts the left silhouette S from the front view image (602). left Extract the front silhouette S from the side view image (604). front and back silhouette S back The loop key point generation unit (308) can extract a given template (e.g., a skirt template generated by the skirt template extraction unit (304)) and a silhouette (e.g., S left S front , and S back Using ), the left key point K of the edge loop (e.g., a full edge loop generated by the skirt template extraction unit (304)) left Right key point K right , front key point K front, and a post key point K back can be generated. The vertex generation unit (310) can generate vertex coordinates V skirt (e.g., F skirt (320)) and loop key points (e.g., K left , K right , K front , K back ) based on a given skirt parameter F skirt and a loop angle θ v of the vertex. The face generation unit (312) can generate the faces of the 3D model based on a given skirt parameter F skirt and the vertex loop angle θ v . Finally, vertex coordinates V skirt and faces F skirt can be assembled (606) to generate the 3D model Mesh skirt .

[0051] FIG. 7 shows an exemplary left silhouette (704) determined based on a front view mask (or front view image) I front (702). The skirt silhouette extraction unit (306) can receive the front view mask I front (702) as an input to determine the left silhouette (704). As shown in FIG. 7, to extract the left silhouette (704), [Number]

[0052] The key points for the skirt edge loop can be generated based on one or more of the following steps. (1) To determine key points, a template loop (e.g., a full loop in template (516)) may be applied. For each loop in the template (e.g., (516)), it may be checked whether the center of the loop is covered by a front view image (e.g., (602)) or by a side view image (e.g., (604)). If the center of the loop is covered by the front view image of the side view image, the template (e.g., (516)) may be eligible for skirt generation. (2) The upper loop of the template loop may be sorted at the top of the skirt in the front view image or side view image, and the lower loop of the template loop may be sorted at the bottom of the skirt.

number

[0053] A skirt in a front view or side view image can be thought of as a stack of superellipses (or full-edge loops). For different types of skirts, samples (or vertices) can be generated by controlling the rotational radian (or rotation angle) θ and radius r for each vertex on the superellipse. Figure 8 shows an exemplary arrangement of vertices in different types of skirts. Skirt types may include at least one of a smooth-shaped skirt, a Z-shaped (or pleated) skirt, or a corrugated skirt. As shown in Figure 8, different types of skirts can be generated by jittering (or adding) vertices on the superellipse by controlling the rotational radian and radius of the vertices on the superellipse.

[0054] The process of adding vertices to a superellipse can be described based on adding vertices in the t-th edge loop (or t-th superellipse) of the superellipse. In one example, a vertex may be generated in the following two steps: (1) In step 1, two half-superellipses may be generated to form an edge loop (or full edge loop). The two half-superellipses may include a front side and a back side, and are determined based on key points determined by the loop key point generation unit (308). The center of the half-superellipses is the central key point P center,t This is possible. At the major axis of the t-th superellipse (or t-th edge loop), the diameter of the t-th half-superellipse is a t =|P left,t -P center,t It is possible that, in the secondary axis, the first diameter of the t-th half-superellipse is b toward the front. t =|P front,t -P center,t | is possible, and the second diameter of the t-th half-superellipse is b toward the rear. t =|P back,t -P center,t It is possible. (2) In step 2, vertices can be generated by jittering the samples on the half-superellipse (e.g., by adding vertices). The vertices can be jittered based on the type of skirt.

[0055] When the skirt is a smooth skirt (or a skirt with a smooth shape), for each edge loop, the M of the points s The / 2 group may be jittered on the front half-superellipse, point M s The / 2 group can be jittered on the rear half-superellipse of the t-th edge loop. s This can be a predefined number of groups on each edge loop. For example, M s The number can be in the range of 4 to 20. One vertex may be added to each group. Since the skirt is a smooth shape, the vertices are the t-th edge loop, or r jitter,i =0 and θ jitter,i It is not necessary to add to =0.

[0056] When the skirt is a Z-shaped skirt, the Z-shaped skirt has an uppermost edge loop t u The second edge loop and the bottom edge loop t d An edge loop may be included between the second edge loop. M of the point (or vertex) Z The / 2 group can be generated on each front half-superellipse, with the M of the point (or vertex). Z The / 2 group can be generated on each rear half-superellipse, M Z This can be a predefined number of wrinkles (e.g., 4 to 20). In some examples, the predefined number of wrinkles may be specified by the user, may be a default value, or may be predicted by a parameter prediction module.

[0057] t u For the nth edge loop (e.g., the first or topmost edge loop of a Z-shaped skirt), two vertices may be included in each group, one vertex for the wrinkled region of the skirt and one vertex for the non-wrinkled region of the skirt. In some embodiments, t u The second edge loop can be smooth. Therefore, t u The second, or r jitter,i =0 and θ jitter,i In some cases, it may not be necessary to add additional vertices to edge loops where =0.

[0058]

number

[0059] When the skirt is a wavy skirt, for each edge loop, the M of the point (vertex) w The / 2 group can be generated on the front half-superellipse, with the M of the points (or vertices). w The / 2 group can be generated on a rear half-superellipse, for example, M w This can be a predefined number of wrinkles, specified by the user or predicted by the parameter prediction module. For example, M w It can be in the range of 4 to 20.

[0060] t u For the nth edge loop (e.g., the first edge loop of a wavy skirt), two vertices may be determined, one for the wrinkled region and the other for the non-wrinkled region. In some embodiments, t u The second edge loop can be smooth, and therefore, t u The second, and r jitter,i =0 and θ jitter,i Additional vertices are not jittered (or added) on edge loops where =0.

[0061]

number

[0062] (t u For the +1)th edge loop (e.g., the second edge loop of a wavy skirt), two situations may apply. In the first situation, when the user chooses to gradually change the wrinkles (e.g., the transition between the first and second edge loops is below a threshold), four vertices may be determined in each group, three for the wrinkled region and one for the non-wrinkled region. In some embodiments, the three vertices in the wrinkled region may be the third to fifth vertices shown in the Wrinkled Regions section of Table 2, and the one vertex in the non-wrinkled region may be the vertex shown in the Non-Wrinkled Regions section of Table 2. When the user chooses to abruptly change the wrinkles (e.g., the transition between the first and second edge loops is above a threshold), eight vertices may be determined in each group, seven for the wrinkled region and one for the non-wrinkled region. The radii and rotation angles (or rotation radians) of the eight vertices may be shown in Table 2.

[0063]

number

[0064] The faces of a 3D model can be generated based on the type of skirt via a face generation unit. For example, faces of a smooth skirt can be generated based on a smooth skirt face generation subunit, faces of a Z-shaped skirt can be generated based on a Z-shaped skirt face generation subunit, and faces of a corrugated skirt can be generated based on a corrugated skirt face generation subunit.

[0065] When the skirt is a smooth-shaped skirt, the template faces (e.g., faces included in the skirt template generated by the template extraction unit) corresponding to the valid loops (e.g., edge loops generated based on the vertex generation unit) can be determined as the generated faces for a smooth-shaped skirt.

[0066] When the skirt is Z-shaped or corrugated, if two adjacent loops have the same number of vertices, a uniformly distributed surface can be generated between the two adjacent loops. As shown in Figure 9, two triangles can be generated such that the i-th vertex of the t-th loop is connected to the i-th vertex of the (t+1)-th loop, the (i+1)-th vertex of the t-th loop is connected to the (t+1)-th vertex of the (t+1)-th loop, and the i-th vertex of the t-th loop is connected to the (i+1)-th vertex of the (t+1)-th loop.

[0067] If two adjacent loops have different numbers of vertices, faces can be generated one at a time. Two vertex pointers can be initialized first to set the position index of the first vertex in the upper loop as pu=1 (where pu is the position index of the two adjacent loops in the upper loop) and the position index of the first vertex in the lower loop as pd=1.

[0068] As shown in Figure 10, a triangle containing pu and pd can be determined based on the position index pu in the upper loop and the position index pd in the lower loop. For example, a first candidate triangle (pu, pd, pu+1) or a second candidate triangle (pu, pd, pd+1) can be determined based on the position indices pu and pd. To select a more rational triangle, l pu+1,pd Let the Euclidean distance between (pu+1) and pd, and l pd+1,pu The Euclidean distance between (pd+1) and pu can be calculated. pu+1,pd <l pd+1,pu In this case, the first candidate triangle (pu, pd, pu+1) may be added to the list of faces, and pu may be updated as pu=pu+1. Otherwise, the second candidate triangle (pu, pd, pd+1) may be added to the list of faces, and pd may be updated as pd=pd+1. The face generation process is as follows: pu=M u This can be repeated up to this point, and here M u is the number of vertices in the upper loop, and pd = M d This can be repeated up to this point, and here M d This is the number of vertices in the lower loop.

[0069] As shown in Figure 11, the parameter prediction module can take a multi-view skirt image of a skirt (e.g., a front view image (1002)) as input and estimate the skirt parameters of a skirt (e.g., skirt type, corner points, wrinkle area ratio, number of wrinkles, wrinkle size, etc.) by combining the capabilities of a deep learning neural network model (for determining the skirt type) with image processing techniques (for determining other skirt parameters such as corner points, wrinkle area ratio, number of wrinkles, wrinkle size, etc.).

[0070] In one example of this disclosure, the parameter prediction module has an overall prediction accuracy of over 90% and can provide a reasonably good initial estimate of the parameters of the downstream skirt reconstruction module.

[0071] In this disclosure, a deep neural network model may be trained to predict skirt types from multi-view (e.g., front view, back view, and side view) skirt images. An exemplary training process for the deep neural network may be shown in Figure 12. As shown in Figure 12, the front view skirt image (1102), the back view skirt image (1104), and the side view skirt image (1106) may be input images. To predict the skirt type, the input images may first be encoded into latent vectors in an image encoder, and then the latent vectors may be concatenated with each other and fed into a multilayer perception (MLP) neural network.

[0072] Training multiview images and skirt type labels can be synthesized from the skirt reconstruction module (or skirt generation module). For example, three types of skirts may be considered in the training process: a smooth skirt (or skirt with a smooth shape) may be labeled as label 0, a pleated skirt (or Z-shaped skirt) may be labeled as label 1, and a wavy skirt (or corrugated skirt) may be labeled as label 2. For each type of skirt, multiple samples, such as 1000 samples, may be synthesized based on one or more steps as follows: (1) For one type of skirt, default values ​​for skirt parameters (e.g., corner points, wrinkle area ratio, wrinkle size, number of wrinkles, etc.) may be determined for skirt reconstruction. (2) Random skirt parameters may be generated. Random skirt parameters may have values ​​that are distributed within a specific range from their default values. (3) The skirt mesh can be reconstructed based on the generated random skirt parameters. (4) Random textures (e.g., random geometric patterns) may be added to the skirt mesh, and the 3D mesh may be further rendered (or transformed) for front, back, and side view images. (5) The rendered image can be converted to grayscale and resized to a resolution of 512 x 512 pixels.

[0073] Therefore, in the training phase, random skirt parameters may be created first. The random skirt parameters are reconstructed into a skirt mesh. The skirt mesh may be rendered into skirt images (e.g., different side view images). Thus, a one-to-one relationship is established between the skirt parameters (in step 2) and the skirt images (in step 5). This one-to-one relationship may be further applied to analyze the skirt parameters of the actual skirt images. For example, a neural network may be applied to determine the skirt type of a skirt based on one or more 2D images of the skirt. In the training phase, the image for each view may be individually encoded by a typical 18-layer ResNet image encoder, yielding three encoded latent vectors. The latent vectors may be concatenated together and fed into an MLP network. The MLP network may have three layers, each with 32, 16, and 3 neurons. The synthetic data set may be split 8:2 for training and testing. For example, the prediction accuracy of the provided neural network could be 98.8% on synthetic test data and 95% on 45 ground truth skirt samples.

[0074] Skirt corner points can be useful in determining the overall silhouette of the skirt during the reconstruction phase. As shown in Figure 13, six key corner points of the skirt can be determined, such as four corners in the side view of the skirt (1302) and two corners in the front view of the skirt (1304). An algorithm can be implemented to automatically detect the coordinates of the corner points by taking front view and side view skirt images as input. An exemplary detection process may be shown in Figure 14 based on one or more steps as follows: (1) In the case of the input skirt image (1402), the input skirt image may be binarized, and the skirt region in the input skirt image may be set as the foreground region. (2) The convex hull 1404 of the binary image can be extracted using any suitable image processing technique. The convex hull may be the set of pixels in the least convex polygon enclosing all foreground regions in the binary image. (3) Smooth points may be filtered out from the convex hull (1404), and points with large curvature may be retained (or preserved). Smooth points may be defined as follows: Point x i and adjacent point x i-1 and x i+1 If the distance between the line formed by and the point x is less than a predetermined threshold, then the point x i These are considered smooth points and are removed from the set of convex hull points. (4) The four corner points may be detected based on points filtered according to one or more rules as follows: For a point with coordinates [x,y], the point with the maximum value of (x+y) is the upper right corner point (1406), the point with the minimum value of (x+y) is the upper left corner point (1408), the point with the maximum value of (xy) is the lower left corner point (1410), and the point with the minimum value of (xy) is the lower right corner point (1412).

[0075] For example, the accuracy of the corner point detection algorithm is 99.95% with 3000 synthetic data points and 99% with 100 ground truth data points.

[0076] To estimate the number of wrinkles, an algorithm can be implemented that takes a front-view skirt image as an input image and estimates the number of wrinkles. For a smooth skirt, the number of wrinkles may be 0 by default. For a pleated skirt, the number of wrinkles can be estimated. The number of wrinkles can be estimated from a front-view skirt image, for example, by a stochastic Hough transform. Figure 15 shows an exemplary process for estimating the number of wrinkles in a pleated skirt based on a stochastic Hough transform. (1) The input image can be converted to grayscale. For example, as shown in Figure 15, the input image (not shown) is converted to a grayscale image (1502). (2) The edge map (1504) of the grayscale converted image (1502) can be extracted by a standard edge detection algorithm, such as the OpenCV cv2.Canny() function. OpenCV is an exemplary library of programming functions, primarily for real-time computer vision. (3) In the edge map of the pleated skirt, wrinkles are represented as linear segments. The stochastic Hough transform can be applied to the edge map to detect linear segments within the edge map. The stochastic Hough transform can be applied algorithmically, such as the cv2.HoughLinesP() function in OpenCV. Two criteria can be applied to avoid detecting texture patterns in the skirt image as linear segments. First, the length of the linear segment should be greater than a preset threshold, which may be set as 50% of the total height of the skirt. Second, the slope of the linear segment should be within a specific range, which may be defined by the slope of the left outer edge in the front view image and the slope of the right outer edge of the skirt. Linear segments that do not meet these two criteria can be filtered out. As shown in Figure 15, long linear segments with a relatively vertical slope (e.g., 1506) are selected as valid linear segments.

[0077] The number of wrinkles can be estimated by counting the valid linear segments detected above. In one example of this disclosure, the mean estimation error is 0.8 for 1000 synthetic data and 1.4 for 32 ground truth samples.

[0078] In the case of a wavy skirt, wrinkles typically form a wavy curve at the bottom of the skirt. Therefore, as shown in Figure 16, the number of wrinkles can be estimated by detecting the peaks of the skirt bottom curve based on one or more steps, as follows: (1) The input front view skirt image (1602) can be converted into a binary mask (or binary image) in which the skirt region of the front view skirt image is set as the foreground mask. (2) The skirt bottom curve (1604) can be extracted from the binary mask. The bottom curve may contain a list of values ​​that represent the y-axis coordinates of the skirt bottom pixels. (3) Standard image processing algorithms, such as the find_peaks() function in Scipy, can be applied to detect peaks in the bottom curve. Several criteria can be applied to avoid noisy fluctuations that affect peak detection. First, the peak prominence should be greater than a preset threshold that can be empirically set to 1. Second, the distance between two adjacent peaks should be greater than a preset threshold that can be empirically set to 5. As shown in Figure 16, six peaks (e.g., 1606) can be detected in the skirt bottom curve.

[0079] The number of wrinkles in a wavy skirt can be estimated by counting the number of effective peaks in the skirt bottom curve. In one example of this disclosure, the mean estimation error is 0.3 for 1000 composite data points and 0.8 for 22 ground truth samples.

[0080] In this disclosure, the size of skirt wrinkles can be estimated by a parameter prediction module. For smooth skirts, wrinkle size information is not required. For pleated skirts, the wrinkle size can start with a default value. For wavy skirts, an algorithm can be implemented that takes a front view skirt image as input and estimates the depth and width of the wrinkles. An exemplary estimation process can be described as follows: (1) The input front view wavy skirt image can be converted into a binary mask (or binary image) (1702), and the bottom curve can be further extracted. To detect the peaks of the bottom curve, algorithms such as the find_peaks() function in Scipy can be applied. (2) Effective peaks can be identified based on three criteria. According to the first criterion, a peak should have a prominence greater than a threshold (e.g., 1). According to the second criterion, the distance between adjacent peaks should be greater than a threshold (e.g., 5). According to the third criterion, a peak should be located within an effective window. The effective window can be defined as a width window covering the central portion of the skirt. The left and right marginal regions of the skirt can be cut off (or excluded) because the peaks in these peripheral regions are typically clustered together and have a small prominence. (3) Peaks in the effective window may be used to estimate wrinkle width and wrinkle depth. Wrinkle width can be estimated as the average distance between two adjacent effective peaks. Wrinkle depth can be estimated as the average prominence of the effective peaks. As shown in Figure 17, five peaks in the effective window are identified as effective peaks.

[0081] In the case of a wavy skirt, the wrinkles typically have two types of 3D structures: double Z-type and single V-type. Each type can use individual structural templates in 3D reconstruction. To distinguish between the wrinkle types of a wavy (or wave-shaped) skirt, an algorithm may be implemented based on one or more of the following steps. (1) The input front view wavy skirt image can be converted into a binary mask (or binary image). Figures 18A and 18B show six types of wavy skirts (e.g., (1802), (1804), and (1806)) as binary images. The bottom curve of the skirt can be extracted from the binary mask. (2) The double Z-type wrinkle shown in Figure 18B and the single V-type wrinkle shown in Figure 18A may have significant differences in the curve gradient of the skirt bottom. As shown in Figure 18B, a wrinkle can be defined as a double Z-type wrinkle when its curve gradient satisfies the following three criteria. (a) The gradient of all points on the bottom curve can be calculated. Points with a gradient greater than a predetermined gradient threshold can be labeled as steep gradient points. In one example, the gradient threshold is 3. (b) A double Z-type wrinkle should have both a positive gradient point and a negative steep gradient point. The positive gradient point (1808) and the negative gradient point (1810) may be shown, for example, in Figure 18B. (c) On the other hand, the distance between a positive gradient point and the nearest negative gradient point should be less than a distance threshold. In one example, the distance threshold can be defined as the average wrinkle width. (3) All non-double Z-type wrinkles may be labeled as single V-type wrinkles.

[0082] In this disclosure, the wrinkle area ratio may be determined by a parameter prediction module. For a smooth skirt, the wrinkle area ratio may be defined as 1 by default. For both pleated and wavy skirts, the wrinkle area ratio may be estimated as the ratio between the maximum wrinkle height of the skirt and the total skirt height. An algorithm for estimating the wrinkle area ratio may be carried out based on one or more of the following steps. (1) Input images, such as front view and skirt images, can be converted to grayscale. (2) The edge map of the converted input image can be extracted using a standard edge detection algorithm, such as the cv2.Canny() function in OpenCV. (3) In edge maps, wrinkles may be represented as linear segments. A stochastic Hough transform can be applied to edge maps to detect linear segments within them. For example, the stochastic Hough transform can be performed based on a programming function, such as the OpenCV cv2.HoughLinesP() function. Two criteria can be applied to avoid detecting texture patterns in the skirt image as linear segments. First, the length of the linear segment can be greater than a preset threshold, which can be set as 10% of the total height of the skirt. Second, the slope of the linear segment can be within a specific range, which can be preset as [-1,1]. Linear segments that do not meet these two criteria can be filtered out. (4) As shown in Figure 19, for both pleated skirts (1902) and wavy skirts (1904), the skirt wrinkle height can be estimated based on the maximum detected wrinkle height. The wrinkle area ratio can be defined as the ratio of the skirt wrinkle height to the skirt height. In one example of this disclosure, the estimation accuracy is 91% over 45 tested ground truth samples.

[0083] Figure 20 shows a comparison between an input image (e.g., (2002)), a manually reconstructed skirt (e.g., (2004)), and a SmartSkirt reconstructed skirt (e.g., (2006)). As shown in Figure 20, the SmartSkirt of this disclosure can reconstruct a high-fidelity skirt using a stylized triangulation.

[0084] Figure 21 is a flowchart illustrating an exemplary process (2100) for generating a 3D garment model (e.g., skirt model) of a garment (e.g., skirt) based on a 2D image, according to some embodiments of the present disclosure. This process may be carried out, for example, by instructions stored in an information processing device or a computer-readable storage medium. Furthermore, although a skirt is used as an example, it should be noted that the process, apparatus, and computer-readable storage medium are applicable to generating models of other types of garments, such as shirts, T-shirts, and pants.

[0085] As shown in Figure 21, process (2100) can start from (S2101) and proceed to (S2110). In (S2110), a garment template is determined from a pre-built garment model and associated with a garment. A garment is comprised of multiple 2D images, each corresponding to a different side of the garment. The garment template represents a 3D mesh containing multiple full loops, each of which contains multiple vertices.

[0086] In (S2120), multiple side silhouettes of a garment are determined based on multiple 2D images.

[0087] In (S2130), multiple key point sets are determined based on multiple full loops and multiple side silhouettes of the garment template. Each of the multiple key point sets is determined based on one of the corresponding full loops of the garment template and includes at least one of a central key point or an edge key point.

[0088] In (S2140), multiple vertices and multiple edge loops of a 3D garment model are determined based on multiple keypoint sets and multiple garment parameters associated with multiple 2D images of a garment. Each of the multiple edge loops includes (i) a first side and a second side, and (ii) one or more vertices from the multiple vertices.

[0089] In (S2150), multiple faces of the 3D clothing model are determined based on multiple vertices contained within multiple edge loops.

[0090] In some embodiments, the 3D garment model is generated based on a set of determined vertices and a set of determined faces. In one example, the 3D garment model is generated by combining a set of determined vertices and a set of determined faces.

[0091] In one example, to determine a clothing template, a body silhouette is determined associated with multiple 2D images of a single garment. To determine the body silhouette, a 3D model of the body is determined based on one or more of the multiple 2D images. Multiple height values ​​are determined associated with the lower part of the body in the 3D model. Each of the multiple height values ​​represents a different height along the lower part of the body. A set of vertices is determined for each of the multiple height values. Each of the vertex sets contains multiple vertices within the range corresponding to one of the multiple height values. Multiple boundary loops of the body silhouette are determined. Each of the multiple boundary loops contains one of the vertex sets.

[0092] In one example, to determine a garment template, vertices contained in multiple full loops are extracted from the foreground layer of a garment in multiple 2D images. The vertices contained in the multiple full loops are sorted from the top to the bottom of the multiple full loops. The vertices in each of the multiple full loops are also sorted in a clockwise direction, etc. Faces are generated based on the sorted vertices of the multiple full loops. The multiple full loops are extended by adding vertices to the top and bottom of the multiple full loops. The distance between each of the two full loops is adjusted. Vertices and faces of multiple half-loops are extracted. The multiple half-loops are associated with the body silhouettes of bodies contained in multiple 2D images. The garment template is determined based on (i) the vertices and faces of the multiple full loops and (ii) the vertices and faces of the multiple half-loops.

[0093] In some embodiments, to determine multiple side silhouettes of a garment, the left silhouette is determined based on the left boundary of the garment in a front view image of multiple 2D images. The front silhouette is determined based on the front boundary of the garment in a side view image of multiple 2D images. The back silhouette is determined based on the back boundary of the garment in a side view image of multiple 2D images.

[0094] In one example, to determine multiple keypoint sets, the top full loop of the multiple full loops of the garment template is sorted to the top of a garment, and the bottom full loop of the multiple full loops of the garment template is sorted to the bottom of a garment, based on the fact that the center of each of the multiple full loops of the garment template is included in at least one of the front view images of the multiple 2D images or the side view images of the multiple 2D images. The center keypoint, left keypoint, front keypoint, and back keypoint of each of the multiple full loops of the garment template are determined to be keypoints included in the multiple keypoint sets.

[0095] In one example, to determine multiple vertices, multiple edge loops of a 3D garment model are determined based on multiple keypoint sets. Each of the multiple edge loops is determined based on one of the keypoint sets. Therefore, the center of each of the multiple edge loops is the central keypoint of each of the keypoint sets. The diameter of each of the multiple edge loops along its principal axis is the difference between the central keypoint and the left keypoint of each of the keypoint sets. The first distance along each of the multiple edge loops along its secondary axis is the difference between the central keypoint and the previous keypoint of each of the keypoint sets. The second distance along each of the multiple edge loops along its secondary axis is the difference between the central keypoint and the back keypoint of each of the keypoint sets.

[0096] In one example, to determine multiple vertices, based on multiple garment parameters indicating that a garment is a first skirt type (e.g., a smooth-shaped skirt), M is used on each first side (e.g., the front side) of multiple edge loops. s The set of vertices for / 2 is determined, and the M on the first side s Each of the vertex groups of / 2 contains the respective vertex. s The set of vertices for / 2 is determined on one of the corresponding second sides (e.g., the back side) of the multiple edge loops, and the M on the second side s Each of the vertex groups of / 2 contains its own vertex, M s This is a predefined group number.

[0097] In one example, to determine multiple vertices, M is used on the first side of each of the multiple edge loops based on multiple garment parameters that indicate that one garment is a second skirt type (e.g., a Z-shaped skirt). z The set of vertices for / 2 is determined, and on the second side of one of the multiple edge loops, M z The set of vertices for / 2 is determined. z This indicates a predefined number of wrinkles associated with a single garment.z Two vertices in each of the vertex groups of / 2 are determined in the first edge loop of the multiple edge loops, and the two vertices include one vertex in the wrinkled region of one garment and another vertex in the non-wrinkled region. M in the edge loops other than the first edge loop of the multiple edge loops z In each of the vertex groups of / 2, three vertices are determined, and these three vertices include the first and second vertices in the wrinkled region of a garment, and the third vertex in the non-wrinkled region.

[0098] In one example, to determine multiple vertices, M is used based on multiple garment parameters that indicate a garment is a third type of skirt (e.g., a wavy skirt). w The set of vertices of / 2 is determined on the first side of each of the multiple edge loops, M w The set of vertices of / 2 is determined on the second side of one of the corresponding edge loops, M w This indicates a predefined number of wrinkles associated with a single garment. M in the first edge loop of multiple edge loops. w In each of the vertex groups of / 2, two vertices are determined. These two vertices include a first vertex in the wrinkled region of a garment and a second vertex in the non-wrinkled region. In response to the transition between the first edge loop and the second edge loop being less than the transition threshold, M in the second edge loop of the multiple edge loops w Four vertices are determined in each of the vertex sets of / 2. The four vertices include three vertices in the wrinkled region of a garment and one vertex in the non-wrinkled region. In response to the transition between the first edge loop and the second edge loop being greater than or equal to the transition threshold, M in the second edge loop of the multiple edge loops w Eight vertices are determined in each of the vertex groups of / 2. These eight vertices include seven vertices in the wrinkled region of a garment and vertices in the non-wrinkled region. M in edge loops other than the first and second edge loops of multiple edge loops wIn each of the vertex groups of / 2, eight vertices are determined, and these eight vertices include seven vertices in the wrinkled region and one vertex in the non-wrinkled region of a garment.

[0099] To determine multiple faces of a 3D garment model, in one example, based on multiple garment parameters indicating that a garment is a first skirt type, such as a smooth-shaped skirt, the multiple faces of the 3D garment model are determined based on the faces associated with the garment template. In one example, based on multiple garment parameters indicating that a garment is one of a second skirt type (e.g., a Z-shaped skirt) and a third skirt type (e.g., a wavy skirt), in response that a first edge loop and a second edge loop of a plurality of edge loops have the same number of vertices, (i) the first vertex of the first edge loop and the first vertex of the second edge loop, (ii) the second vertex of the first edge loop and the second vertex of the second edge loop, and (iii) the first vertex of the first edge loop and the second vertex of the second vertex are connected to form two faces, respectively. In response to the fact that the first and second edge loops among the multiple edge loops have different numbers of vertices, (i) the first vertex of the first edge loop and the first vertex of the second edge loop, and (ii) the first vertex of the first edge loop and the second vertex of the second edge loop are connected on the basis that the Euclidean distance between the first vertex of the first edge loop and the second vertex of the second edge loop is smaller than the Euclidean distance between the first vertex of the second edge loop and the second vertex of the first edge loop.

[0100] In some embodiments, the multiple garment parameters represent at least one of the following: garment type, number of garment corner points, number of garment wrinkles, size of garment wrinkles, wrinkle type, or area ratio of garment wrinkles.

[0101] In this method, the clothing type of a single garment is determined. To determine the clothing type of a single garment, a neural network is trained based on random garment parameters, and the clothing type of a single garment is determined based on the neural network.

[0102] In one example, default values ​​for feature parameters associated with the garment type of a garment are determined to train a neural network. Feature parameters may include the number of corner points of the garment, the number of wrinkles, the size of the wrinkles, the wrinkle type, or the area ratio of the wrinkles. The garment type of a garment includes one of the following: a smooth-shaped skirt, a Z-shaped skirt, and a wavy skirt. Random values ​​are generated for the feature parameters. Each random value falls within the range of one of the default values ​​corresponding to one of the feature parameters. The garment mesh is reconstructed based on the generated random values ​​for the feature parameters. A random texture is added to the garment mesh, which exhibits a random geometric pattern. Front, back, and side views of the garment are rendered based on the reconstructed garment mesh with the added random texture.

[0103] This method determines the number of clothing corner points associated with a single garment. To determine the number of clothing corner points associated with a single garment, one of several 2D images is binarized into a binary image, and the clothing region in the binary image is set as the foreground region. A convex hull is extracted from the binary image. The convex hull represents the set of pixels in a convex polygon enclosing the foreground region in the binary image. Smooth points are filtered out from the convex hull to retain the unsmooth points. Each unsmooth point contains a curvature greater than or equal to a threshold. For each unsmooth point, (i) the sum of the first and second coordinate values, and (ii) the difference between the first and second coordinate values ​​are determined. The upper right corner point corresponding to the maximum value of the sum of the first and second coordinate values ​​is determined. The upper left corner point corresponding to the minimum value of the sum of the first and second coordinate values ​​is determined. The lower left corner point corresponding to the maximum difference between the first and second coordinate values ​​is determined, and the lower right corner point corresponding to the minimum difference between the first and second coordinate values ​​is determined.

[0104] This method determines the number of wrinkles associated with a garment. To determine the number of wrinkles, one of several 2D images is converted to grayscale, based on the assumption that the garment is a Z-shaped skirt. An edge map is extracted from the converted 2D image. Multiple linear segments are determined in the extracted edge map based on a stochastic Hough transform. The number of wrinkles in the garment is determined based on the number of determined linear segments.

[0105] This method determines the number of wrinkles associated with a garment. To determine the number of wrinkles, one of several 2D images is binarized into a binary image based on the fact that the garment is a wavy skirt, and the garment region in the binary image is set as the foreground region. The bottom curve of the garment is extracted from the binary image. Multiple peaks in the bottom curve are determined such that each of the multiple peaks has a peak prominence greater than a first threshold, and the distance between two adjacent peaks among the multiple peaks is greater than a second threshold. The number of determined multiple peaks is used to determine the number of wrinkles in the garment.

[0106] This method determines the size of wrinkles associated with a garment. To determine the size of the wrinkles, one of several 2D images is binarized into a binary image, based on the fact that the garment is a wavy skirt. The bottom curve of the garment is extracted from the binary image. Multiple peaks in the bottom curve are determined such that each of the multiple peaks has a peak prominence greater than a first threshold, the distance between two adjacent peaks of the multiple peaks is greater than a second threshold, and each of the multiple peaks is located within a valid window that includes the central portion of the garment. The wrinkle width is determined as the average distance between two adjacent peaks of the multiple peaks, and the wrinkle depth is determined as the average prominence of the multiple peaks.

[0107] In this method, the wrinkle type is determined based on the fact that a garment is a wavy skirt. To determine the wrinkle type, one of several 2D images is binarized into a binary image. The bottom curve of the garment is determined based on the binary image. Whether the wrinkle type is double Z-type or single V-type is determined based on the slope of the bottom curve.

[0108] This method determines the area ratio of wrinkles associated with a single garment. To determine the area ratio of wrinkles, one of several 2D images is converted to grayscale based on the fact that the garment is either a Z-shaped skirt or a wavy skirt. An edge map is extracted from the converted 2D image. From the extracted edge map, multiple linear segments corresponding to the wrinkles of the garment are determined. The area ratio of wrinkles is determined based on the ratio of the maximum wrinkle height to the height of the garment.

[0109] The techniques described above may be implemented as computer software using computer-readable instructions and may be physically stored on one or more computer-readable media. For example, Figure 22 shows a computer system (2200) suitable for carrying out a particular embodiment of the subject matter of the disclosure.

[0110] Computer software can be coded using any suitable machine code or computer language that can undergo mechanisms such as assembly, compilation, and linking to create code that includes instructions that can be executed directly or via interpretation, microcode execution, etc., by one or more computer central processing units (CPUs), graphics processing units (GPUs), etc.

[0111] Instructions can be executed on various types of computers or their components, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, and Internet of Things devices.

[0112] The components shown in Figure 22 for the computer system (2200) are essentially illustrative and are not intended to imply any limitation on the scope of use or functionality of computer software implementing embodiments of the present disclosure. The configuration of the components should not be construed as having any dependencies or requirements on any one or combination of components shown in the exemplary embodiment of the computer system (2200).

[0113] The computer system (2200) may include certain human interface input devices. Such human interface input devices may respond to input from one or more human users via, for example, haptic input (keystrokes, swipes, data glove movements, etc.), audio input (voice, applause, etc.), visual input (gestures, etc.), or olfactory input (not shown). The human interface devices may be used to capture certain media that are not necessarily directly related to conscious human input, such as voice (e.g., speech, music, ambient sounds), images (e.g., scanned images, photographic images acquired from a still image camera), or video (e.g., two-dimensional video, three-dimensional video including stereoscopic video, etc.).

[0114] The input human interface device may include one or more of the following (only one of each shown): keyboard (2201), mouse (2202), trackpad (2203), touchscreen (2210), data glove (not shown), joystick (2205), microphone (2206), scanner (2207), and camera (2208).

[0115] The computer system (2200) may also include certain human interface output devices. Such human interface output devices may stimulate the senses of one or more human users, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (for example, haptic feedback devices that have haptic feedback via a touch screen (2210), a data glove (not shown), or a joystick (2205), but do not function as input devices); audio output devices (such as a speaker (2209), headphones (not shown)); and visual output devices (such as a screen (2210)) (including CRT screens, LCD screens, plasma screens, and OLED screens, each having or not having touchscreen input functionality, each having or not having haptic feedback functionality, and some of them being able to output two-dimensional visual output or three-dimensional or more-dimensional output via means such as stereo output, such as virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown), or printers (not shown).

[0116] A computer system (2200) may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW (2220) with media such as CD / DVD (2221), thumb drives (2222), removable hard drives or solid-state drives (2223), legacy magnetic media such as tapes and floppy disks (not shown), and dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown).

[0117] Those skilled in the art should also understand that the term “computer-readable medium” as used in connection with the subject matter of this disclosure does not include transmission media, carrier waves, or other transient signals.

[0118] A computer system (2200) may also include an interface (2254) to one or more communication networks (2255). These networks may be, for example, wireless, wired, or optical. Networks may further be local, wide-area, metropolitan, vehicle and industrial, real-time, latency-tolerant, etc. Examples of networks include local area networks such as Ethernet® and wireless LAN; cellular networks such as GSM®, 3G, 4G, 5G, and LTE; wired or wireless wide-area digital television networks such as cable TV, satellite TV, and terrestrial broadcast TV; and vehicle and industrial networks such as CANBus. Certain networks generally require an external network interface adapter attached to a specific general-purpose data port or peripheral bus (2249) (e.g., a USB port on a computer system (2200)), while others are generally integrated into the core of the computer system (2200) by attachment to a system bus, such as those described later (e.g., an Ethernet® interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (2200) may communicate with other entities. Such communication may be unidirectional and receive only (e.g., broadcast television), unidirectional and transmit only (e.g., CANbus to a specific CANbus device), or bidirectional to other computer systems using a local network or wide-area digital network, for example. Specific protocols and protocol stacks may be used on each of these networks and network interfaces, as described above.

[0119] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be mounted on the core (2240) of the computer system (2200).

[0120] The core (2240) may include one or more central processing units (CPUs) (2241), graphics processing units (GPUs) (2242), dedicated programmable processing units in the form of field-programmable gate areas (FPGAs) (2243), hardware accelerators for specific tasks (2244), graphics adapters (2250), and the like. These devices, along with read-only memory (ROMs) (2245), random-access memory (2246), internal mass storage devices such as internal non-user-accessible hard drives, SSDs, etc. (2247), may be connected via a system bus (2248). In some computer systems, the system bus (2248) may be accessible in the form of one or more physical plugs to allow expansion by additional CPUs, GPUs, etc. Peripheral devices can be connected directly to the core's system bus (2248) or via a peripheral bus (2249). For example, a display (2210) may be connected to a graphics adapter (2250). Architectures for peripheral buses include PCI, USB, and others.

[0121] The CPU (2241), GPU (2242), FPGA (2243), and accelerator (2244) can execute certain instructions that, in combination, may constitute the computer code described above. This computer code may be stored in ROM (2245) or RAM (2246). Temporary data may also be stored in RAM (2246), while persistent data may be stored, for example, in internal mass storage (2247). The use of cache memory, which may be closely associated with one or more CPUs (2241), GPUs (2242), mass storage (2247), ROM (2245), RAM (2246), etc., may enable high-speed storage and retrieval of any of the memory devices.

[0122] A computer-readable medium may have computer code on it for performing various computer implementation operations. The medium and the computer code may be specifically designed and constructed for the purposes of this disclosure, or they may be of a type that is well known and available to those skilled in the computer software technology.

[0123] For illustrative purposes only, and not for limiting purposes, a computer system (2200) having an architecture, in particular a core (2240), may provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) that runs software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with user-accessible mass storage as described above, as well as certain storage devices of the core (2240) that are non-transient in nature, such as the core's internal mass storage (2247) or ROM (2245). Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the core (2240). The computer-readable media may include one or more memory devices or chips, depending on the specific needs. The software may cause the core (2240) and, specifically, the processors (including a CPU, GPU, FPGA, etc.) within it to execute certain processes or specific parts of certain processes as described herein, including defining data structures stored in RAM (2246) and modifying such data structures according to processes defined by the software. In addition, or alternatively, a computer system may provide functionality as a result of logic embodied in a circuit (e.g., an accelerator (2244)) in a hardwired or otherwise manner, and the circuit may operate in place of or with software to perform a particular process or a particular part of a particular process described herein. References to software may, where appropriate, encompass logic, and vice versa. References to computer-readable media may, where appropriate, encompass a circuit that stores software for execution (e.g., an integrated circuit (IC)), a circuit that embodies logic for execution, or both. This disclosure encompasses any appropriate combination of hardware and software.

[0124] While this disclosure has described several exemplary embodiments, there are many variations, substitutions, and alternative equivalents that fall within the scope of this disclosure. Those skilled in the art will therefore understand that numerous systems and methods not expressly shown or described herein can be devised to embody the principles of this disclosure and thus fall within its spirit and scope.

Claims

1. A method for generating a three-dimensional (3D) garment model of a single garment, Determining a garment template from a pre-constructed garment model associated with the garment, wherein the garment comprises a plurality of 2D images, the plurality of 2D images correspond to different sides of the garment, and the garment template represents a 3D mesh comprising a plurality of full loops, each of which comprises a plurality of vertices. Based on the aforementioned multiple 2D images, multiple side silhouettes of the garment are determined, Determining a plurality of key point sets based on the plurality of full loops and the plurality of side silhouettes of the garment template, wherein each of the plurality of key point sets is determined based on one of the plurality of full loops of the garment template and includes at least one of a central key point or an edge key point. Determining a plurality of vertices and edge loops of the 3D garment model based on the plurality of keypoint sets and a plurality of garment parameters associated with the plurality of 2D images of the garment, wherein each of the plurality of edge loops includes (i) a first side and a second side, and (ii) one or more vertices from the plurality of vertices. Determining multiple faces of the 3D garment model based on the multiple vertices included in the multiple edge loops. A method that includes this.

2. To generate the 3D clothing model based on the determined plurality of vertices and the determined plurality of faces. The method according to claim 1, further comprising:

3. Determining the garment template includes determining the body silhouette of the body associated with the plurality of 2D images of the garment, Determining the aforementioned body silhouette Determining a 3D model of the body based on one or more of the aforementioned 2D images, Determining a plurality of height values ​​associated with the lower part of the body in the 3D model, wherein each of the plurality of height values ​​represents a respective height along the lower part of the body. Determining a set of vertices for each of the aforementioned multiple height values, wherein each of the aforementioned set of vertices includes multiple vertices within a range corresponding to one of the aforementioned multiple height values. Determining a plurality of boundary loops of the body silhouette of the body, wherein each of the plurality of boundary loops includes a corresponding one of the vertex set. The method according to claim 1, further comprising:

4. Determining the aforementioned garment template Extracting the vertices included in the multiple full loops from the foreground layer of one garment in the multiple 2D images, The vertices included in the plurality of full loops are sorted from the upper side of the plurality of full loops to the lower side of the plurality of full loops, and the plurality of vertices in each of the plurality of full loops are sorted, The process of generating faces based on the sorted vertices of the aforementioned multiple full loops, Extending the plurality of full loops by adding vertices to the upper and lower sides of the plurality of full loops, Adjusting the distance between each of the two full loops among the aforementioned multiple full loops, Extracting vertices and faces of multiple half-loops associated with the body silhouette of the body included in the multiple 2D images, (i) determining the garment template based on the vertices and faces of the plurality of full loops, and (ii) determining the vertices and faces of the plurality of half loops. The method according to claim 3, further comprising:

5. Determining the multiple side silhouettes of the aforementioned garment is The left silhouette is determined based on the left boundary of the garment in the front view images of the plurality of 2D images, The front silhouette is determined based on the front boundary of the garment in the side view images of the plurality of 2D images, The rear silhouette is determined based on the back boundary of the garment in the side view image of the plurality of 2D images. The method according to claim 4, further comprising:

6. Determining the aforementioned set of multiple key points is Based on the fact that the center of each of the plurality of full loops of the garment template is included in at least one of the front view images of the plurality of 2D images or the side view images of the plurality of 2D images, Align the uppermost full loop of the multiple full loops of the garment template with the upper side of the garment, and align the lowermost full loop of the multiple full loops of the garment template with the lower side of the garment, The central key point, left key point, front key point, and back key point of each of the multiple full loops of the garment template are determined to be the key points included in the set of multiple key points. The method according to claim 5, further comprising:

7. Determining the aforementioned multiple vertices Determining the plurality of edge loops of the 3D garment model based on the plurality of key point sets, wherein each of the plurality of edge loops is determined based on one of the plurality of key point sets. It further includes, The center of each of the aforementioned multiple edge loops is one central key point of each of the aforementioned multiple key point sets, The diameter of each of the principal axes of the plurality of edge loops is the difference between one of the central keypoints and the left keypoint of each of the plurality of keypoint sets. The first distance on each of the sub-axis of the plurality of edge loops is the difference between each of the central keypoints and the preceding keypoint of the plurality of keypoint sets. The method according to claim 6, wherein the second distance on the sub-axis of each of the plurality of edge loops is the difference between each of the plurality of key point sets, the central key point and the post-key point.

8. Determining the aforementioned multiple vertices Based on the plurality of garment parameters indicating that the garment is of the first skirt type, M on the first side of each of the plurality of edge loops s The determination of the vertex group of / 2, wherein the M on the first side s Each of the vertex groups of / 2 is determined to contain the respective vertex, The M on the second side of the corresponding one of the plurality of edge loops s The determination of the vertex group of / 2, and the M on the second side s Each of the vertex groups of / 2 contains its own vertex, M s The group number is a predefined number, and to determine that The method according to claim 7, further comprising:

9. Determining the aforementioned multiple vertices Based on the plurality of garment parameters indicating that the garment is a second skirt type, M on the first side of each of the plurality of edge loops z The vertex group of / 2 and the corresponding one of the second side M of the plurality of edge loops z This involves determining the vertex group of / 2, M z It is determined that this indicates a predetermined number of wrinkles associated with the garment, Determining two vertices at each of the vertex groups of M / 2 in the first edge loop among the plurality of edge loops, wherein the two vertices include a vertex in the wrinkle region of the clothing of the single piece and another vertex in a non-wrinkle region z and In the edge loops other than the first edge loop among the plurality of edge loops, the M z The determination of three vertices in each of the vertex groups of / 2, wherein the three vertices include the first and second vertices in the wrinkled region of the garment and the third vertex in the non-wrinkled region. The method according to claim 7, further comprising:

10. Determining the aforementioned multiple vertices Based on the plurality of garment parameters indicating that the garment is a third type of skirt, M on the first side of each of the plurality of edge loops w The vertex group of / 2, and the corresponding M on the second side of the plurality of edge loops w This involves determining the vertex group of / 2, M w However, it is necessary to determine the number of wrinkles associated with the aforementioned garment, In the first edge loop of the plurality of edge loops, the M w Determining two vertices in each of the vertex groups of / 2, wherein the two vertices include a first vertex in the wrinkled region of the garment and a second vertex in the non-wrinkled region. In response to the transition between the first edge loop and the second edge loop of the plurality of edge loops being less than the transition threshold, the M in the second edge loop w Determining four vertices in each of the vertex groups of / 2, wherein the four vertices include three vertices in the wrinkled region and one vertex in the non-wrinkled region of the garment. In response to the transition between the first edge loop and the second edge loop being greater than or equal to the transition threshold, the M in the second edge loop of the plurality of edge loops w Determining eight vertices in each of the vertex groups of / 2, wherein the eight vertices include the seven vertices in the wrinkled region and the vertices in the non-wrinkled region of the garment. In the edge loops other than the first and second edge loops among the plurality of edge loops, the M w The determination of eight vertices in each of the vertex groups of / 2, wherein the eight vertices include seven vertices in the wrinkled region and one vertex in the non-wrinkled region of the garment. The method according to claim 7, further comprising:

11. Determining the plurality of faces of the 3D garment model, Based on the plurality of garment parameters indicating that the garment is of a first skirt type, the plurality of faces of the 3D garment model are determined based on the faces associated with the garment template, Based on the plurality of garment parameters indicating that the garment is one of the second skirt type and the third skirt type, In response to the fact that the first edge loop and the second edge loop among the plurality of edge loops have the same number of vertices, in order to form the two faces, (i) connect the first vertex of the first edge loop and the first vertex of the second edge loop; (ii) connect the second vertex of the first edge loop and the second vertex of the second edge loop; (iii) connect the first vertex of the first edge loop and the second vertex of the second edge loop; In response to the fact that the first edge loop and the second edge loop of the plurality of edge loops have different numbers of vertices, (i) connect the first vertex of the first edge loop and the first vertex of the second edge loop, and (ii) connect the first vertex of the first edge loop and the second vertex of the second edge loop based on the fact that the Euclidean distance between the first vertex of the first edge loop and the second vertex of the second edge loop is smaller than the Euclidean distance between the first vertex of the second edge loop and the second vertex of the first edge loop. The method according to claim 4, further comprising:

12. The method according to claim 1, wherein the plurality of garment parameters indicate at least one of the following: garment type, number of corner points of garment, number of wrinkles of garment, size of wrinkles of garment, wrinkle type, or area ratio of wrinkles of garment.

13. To determine the type of garment of the aforementioned garment. It further includes, Determining the type of garment of the aforementioned garment is Training a neural network based on random clothing parameters, Determining the garment type of the garment based on the neural network The method according to claim 12, further comprising:

14. Training the aforementioned neural network Determining default values ​​for characteristic parameters associated with the garment type of a garment, wherein the garment type of the garment includes one of a smooth-shaped skirt, a Z-shaped skirt, and a wavy skirt. To generate random values ​​for the feature parameters, wherein each of the random values ​​is within the range of the default values ​​corresponding to one of the feature parameters. Reconstructing the garment mesh based on the generated random values ​​of the aforementioned feature parameters, Adding a random texture to the garment mesh, wherein the random texture exhibits a random geometric pattern; Rendering a front garment view, a back garment view, and a side garment view of a garment based on the reconstructed garment mesh having the added random textures. The method according to claim 13, further comprising:

15. To determine the number of garment corner points associated with the aforementioned garment. It further includes, Determining the number of corner points of the garment associated with the garment is One of the aforementioned 2D images is to be binarized into a binary image in which the clothing region in the binary image is set as the foreground region. Extracting a convex hull from the binary image, wherein the convex hull represents a set of pixels in a convex polygon surrounding the foreground region in the binary image. To retain non-smooth points, the smooth points are filtered out from the convex hull, wherein each of the non-smooth points contains a curvature greater than or equal to a threshold. For each of the aforementioned non-smooth points, (i) the sum of the first coordinate value and the second coordinate value, and (ii) the difference between the first coordinate value and the second coordinate value are determined. Determine the upper right corner point corresponding to the maximum value of the sum of the first coordinate value and the second coordinate value, the upper left corner corresponding to the minimum value of the sum of the first coordinate value and the second coordinate value, the lower left corner point corresponding to the maximum value of the difference between the first coordinate value and the second coordinate value, and the lower right corner point corresponding to the minimum value of the difference between the first coordinate value and the second coordinate value. The method according to claim 12, further comprising:

16. To determine the number of wrinkles in the garment associated with the garment. It further includes, Determining the number of wrinkles in the aforementioned garment is Based on the fact that the aforementioned garment is a Z-shaped skirt, Converting one of the aforementioned 2D images to grayscale, Extracting an edge map from one of the aforementioned multiple 2D images after conversion, The process involves determining multiple linear segments in the extracted edge map based on a stochastic Hough transform, Determining the number of wrinkles in the garment based on the number of predetermined linear segments. The method according to claim 12, further comprising:

17. To determine the number of wrinkles in the garment associated with the garment mentioned above. It further includes, Determining the number of wrinkles in the aforementioned garment is Based on the fact that the aforementioned garment is a wavy skirt, One of the aforementioned 2D images is binarized into a binary image in which the clothing region in the binary image is set as the foreground region. Extracting the bottom curve of the garment from the aforementioned binary image, The multiple peaks in the bottom curve of the garment are determined such that each of the multiple peaks has a peak protrusion greater than a first threshold, and the distance between two adjacent peaks among the multiple peaks is greater than a second threshold. The number of wrinkles in the garment is determined as the number of the multiple peaks that have been determined. The method according to claim 12, further comprising:

18. To determine the size of the wrinkles in the garment associated with the aforementioned garment. It further includes, Determining the size of the wrinkles in the aforementioned garment is Based on the fact that the aforementioned garment is a wavy skirt, One of the aforementioned 2D images is binarized into a binary image, Extracting the bottom curve of the garment from the aforementioned binary image, The plurality of peaks of the bottom curve are determined such that each of the plurality of peaks has a peak protrusion greater than a first threshold, the distance between two adjacent peaks among the plurality of peaks is greater than a second threshold, and each of the plurality of peaks is located within an effective window that includes the central portion of the garment. The wrinkle width is determined as the average distance between two adjacent peaks among the aforementioned multiple peaks, and the wrinkle depth is determined as the average protrusion of the multiple peaks. The method according to claim 12, further comprising:

19. Determining the wrinkle type of the garment based on the fact that the garment is a wavy skirt. It further includes, Determining the wrinkle type is One of the aforementioned 2D images is binarized into a binary image, Based on the aforementioned binary image, the bottom curve of the garment is determined, The method of determining whether the wrinkle type is a double Z type or a single V type is based on the gradient of the bottom curve. The method according to claim 12, further comprising:

20. To determine the area ratio of wrinkles in the garment associated with the garment. It further includes, Determining the area ratio of wrinkles in the aforementioned clothing is Based on the fact that the aforementioned garment is one of a Z-shaped skirt and a wave-shaped skirt, Converting one of the aforementioned 2D images to grayscale, Extracting an edge map from one of the aforementioned multiple 2D images after conversion, Determining multiple straight line segments corresponding to wrinkles in the garment from the extracted edge map, The area ratio of wrinkles in the garment is determined based on the ratio of the maximum wrinkle height of the wrinkle to the height of the garment. The method according to claim 12, further comprising: