Method and system for providing temporary texture application to enhance 3D modeling - Patents.com
By applying temporary textures to untextured regions using a neural radiance field model and blending them with the original image, the challenges of incomplete reconstructions in 3D modeling are addressed, enhancing the accuracy and precision of 3D surface modeling.
Patent Information
- Application Number
- JP2023551970
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-02-28
- Publication Date
- 2024-12-24
- Estimated Expiration
- 2041-02-28
AI Technical Summary
Existing 3D modeling techniques struggle with untextured regions, such as surfaces with high color uniformity and gloss, leading to incomplete or distorted reconstructions due to the difficulty in tracking key points across different viewing angles.
Applying a temporary texture to untextured regions using a neural radiance field model to enhance keypoint detection, followed by blending this texture with the original image to generate a 3D model, and then excluding it from the texture map.
Improves the accuracy of 3D surface modeling by enabling effective keypoint tracking and reconstruction of untextured areas, resulting in a more precise 3D model with maintained original textures.
Smart Images

Figure 0007606007000001 
Figure 0007606007000002 
Figure 0007606007000003
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS N / A
[0002] STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT N / A [Background technology]
[0003] Computer graphics are rendered to a user as one or more images on a display. These images may be generated from a three-dimensional (3D) model that represents a particular scene. The 3D model may mathematically define one or more objects in terms of shape, size, texture, and other visual parameters. In addition, the 3D model may define how various objects are spatially positioned relative to other objects in the 3D model. The 3D model may be formatted as various data structures or files and loaded into memory. Once generated, the computing device may render one or more images of the 3D model for display. The images may be characterized by a particular viewing angle, zoom, and / or position relative to the 3D model. There may be a variety of techniques used to generate and format the 3D models. Summary of the Invention
[0004] Various features of examples and embodiments according to the principles described herein may be more readily understood by reference to the following detailed description, taken in conjunction with the accompanying drawings, in which like reference numerals designate like structural elements and in which: [Brief description of the drawings]
[0005] [Figure 1] 1 illustrates a process for converting a physical object into a three-dimensional (3D) model according to an embodiment consistent with principles described herein.
[0006] [Figure 2A-B] 1 illustrates a failure case for modeling an object with textureless regions according to an embodiment consistent with principles described herein.
[0007] [Figure 3A] 1 illustrates an example of generating a 3D model according to an embodiment consistent with principles described herein. [Figure 3B] 1 illustrates an example of generating a 3D model according to an embodiment consistent with principles described herein.
[0008] [Figure 4] 1 illustrates an example of applying a temporary texture according to an embodiment consistent with principles described herein.
[0009] [Figure 5A-B] 1 illustrates an example of enhancing a 3D model through the use of temporary textures, according to an embodiment consistent with principles described herein.
[0010] [Figure 6] 1 shows a flowchart of a system and method for generating a 3D model according to an embodiment consistent with principles described herein.
[0011] [Figure 7] FIG. 1 is a schematic block diagram depicting an exemplary diagram of a computing device for generating and rendering 3D models for display, according to an embodiment consistent with principles described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0012] Particular examples and embodiments have other features in addition to, and in place of, the features shown in the above-referenced figures. These and other features are described in detail below with reference to the above-referenced figures.
[0013] Examples and embodiments according to principles described herein provide techniques for improving three-dimensional (3D) models generated from a set of input images. In particular, embodiments relate to providing a more reliable method for creating 3D models of objects that have texture-free regions (e.g., surfaces with high color uniformity and glossiness). When input images have such texture-free regions, it can be difficult to track and correlate points in those regions across various viewing angles. This results in lower quality keypoint data, which creates incomplete or distorted 3D reconstruction results. To address this issue, embodiments relate to applying temporary textures to these texture-free regions to compute the surface of the 3D model. The temporary texture creates the ability to track common points across various views, thereby improving the modeled surface. In addition, the original images are used in creating a texture map from the improved surface model. Reusing the original images excludes the temporary textures in generating the texture map.
[0014] In some embodiments, a pre-trained neural network can be used to encode the geometry of the object in a volume density function before applying the temporary texture. This allows the temporary texture to be applied to the object surface before developing a complete surface model and before running the entire reconstruction pipeline. In some embodiments, a Neural Radiance Field (NeRF) model is generated to create a volume density model that defines the volume density characteristics of the 3D model. A predefined color function is applied to the pseudo-random texture to create a textured image with the same volume density as the input image set. The temporary texture is applied by blending the input image set with the textured image to apply the texture only to non-textured regions.
[0015] FIG. 1 illustrates a process of converting a physical object into a 3D model consistent with the principles described herein. FIG. 1 depicts an image capture process 103. The image capture process 103 can take place in a studio or any other physical environment. The goal is to visually capture an object 106(s) using one or more cameras 109. The one or more cameras 109 can capture images of the object 106 from various viewing angles. In some cases, the different views can at least partially overlap, thereby capturing different facets of the object 106. Thus, the image capture process 103 converts the object 106 occupying a physical space into an image set 112. The image set 112 may be referred to as an input image set because it is used as an input for generating a 3D model using a 3D modeling process 115. The image set 112 can include multiple images visually representing the object 106 at various viewing angles. The image set 112 can be formatted and stored in memory in various image formats, such as bitmap or raster formats.
[0016] The 3D modeling process 115 is a computer-implemented process that converts the image set 112 into a 3D model 114. The 3D modeling process 115 may be implemented as a software program, routine, or module executable by a processor. The 3D modeling process 115 can access memory to retrieve the image set 112 and generate a corresponding 3D model 114. The 3D modeling process 115 further stores the 3D model 114 in memory as a file or other data format.
[0017] The 3D modeling process 115 can identify key points that are common to at least a subset of the images in the image set 112. As used herein, a "key point" is defined as a point of the object 106 that appears in two or more images in the image set. For example, a particular corner of the object 106 may be captured in several images in the image set 112. This particular corner may have various locations within the image set 112 because it is captured at different viewing angles. The 3D modeling process 115 can identify the particular corner as one of many key points in order to reconstruct the object 106 as a 3D model 114.
[0018] The 3D model 114 may be stored as one or more computer files or data formats that represent the object 106. The 3D model 114 may include a 3D surface model 121 and a texture map 124. The 3D surface model 121 may be a file (or a portion of a file) that represents the surface geometry of the object 106. As a result, the surface geometry encodes the contours, shapes, and spatial relationships of various features of the object 106. The 3D surface model 121 may include a mesh that models the surface of the object 106. The mesh may be formed by various triangles (or other polygons) that have coordinates in three dimensions. These polygons may be tessellated as non-overlapping geometric shapes that are adjacent to the surface of the object 106. In other embodiments, the 3D surface model 121 may be constructed using a combination of smaller 3D shapes, such as spheres, cubes, cylinders, etc.
[0019] The texture map 124 contains texture information that is mapped to various points defined by the surface geometry specified by the 3D surface module. The texture map may represent the color, shading, and graphic patterns that are applied to the 3D surface model 121 of the 3D model 114. As a result, the texture map 124 defines the visual appearance of the object 106. Each surface of the 3D surface model 121 is an area that may be defined by one or more points. The texture map 124 may be a 2D image with coordinates that are mapped onto the 3D surface. In addition to the 3D surface model 121 and the texture map 124, the 3D model 114 may include other information (not shown). For example, the 3D model 114 may include information, such as scene information. The scene information may include information about light sources, shadows, glare, etc.
[0020] The 3D model 114 can be generated for a variety of purposes. At a minimum, the 3D model 114 may be rendered for display so that an observer can see a graphical representation of the 3D modeled object 106. An application can build or otherwise load the 3D model 114 for a variety of purposes. The application can compute one or more views of the 3D model 114 by applying a virtual camera that represents a virtual viewpoint of the 3D model. The position, zoom, focus, or orientation of the virtual camera can be changed by user input. The user input can include navigating through the 3D model 114 by clicking or dragging a cursor, pressing a directional button, translating the user's physical location to a virtual location within the 3D model 114, etc.
[0021] Once the observer of the 3D model is determined, the application can convert the 3D model 114 into one or more images that reveal a window onto the 3D model 114. As described above, the window can be defined by a virtual camera having a set of coordinates, a viewing angle, a zoom, a focal length, an orientation, etc. In some embodiments, the rendered image can include one or more multi-view images. A multi-view image has multiple views, each view corresponding to a different viewing direction. The views can be rendered simultaneously (or perceived to be rendered simultaneously) for display by a multi-view display. In this regard, the multi-view image can be a 3D image or an image configured for a light field format. The image can also be a 2D image rendered on a 2D display.
[0022] 2A and 2B illustrate a failure case for modeling an object with texture-free regions according to an embodiment consistent with principles described herein. A region may include a pixel or a cluster of adjacent pixels. FIG. 2A depicts a scene 127 made up of several objects. An object refers to something that occupies a 3D space or can be modeled as a 3D object. A scene refers to one or more objects. In this example, the scene 127 includes various objects, such as a hamburger, French fries, and a white plate. A 3D model may be generated from the scene 127 using, for example, the operations described above with respect to FIG. 1. In this regard, a surface geometry and texture map may be generated to model the hamburger as being surrounded by French fries and placed on a white plate.
[0023] Modeling this scene 127 as a 3D model can pose challenges with respect to reconstructing the white plate. The white plate is composed mostly of texture-free regions. “Texture-free” regions or “texture-free” surfaces are parts of an image that have high color uniformity or consistent gloss, such that there is little or no color variation. Texture-free regions may look the same across various viewing angles. The burger and fries have enough texture to allow the 3D modeling process to identify keypoints across various angles. For example, the color or corners of the burger or fries can be tracked across various views. However, the white plate looks virtually the same across various viewing angles due to its lack of texture. It can be difficult to generate sufficient keypoint data from the white plate. In a 3D model of the scene 127, the white plate may be distorted or deformed as a result. Texture-free regions can therefore result in failure cases when modeling a scene such as the scene 127 of FIG. 2A.
[0024] FIG. 2B provides a more general example of how textureless regions can cause failures in accurately modeling an object. An object is captured in a first view 130a and a second view 130b. The two views 130a, 130b depict different, partially overlapping viewing angles of the object. A first region 133 of the object is textured and a second region 135 of the object is textureless. For example, the first region 133 may include color variations, patterns, color gradients, shadows, or other degrees of pixel value variation. The second region 135 may include generally uniform color variations, lack of patterns, lack of shadows, or other uniform pixel variation. For the first region 133, it may be relatively easy to identify a pair of matched keypoints 136. For example, the texture of the first region 133 allows the 3D modeling process to track points on the object as presented in the different overlapping views 130a, 130b. FIG. 2B shows matched keypoints 136 of a first region at different positions in different views of the same object. For a second region 135, the lack of texture makes it difficult to detect keypoints between the first view 130a and the second view 130b. FIG. 2B shows mismatched keypoints 139. As a result, it can be difficult to accurately calculate the surface geometry of the second region 135 of the object.
[0025] 3A and 3B show an example of generating a 3D model according to an embodiment consistent with the principles described herein. FIG. 3A shows how an input image of an object is processed to generate an image with a temporary texture. The temporary texture exists in 3D space to improve the ability to generate keypoint data across various views of the object. FIG. 3B shows how a 3D model is generated from the image with the temporary texture. Specifically, the 3D model is composed of a 3D surface model and a texture map. While the image with the temporary texture provides a more accurate 3D surface model, the original input image is used to generate the texture map, thereby excluding the temporary texture from the final rendering of the 3D model.
[0026] The operations and data described in Figures 3A and 3B may be implemented by a set of instructions stored in a memory and executed by a processor. For example, the functions described in Figures 3A and 3B may be implemented by a software application or other computer-executable code, and the data described in Figures 3A and 3B may be stored or loaded into computer memory.
[0027] 3A begins with receiving input images 202 that form a set of images corresponding to different viewing angles of an object. The input images 202 may be image sets 112 similar to those described in FIG. 1. For example, the input images 202 may depict different views of an object and may be generated from an image capture process 103 as described in FIG. 1. In some cases, the input images 202 may be referred to as a first set of images or a first image set.
[0028] The input images 202 are received by the image registration module 205, which performs image registration. Image registration is the process of determining coordinates for each image. For example, image registration determines the relative position of an image in the input images 202 to estimate the direction and orientation of the view. This data is recorded as a camera pose 208. A camera pose 208 can be identified for each image in the input images 202. The camera pose may be a matrix of elements, where the elements indicate the X, Y, and Z coordinates of the image along with the angular orientation of the image. In other words, each camera pose 208 includes information indicating the position and orientation of the view (e.g., camera) corresponding to the image. Thus, each image in the input images 202 has a corresponding camera pose 208 generated by the image registration module 205. Here, a "camera pose" is defined as information indicating the position and orientation of the viewpoint of an object.
[0029] 3A is a volume density model generator 211 that generates a volume density model. The volume density model can be a volume density function 214 that converts a set of input coordinates and orientations into volume density values (e.g., opacity, transmittance, transparency, etc.) and colors. For example, the volume density function 214 may conform to or be similar to the following equation (1): F(x,y,z,θ,φ)=(σ,color)(1) Here, F is a volume density function 214 that receives input variables x, y, z, θ, and φ, and outputs variables σ and color. The variable x is the coordinate along the x-axis, the variable y is the coordinate along the y-axis, and the variable z is the coordinate along the z-axis. Thus, the variables x, y, and z are the spatial coordinates of the position of a particular input ray. The variable θ is the angle of the ray between the x-axis and the y-axis, and the variable φ is the angle of view between the z-axis and the xy plane. Thus, the variables θ and φ define the direction of the ray in 3D space. Together, these input variables mathematically define the orientation of the ray in 3D space. The output σ is the opacity (e.g., volume density) at a particular point. This can be the transmittance of a particular pixel in 3D space for a particular input ray. When σ is at its maximum value (e.g., 1), there is a solid pixel, and when σ is at its minimum value (e.g., 0), there is no pixel. Between the maximum and minimum values, there are pixels that have some transparency. The color variable represents the color of the pixel (to the extent that there is one) for the input ray. The color variable may be in RBG (Red, Green, Blue) format to have red, green, and blue pixel values.
[0030] The volume density function 214 may be referred to as a radiance field function since it outputs the characteristics of a pixel for a given input ray. As a result, an image can be constructed from the volume density function 214 by providing a set of input rays corresponding to a view window. The view window may be a flat rectangle in 3D space, such as facing the object. The view window may be defined as a set of rays bounded by the window. The rays may have the same direction (e.g., variables θ and φ) while being continuous along the x-axis, y-axis, and z-axis. This is called "ray marching", where a set of rays is input to the volume density function 214 to construct the pixels that make up the corresponding view. Thus, the volume density model includes a function configured to generate at least one set of volume density values corresponding to an input camera pose.
[0031] The volume density function 214 can be generated by training a neural network model. In some embodiments, the neural network model includes a Neural Radiance Field (NeRF) model. As used herein, a "NeRF model" is defined as a volume model generated by estimating scene geometry using a neural network trained on a set of images to predict the opacity and color of objects across a continuum of views using a relatively small set of images. Finally, the NeRF model includes the volume density function 214 generated using a neural network using the training data and the input images 202.
[0032] Specifically, a volume density model generator 211 (e.g., a NeRF model generator) receives an input image 202 along with a corresponding camera pose 208 and generates a volume density function 214 (e.g., function F described above). For example, the volume density model generator 211 generates the volume density function 214 from an input image 202 without a known camera pose 208 such that the volume density function 214 can predict pixel values (and the entire image) for viewing angles between or beyond the camera pose 208. The volume density function 214 can output at least an opacity value(s) or some other volume density value(s) based on the input camera pose or input ray.
[0033] The embodiment relates to a renderer 217 that generates textured images 220. Specifically, the renderer 217 generates the textured images 220 (e.g., a second set of images) from a volumetric density function 214 and a predefined color function 223. Using the predefined color function 223, the renderer 217 applies a pseudo-random texture while maintaining the volumetric density of the 3D modeled object. In other words, if the volumetric density function 214 outputs a particular color (e.g., the color variable of the function F) from an input ray or an input camera pose, the renderer 217 replaces the color value with the color generated by the predefined color function 223. This may be referred to as a pseudo-random color or texture, since it appears to be applied arbitrarily to the 3D model of the object while still conforming to some deterministic color function. The color function is considered to be pre-determined, since it may be independent of the color of the input image 202, as it is determined before processing the input image 202. The predetermined color function may include a sinusoidal function, and noise may be introduced periodically in a pseudo-random manner to create a pseudo-random texture.
[0034] The pseudo-random color provides a pseudo-random texture defined by a predefined color function 223. The pseudo-random texture may be a marble texture, a cross-hatch texture, a zigzag texture, or any other texture that has a substantially high color or pixel value variation within a small area. For example, applying the marble texture to the scene of FIG. 2B would cause the scene 127 to have the shape and surface contours of a hamburger on a plate, along with fries, while the entire scene would have a color or texture as if it were carved from marble. Furthermore, this pseudo-random texture is applied in 3D space such that as the viewing angle of the scene is changed, the pseudo-random texture tracks across the viewing angle.
[0035] The renderer 217 can generate textured image 220 from the same camera pose 208. The renderer 217 can also generate textured image 220 from additional camera poses using the ability of the volume density function 214 to predict, extrapolate, or interpolate volume density values in new views. The renderer 217 can perform ray marching to provide inputs (e.g., position coordinates, direction, etc.) to the volume density function 214 to generate volume density values (e.g., opacity) for the corresponding inputs. The renderer 217 can also generate pseudo-random color values using a predefined color function 223 for each input. The textured image 220 can be stored in memory. The textured image 220 is similar to the input image 202, but instead applies a pseudo-random texture while preserving the volume density of the objects captured by the input image 202.
[0036] 3A then illustrates blending a first set of images (e.g., input image 202) with a second set of images (e.g., textured image 220) to generate a third set of images (e.g., image with temporary texture 224). For example, the blending may be selective such that regions of input image 202 that are devoid of texture are blended with corresponding regions of textured image 220. The result is image with temporary texture 224, where the temporary texture is applied only to regions of input image 202 that are devoid of texture. The remaining regions in image with temporary texture 224 appear like input image 202.
[0037] Specifically, texture-free region detector 226 may receive input image 202 and generate texture-free region data 229. Texture-free region detector 226 may perform various image analysis operations to detect texture-free regions. These image analysis operations may be performed on a pixel-by-pixel bitmap of the input image. In some embodiments, texture-free region detector 226 is configured to identify texture-free regions of input image 202 by applying a corner detection operation to input image 202. A pixel or region that is not adjacent to one or more corners or near any edge is considered texture-free. In other words, the degree to which a corner or edge exists for a particular pixel or region corresponds to whether the pixel or region is texture-free. A pixel or region with a low degree of corners or edges is considered texture-free, and a pixel or region with a high degree of corners or edges has texture.
[0038] In other embodiments, the textureless region detector 226 can analyze any region on the input image 202 that contains pixels within a threshold pixel value variance. For example, if the pixel value variance is below a threshold, the region is considered to be a textureless region. In this regard, a region of a textureless surface contains pixels within the threshold pixel value variance. Pixel value variance is the degree to which pixel values (e.g., colors in the RGB scale) vary between adjacent pixels. Low pixel value variance indicates uniform color across a particular region. High color uniformity is indicative of a textureless region. The textureless region data 229 indicates the location of textureless regions for each input image 202. For example, the textureless region data 229 can indicate whether each pixel in the input image 202 is within a textureless region. The threshold pixel value variance establishes the amount of pixel value variance for a surface to be considered textureless or textured.
[0039] In some embodiments, the texture-free region detector 226 determines the extent to which a particular pixel or region of the input image 202 is texture-free. The texture-free region data 229 may be a bitmap for each input image 202, with the bitmap pixel values indicating the extent to which a corresponding pixel in the input image 202 is part of a texture-free region. This is described in more detail with respect to FIG.
[0040] The texture-free region detector 226 may perform operations including assigning blending weights corresponding to regions of the texture-free surface of the input image 202. The texture-free region data 229 may include blending weights that may be assigned on a pixel-by-pixel basis. The blending weights are a function of the degree or amount of texture of the pixel in the input image 202. Thus, the blending weights are assigned depending on whether the pixel location is within a texture-free region of the input image 202. For example, if a pixel in the input image 202 is within a highly textured region, the pixel is assigned a high blending weight. If a pixel in the input image 202 is within a texture-free region, the pixel is assigned a low blending weight. Thus, the blending weight of a pixel corresponds to the amount of texture associated with the pixel. As described above, the amount of texture associated with a pixel may be quantified based on the uniformity of pixel values of neighboring pixels.
[0041] The image blender 232 is configured to blend a first image set (e.g., input images 202) with a second image set (e.g., textured images 220) to generate a third image set (e.g., images with temporary texture 224). The image blender 232 may perform a pixel-by-pixel blending operation in which a pixel in the first image and a pixel in the second image (having a corresponding location) have their respective pixel values mixed or otherwise added together. Additionally, the blender may apply blend weights on a pixel-by-pixel basis. For example, the blender may blend pixels according to the following equation (2): Blended pixel value = A*B+(1-A)*C(2) where A is a blending weight between 0 and 1, B is the pixel value of the pixel in the first image, and C is the pixel value of the corresponding pixel in the second image. As an example, a blending weight A greater than 0.5 will cause the resulting blended pixel value to be weighted more towards the pixel in the first image than the corresponding pixel in the second image. A blending weight of 1 will result in the same pixel as in the first image, ignoring the corresponding pixel in the second image. A blending weight of 0 will result in the same pixel as in the second image, ignoring the corresponding pixel in the first image.
[0042] Textureless regions in the input image 202 result in blending weights that are weighted towards the textured image 220, and textured regions of the input image 202 result in blending weights that are weighted towards the input image 202. Thus, the image 224 with temporary texture can be selectively blended to artificially introduce texture into the initially textureless input image 202.
[0043] FIG. 3B illustrates how a 3D model is generated from an input image 202 and a corresponding image with temporary texture 224. The image with temporary texture is provided to an image registration module 205 to identify a camera pose 241 for the image with temporary texture 224. The image with temporary texture 224 is more suitable for accurately determining keypoints compared to the input image 202 due to the introduction of the temporary texture. The texture can be considered "temporary" since it is eventually excluded from the texture map of the 3D model. However, the temporary texture can be used to improve keypoint detection and matching to obtain a sufficient number of keypoints on texture-free regions. Thus, the image with temporary texture 224 allows for more accurate modeling of the surface geometry.
[0044] Next, the triangulation module 244 generates 3D point data 247. The triangulation module 244 uses the keypoints and the camera pose 241 received from the image registration module 205 to identify a number of 3D points. For example, by using triangulation, a 3D point is determined based on the position of the matched keypoints at various camera poses. Each keypoint corresponds to a ray defined by the direction of the camera pose 241 relative to the keypoint. The convergence of these rays to all matched keypoints results in the position of the 3D point. The 3D point data 247 includes various points in the 3D space of the object represented by the image with temporary texture 224. The use of a temporary texture to fill in areas that would otherwise lack texture allows for improved 3D point data 247. The 3D point data 247 can include coordinates in an xyz coordinate system that correspond to the surface of the object represented in the image with temporary texture 224.
[0045] The surface reconstruction module 250 can convert the 3D point data into a 3D surface model 253 that encodes the surface geometry of the object represented in the image with temporary texture 224. In other words, the surface reconstruction module 250 reconstructs the surface of the object according to the 3D points of the 3D point data 247. This may be similar to the 3D surface model 121 of FIG. 1. The 3D surface model 253 may include a mesh that connects various 3D points in the 3D point data 247 to model the surface of the object. The 3D surface model 253 may be stored as a separate file or as part of a file that constitutes the 3D model. In this regard, the surface reconstruction module 250 generates the 3D surface model 253 from the third image set (e.g., the image with temporary texture 224).
[0046] A texture mapping module 256 then generates a texture map 259 for the 3D surface model 253. The texture map 259 may be similar to the texture map 124 of Figure 1. The texture map 259 for the 3D surface model is generated from a first set of images (e.g., the input images 202). As a result, temporary textures are used to generate the surface geometry of the 3D surface model 253, but are excluded from consideration when generating the texture map 259.
[0047] Finally, a 3D model is generated from the object represented by the input image 202. The 3D model has a 3D surface model that has been improved by using application of a temporary texture to at least the texture-free regions of the input image 202. The 3D model also includes a texture map 259 generated from the input image 202, which does not include the temporary texture.
[0048] The 3D model can be rendered for display by 3D rendering module 262. 3D rendering module 262 can generate a single view or a multi-view image from the 3D model. In the context of multi-view rendering, 3D rendering module 262 can simultaneously render a set of views of an object as a multi-view image. 3D rendering module 262 can use a graphics driver to render the 3D model.
[0049] FIG. 4 illustrates an example of applying a temporary texture according to an embodiment consistent with principles described herein. Specifically, FIG. 4 illustrates one of the input images 202 described above with respect to FIG. 3A and FIG. 3B. The input image 202 depicts one view of an object having textured regions 270 and non-textured regions 273. The textured regions 270 are shown as having a diagonal line indicating the presence of high color variation (e.g., texture), which improves the ability to detect keypoints across various views of the object. The non-textured regions 273 are shown as having no pattern (e.g., no texture), which indicates the presence of negligible color variation, which reduces the ability to detect keypoints across various views of the object.
[0050] The textured image 220 is generated from the input image 202 according to the operations described above with respect to Figure 3A. The volumetric density of the objects is maintained unchanged so that their overall surfaces and shapes are unchanged when generating the textured image 220. However, a predefined color function is applied to generate a pseudo-random texture 276 that is applied globally to the objects. Thus, the objects in the textured image 220 have the same shape 279 (e.g., surface or contour) of the input image 202, but adopt a new pseudo-random texture 276, shown as vertical dashed lines.
[0051] 4 also illustrates selectively blending the input image 202 and the textured image 220 to generate an image 224 with a temporary texture. Specifically, non-textured region data 229 (shown as a bitmap mask in one embodiment) is generated by analyzing the input image 202 to determine non-textured regions. In the example of FIG. 4, the non-textured region data 229 is a bitmap mask having the same dimensions in pixels as the input image 202 and the textured image 220. The bitmap mask has pixels that correspond to pairs of pixels in the input image 202 and the textured image 220, respectively. For example, the top left pixel of the input image 202 and the top left pixel of the textured image 220 correspond to the top left pixel of the bitmap mask. Each pixel value indicates a respective blend weight. For example, a high pixel value (e.g., a whiter or brighter pixel) indicates a blend weight that favors the input image 202, and a low pixel value (e.g., a blacker or darker pixel) indicates a blend weight that favors the textured image 220. The bitmap mask has a first region 282 of darker pixels. This first region 282 maps to the textureless region 273 of the input image 202. There may be other smaller regions 285 that also map to the textureless regions of the input image. The bitmap mask may be determined by analyzing the color variation surrounding the target pixel. The degree of color variation around the target pixel determines whether the target pixel is part of a textured or textureless region and / or the extent to which the target pixel forms a textureless region. The target pixel is assigned a pixel value as shown in the bitmap mask. The pixel value is represented graphically as a particular shade (e.g., white, black, gray, etc.). The pixel value corresponds to a blend weight. In some embodiments, to determine the pixel value, a corner detection operation may be performed on each pixel, and the degree of corner presence corresponds to the pixel value.
[0052] A bitmap mask can be used to perform a weighted blend of the input image 202 and the textured image 220. As a result, pixels in darker regions (e.g., the first region 282 or the smaller region 285) take on pixel values closer to the corresponding pixels in the textured image 220. Pixels in whiter regions (regions other than the first region 282 or the smaller region 285) take on pixel values closer to the corresponding pixels in the input image 202.
[0053] The image with temporary texture 224 has the original textured regions of the input image 202 and the pseudo-random texture 276 of the textured image 220 in the location of the non-textured regions 273. The location of the non-textured regions 273 is designated as a first region 282 by a bitmap mask. Thus, the image with temporary texture 224 has a temporary texture 288 applied by selectively blending the input image 202 with the textured image 220.
[0054] 5A and 5B show an example of improving a 3D model by using a temporary texture, according to an embodiment consistent with the principles described herein. FIG. 5A depicts an image with a temporary texture, shown as a first view 224a and a second view 224b. The object depicted in the various different views 224a, 224b has an original textured region 290. The original textured region 290 is maintained from an original input image (e.g., input image 202 of FIGS. 3A and 3B) used to generate the first view 224a and the second view 224b. In addition, the original input image had a textureless region that was modified to include a temporary texture 292. As described in FIG. 3A, the temporary texture 292 can be applied by selectively blending the input image with the textured image. FIG. 5A shows how a temporary texture can be used to improve the ability to detect more keypoints and match them as matched keypoints 294 that are tracked across different views 224a, 224b. Increasing the keypoint data quality provides an improved 3D surface model (eg, 3D surface model 253 in FIG. 3B).
[0055] FIG. 5B depicts a first rendered view 297a and a second rendered view 297b generated from both an improved 3D surface model (e.g., 3D surface model 253 of FIG. 3B) and a texture map (e.g., texture map 259 of FIG. 3B) generated directly from an input image containing original textured or untextured regions. The texture map is generated to preserve the original textured regions 290 while excluding the temporary texture 292 resulting in an original untextured surface 298. As a result, a 3D model is properly reconstructed from the input image with untextured regions. The rendered views 297a, 297b can be rendered from this 3D model, and the original colors and textures of the input image are maintained.
[0056] 6 illustrates a flowchart of a system and method for generating a three-dimensional (3D) model according to an embodiment consistent with principles described herein. The flowchart of FIG. 6 provides an example of various types of functionality that may be implemented by a computing device executing a set of instructions. Alternatively, the flowchart of FIG. 6 may be considered to depict an example of elements of a method implemented in a computing device according to one or more embodiments.
[0057] In item 304, the computing device generates a volume density function (e.g., volume density function 214 of FIG. 3A) from the first image set. The first image set may be a set of input images (e.g., input images 202 of FIGS. 3A and 3B) received from a memory. The first image set may be generated according to an image capture process (e.g., image capture process 103 of FIG. 1). The first image set may correspond to various viewing angles of the object. For example, each image in the input image set represents a different view of the object. The volume density function may determine a set of volume density values corresponding to the input camera pose. In this regard, the volume density function is a reconstruction of the object represented in the first image set. The output may be a set of volume density values (e.g., opacity) based on the input camera pose (e.g., a viewing window having a particular position and orientation).
[0058] The computing system may use a neural network model to generate the volume density function. The computing system may include a computing device described below with respect to FIG. 7 or may include at least some of the components of the computing device described below with respect to FIG. 7. For example, the neural network model may include a neural radiance field (NeRF) model. The neural network model may be generated by identifying a plurality of camera poses of the first image set and generating the volume density function from the camera poses. For example, an image registration module (e.g., image registration module 205 of FIG. 3A) may be used to identify the camera pose of each image in the first image set. The first image set may have at least one textureless region. This may result in a relatively low accuracy of the camera pose.
[0059] In item 307, the computing device generates a second set of images (e.g., textured images 220 of FIG. 3A) from the volume density function and a predetermined color function (e.g., predetermined color function 223 of FIG. 3A). Using a renderer, various camera poses can be input to the volume density function to generate the second set of images. In addition, the predetermined color function can apply a pseudo-random texture when generating the second set of images. The predetermined color function can generate a color pattern that textures the output. Thus, if the volume density function outputs a particular color, the predetermined color function can override the output color using the predetermined color to introduce texture to the second set of images while maintaining the surface geometry of the object.
[0060] The computing device then blends the first image set with the second image set to generate a third image set (e.g., image with temporary texture 224). The third image set can maintain the original textured regions of the first image set while replacing non-textured regions of the first image set with the generated temporary texture. Blending of the first image set and the second image set is described with respect to items 310 and 313 according to an embodiment.
[0061] In item 310, the computing device identifies texture-free regions of the first image set. This can be done by applying a corner detection operation to the first image set to determine whether the region is a texture-free region. For example, the texture-free region can be identified by applying the corner detection operation to the first image set on a pixel-by-pixel or region-by-region basis. The computing device can perform corner detection using image recognition or a neural network to identify regions defined by corners. A corner is the intersection of two edges. A region can be considered a texture-free region if it contains pixels within a threshold pixel value variance. In this regard, pixels or regions associated with a corner or edge can have a high pixel value variance, while there are no or few pixels within the corner / edge that have a low pixel value variance.
[0062] In some embodiments, a blending weight may be set for each pixel in the first image set, the blending weight indicating whether the pixel is in or part of a texture-free region. The blending weight may correspond to the degree of texture at a particular pixel location. Thus, the computing device may assign a blending weight indicating whether the pixel is at least part of a texture-free region of the first image set. The blending weight may be formatted as a bitmap mask such that the blending weight is set on a pixel-by-pixel basis (e.g., for each pixel).
[0063] In item 313, the computing device blends the first image set with the second image set to generate a third image set in response to identifying the texture-free region. For example, the third image set is similar to the first image set in all regions except the texture-free region. The blending operation can specify the location of the texture-free region using blend weights, as shown in the example of FIG. 4. Thus, the third image set adopts blended pixel values weighted toward the first image set (in regions with texture relative to the first image set) or adopts blended pixel values weighted toward the second image set (in regions without texture relative to the first image set).
[0064] In item 316, the computing device generates a 3D surface model (e.g., 3D surface model 253 of FIG. 3B) from the third image set. The third image set is generated to have no texture-free regions because it is a blend of the first image set and the second image set. The 3D surface model can be generated by identifying multiple camera poses for the third image set. The image registration process can also determine the camera pose. Because the third image set lacks texture-free regions, a more accurate camera pose can be obtained. The 3D surface model generation can then involve identifying multiple 3D points in the third image set using the multiple camera poses. This can be done by performing triangulation between points along the object surface (as represented in a particular view) and the coordinates of the corresponding camera pose. The surface of the object is then reconstructed according to the 3D points. This may involve generating a mesh that approximates the surface of the object. The 3D surface model can be formatted to include surface geometry without texture information.
[0065] In item 319, the computing device generates a texture map (e.g., texture map 259 of FIG. 3B) of the 3D surface model from the first set of images. The first set of images can be used directly to map the original textureless regions onto the 3D surface model.
[0066] In item 322, the computing device renders the 3D surface model and texture map for display. For example, the 3D surface model and texture map together form a 3D model of the object represented by the first set of images. The computing device can render this 3D model as a single view of the object or as a multi-view image that includes simultaneously rendered views of the object at different viewing angles. Thus, the multi-view image can provide at least a stereoscopic view of the object generated from the 3D model.
[0067] The flow chart of FIG. 6 above may illustrate a system or method for generating a 3D model having functions embodied as an instruction set. When embodied in software, each box may represent a module, segment, or portion of code including instructions for implementing a specified logical function(s). The instructions may be embodied in the form of source code including human-readable statements written in a programming language, object code compiled from source code, or machine code including numerical instructions recognizable by a suitable execution system, e.g., a processor, computing device. The machine code may be translated from the source code, etc. When embodied in hardware, each block may represent a circuit or multiple interconnected circuits for implementing the specified logical function(s).
[0068] 6 shows a particular order of execution, it is understood that the order of execution may differ from that depicted. For example, the order of execution of two or more boxes may be scrambled relative to the order shown. Also, two or more boxes shown may be performed concurrently or with partial concurrence. Furthermore, in some embodiments, one or more of the boxes may be skipped or omitted, or may be performed concurrently.
[0069] FIG. 7 is a schematic block diagram depicting an exemplary diagram of a computing device that generates and renders a 3D model for display, according to an embodiment consistent with principles described herein. The computing device 1000 can include a system of components that perform various computing operations for a user of the computing device 1000. The computing device 1000 is an example of a computing system. For example, the computing device 1000 can represent components of a 3D model generation system. The computing device 1000 can be a laptop, a tablet, a smartphone, a touch screen system, an intelligent display system, other client device, a server, or other computing device. The computing device 1000 can include various components, such as a processor(s) 1003, a memory 1006, an input / output (I / O) component(s) 1009, a display 1012, and potentially other components. These components can be coupled to a bus 1015 that serves as a local interface that allows the components of the computing device 1000 to communicate with each other. Although the components of computing device 1000 are shown as housed within computing device 1000, it should be understood that at least some of the components may be coupled to computing device 1000 via external connections. For example, a component may be externally plugged into or otherwise connected to computing device 1000 via an external port, socket, plug, or connector.
[0070] The processor(s) 1003 may include a central processing unit (CPU), a graphics processing unit (GPU), any other integrated circuit that performs computing processing operations, or any combination thereof. The processor(s) 1003 may include one or more processing cores. The processor(s) 1003 comprise circuitry for executing instructions. The instructions include, for example, computer code, programs, logic, or other machine-readable instructions that are received and executed by the processor(s) 1003 to perform the computing function embodied in the instructions. The processor(s) 1003 may execute instructions to operate on data. For example, the processor(s) 1003 may receive input data (e.g., an image), process the input data according to a set of instructions, and generate output data (e.g., a processed image). As another example, the processor(s) 1003 may receive instructions and generate new instructions for subsequent execution. The processor 1003 may comprise hardware implementing a graphics pipeline for rendering images generated by an application or derived from a 3D model. For example, the processor(s) 1003 may include one or more GPU cores, vector processors, scalar processes, or hardware accelerators.
[0071] The memory 1006 may include one or more memory components. The memory 1006 is defined herein to include either or both volatile and non-volatile memory. A volatile memory component is a memory component that does not retain information upon loss of power. Volatile memory may include, for example, random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM), magnetic random access memory (MRAM), or other volatile memory structures. System memory (e.g., main memory, cache, etc.) may be implemented using volatile memory. System memory refers to high-speed memory that may temporarily store data or instructions for quick read and write access to assist the processor(s) 1003. Images may be stored or loaded into memory for subsequent access.
[0072] A non-volatile memory component is a memory component that retains information upon loss of power. Non-volatile memory includes read only memory (ROM), hard disk drives, solid state drives, USB flash drives, memory cards accessed through memory card readers, floppy disks accessed through associated floppy disk drives, optical disks accessed through optical disk drives, and magnetic tapes accessed through suitable tape drives. ROM may include, for example, programmable read only memory (PROM), erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), or other similar memory devices. Storage memory may be implemented using non-volatile memory to provide long term retention of data and instructions.
[0073] Memory 1006 can refer to a combination of volatile and non-volatile memory used to store instructions and data. For example, data and instructions may be stored in non-volatile memory and loaded into volatile memory for processing by processor(s) 1003. Execution of instructions may include, for example, a compiled program that is loaded from non-volatile memory into volatile memory and then converted into machine code in a format that can be executed by processor 1003, source code that is converted into a suitable format for execution by processor 1003, for example object code that can be loaded into volatile memory, or source code that is interpreted by another executable program to generate instructions in volatile memory and executed by processor 1003, etc. Instructions may be stored or loaded into any portion or component of memory 1006, including, for example, RAM, ROM, system memory, storage, or any combination thereof.
[0074] Although memory 1006 is shown as separate from other components of computing device 1000, it should be understood that memory 1006 may be embedded or otherwise integrated, at least in part, with one or more components. For example, processor(s) 1003 may include on-board memory registers or cache for performing processing operations.
[0075] The I / O component(s) 1009 include, for example, a touch screen, a speaker, a microphone, buttons, switches, dials, cameras, sensors, accelerometers, or other components that receive user input or generate output to a user. The I / O component(s) 1009 can receive user input and convert it into data for storage in memory 1006 or for processing by processor(s) 1003. The I / O component(s) 1009 can receive data output by memory 1006 or processor(s) 1003 and convert them into a format that is perceived by the user (e.g., sound, tactile response, visual information, etc.).
[0076] A particular type of I / O component 1009 is a display 1012. The display 1012 may include a multi-view display, a multi-view display combined with a 2D display, or any other display that presents images. A capacitive touch screen layer, functioning as the I / O component 1009, may be laminated within the display to allow a user to perceive visual output while simultaneously providing input. The processor(s) 1003 may generate data that is formatted as an image for presentation on the display 1012. The processor(s) 1003 may execute instructions to render an image on the display for a user.
[0077] The bus 1015 facilitates communication of instructions and data between the processor(s) 1003, the memory 1006, the I / O component(s) 1009, the display 1012, and any other components of the computing device 1000. The bus 1015 may include address translators, address decoders, fabric, conductive traces, conductive wires, ports, plugs, sockets, and other connectors to enable the communication of data and instructions.
[0078] The instructions in memory 1006 may be embodied in a variety of forms to implement at least a portion of a software stack. For example, the instructions may be embodied as an operating system 1031, an application(s) 1034, a device driver (e.g., a display driver 1037), firmware (e.g., a display firmware 1040), or other software component. The operating system 1031 is a software platform that supports the basic functions of the computing device 1000, such as scheduling tasks, controlling the I / O components 1009, providing access to hardware resources, managing power, and supporting the applications 1034.
[0079] The application(s) 1034 execute on the operating system 1031 and can access the hardware resources of the computing device 1000 through the operating system 1031. In this regard, the execution of the application(s) 1034 is controlled, at least in part, by the operating system 1031. The application(s) 1034 may be user-level software programs that provide high-level functionality, services, and other features to a user. In some embodiments, the application 1034 may be a dedicated "app" that is downloadable or otherwise accessible to a user on the computing device 1000. A user can launch the application(s) 1034 through a user interface provided by the operating system 1031. The application(s) 1034 may be developed by a developer and defined in various source code formats. The application 1034 may be developed using multiple programming or scripting languages, such as C, C++, C#, Objective C, Java, Swift, JavaScript, Perl, PHP, Visual Basic, Python, Ruby, Go, or other programming languages. The application(s) 1034 may be compiled by a compiler into object code, or interpreted by an interpreter for execution by the processor(s) 1003 .
[0080] Device drivers, such as display driver 1037, contain instructions that enable operating system 1031 to communicate with various I / O components 1009. Each I / O component 1009 may have its own device driver. Device drivers may be installed such that they are stored in storage and loaded into system memory. For example, upon installation, display driver 1037 translates high-level display instructions received from operating system 1031 into low-level instructions implemented by display 1012 to display images.
[0081] Firmware, e.g., display firmware 1040, may include machine code or assembly code that enables the I / O components 1009 or the display 1012 to perform low-level operations. Firmware may translate electrical signals of a particular component into higher level instructions or data. For example, the display firmware 1040 may control how the display 1012 activates individual pixels at a low level by adjusting voltage or current signals. Firmware may be stored in non-volatile memory and may be executed directly from the non-volatile memory. For example, the display firmware 1040 may be embodied in a ROM chip coupled to the display 1012 such that the ROM chip is separate from other storage and system memory of the computing device 1000. The display 1012 may include processing circuitry for executing the display firmware 1040.
[0082] The operating system 1031, application(s) 1034, drivers (e.g., display driver 1037), firmware (e.g., display firmware 1040), and potentially other instruction sets may each include instructions executable by processor(s) 1003 or other processing circuitry of the computing device 1000 to perform the functions and operations described above. The instructions described herein may be embodied in software or code executed by the processor(s) 1003 as described above, although, alternatively, the instructions may also be embodied in dedicated hardware or a combination of software and dedicated hardware. For example, the functions and operations performed by the instructions described above may be implemented as circuits or state machines employing any one or a combination of several technologies. These technologies may include, but are not limited to, discrete logic circuits having logic gates for performing various logical functions upon application of one or more data signals, application specific integrated circuits (ASICs) having appropriate logic gates, field programmable gate arrays (FPGAs), or other components, and the like.
[0083] In some embodiments, instructions for performing the functions and operations described above may be embodied in a non-transitory computer-readable storage medium. For example, embodiments relate to a non-transitory computer-readable storage medium that stores executable instructions that, when executed by a processor (e.g., processor 1003) of a computing system (e.g., computing device 1000), cause the processor to perform various functions described above, including the operation of generating a 3D model from a set of input images. The non-transitory computer-readable storage medium may or may not be part of the computing device 1000. The instructions may include, for example, statements, code, or declarations that may be fetched from the computer-readable medium and executed by a processing circuit (e.g., processor(s) 1003). As defined herein, a "non-transitory computer-readable storage medium" is defined as any medium that can contain, store, or maintain the instructions described herein for use by or in connection with an instruction execution system, e.g., computing device 1000, and further excludes transitory media, including, for example, carrier waves.
[0084] The non-transitory computer-readable medium may comprise any one of many physical media, for example, magnetic, optical, or semiconductor media. More specific examples of suitable non-transitory computer-readable media may include, but are not limited to, magnetic tape, magnetic floppy diskette, magnetic hard drive, memory card, solid-state drive, USB flash drive, or optical disk. The non-transitory computer-readable medium may also be, for example, random access memory (RAM), including static random access memory (SRAM) and dynamic random access memory (DRAM), or magnetic random access memory (MRAM). In addition, the non-transitory computer-readable medium may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or other types of memory devices.
[0085] The computing device 1000 may perform any of the operations or implement the functionality described above. For example, the flowcharts and process flows described above may be performed by the computing device 1000 executing instructions and processing data. Although the computing device 1000 is shown as a single device, the embodiment is not so limited. In some embodiments, the computing device 1000 may offload the processing of instructions in a distributed manner, such that multiple computing devices 1000 work together to execute instructions that may be stored or loaded in a distributed arrangement of computing components. For example, at least some instructions or data may be stored, loaded, or executed in a cloud-based system operating in conjunction with the computing device 1000.
[0086] Thus, examples and embodiments of generating a 3D model from a set of input images have been described. This can be done by applying a pseudo-random texture generated by a color function to a volumetric density model of the object. This generates a textured version of the object such that the object maintains its original volumetric density (resulting in the absence of textureless regions). A 3D surface model is generated from the textured version (or a blended version of the textured version), and a texture map is generated from the set of input images. Thus, the 3D model has the same texture as the object represented by the set of input images, although its surface geometry is generated from a textured version. It should be understood that the above examples are merely illustrative of some of the many specific examples that represent the principles described herein. Clearly, those skilled in the art can easily devise numerous other configurations without departing from the scope defined by the following claims. [Explanation of symbols]
[0087] 103 Image capture system 106 Objects 109 Camera 112 Image Sets 114 3D models 115 3D Modeling Process 121 3D surface models 124 Texture Maps 127 Scenes 130a First View 130b Second View 133 First Area 135 Second Area 136 Key Points 139 Key Points 202 Input images 205 Image Alignment Module 208 Camera Pose 211 Volume Density Model Generator 214 Volume Density Function 217 Renderer 220 Textured Images 223 Predefined color functions 224 Images with Temporal Texture 224a First View 224b Second View 226 Textureless Region Detector 229 Non-textured area data 232 Image Blender 241 Camera Pose 244 Triangulation Module 247 3D point data 250 Surface Reconstruction Module 253 3D surface models 256 Texture Mapping Module 259 Texture Maps 262 3D Rendering Module 270 Texture Area 273 non-textured areas 276 Pseudo Random Textures 279 Same Shape 282 First Area Areas smaller than 285 288 Temporary Textures 290 Textured Regions 292 Temporary Textures 294 Key Points 297a First rendered view 297b Second rendered view 298 Untextured Surfaces 304 items 307 items 310 items 313 items 316 items 319 items 322 items 1000 Computing Devices 1003 Processor 1006 Memory 1009 I / O Components 1012 Display 1015 Bus 1031 Operating Systems 1034 Applications 1037 Display Driver 1040 Display Firmware
Claims
1. 1. A computer-implemented method for providing a three-dimensional (3D) model, comprising: generating a volume density function from a first set of images, the first set of images corresponding to different viewing angles of an object; generating a second set of images from the volume density function and a predetermined color function; blending the first image set with the second image set to generate a third image set; generating a 3D surface model from the third set of images; generating a texture map of the 3D surface model from the first set of images; wherein the 3D surface model and the texture map are configured to be rendered for display.
2. The method of claim 1 , wherein the volume density function generates a set of volume density values corresponding to an input camera pose.
3. The method of claim 2 , wherein the volume density function is a neural network model that includes a neural radiance field model.
4. The blending step includes: assigning a blend weight indicating whether a pixel is part of a texture-free region of the first set of images; blending the first set of images with the second set of images according to the blend weights; The method of claim 1 , comprising:
5. The method of claim 4 , wherein the texture-free regions include pixels within a threshold pixel value variance.
6. identifying a plurality of camera poses for the first set of images; generating the volume density function from the camera pose; The method of claim 1 further comprising:
7. Generating the 3D surface model of the third set of images comprises: identifying a plurality of camera poses for the third set of images; identifying a plurality of 3D points in the third image set using the plurality of camera poses of the third image set; reconstructing the surface of the object according to the 3D points; The method of claim 1 , comprising:
8. The method of claim 1 , wherein rendering the 3D surface model and the texture map for display comprises simultaneously rendering a set of views of the object as a multi-view image.
9. 1. A three-dimensional (3D) model generation system, comprising: A processor; When executed, the processor: generating a volumetric density model from a first set of images corresponding to different viewing angles of the object; generating a second set of images from the volumetric density model, wherein a pseudo-random texture is applied to generate the second set of images; blending the first image set with the second image set to generate a third image set; generating a 3D surface model from the third set of images; and generating a texture map of the 3D surface model from the first set of images; a memory for storing a plurality of instructions for performing the wherein a computing system is configured to render the 3D surface model and the texture map for display.
10. The system of claim 9 , wherein the volumetric density model comprises a function configured to determine a set of volumetric density values that correspond to an input camera pose.
11. The system of claim 9 , wherein the volumetric density model comprises a neural radiance field model.
12. The memory, when executed, causes the processor to: identifying a texture-free region of the first set of images by applying a corner detection operation to the first set of images to determine if the region is a texture-free region; Responsive to identifying the textureless region, blending the first set of images with the second set of images to generate a third set of images.
10. The system of claim 9, further comprising: storing the plurality of instructions further causing the system to:
13. The system of claim 12 , wherein the texture-free region comprises pixels within a threshold pixel value variance.
14. The memory, when executed, identifying a plurality of camera poses for the first set of images; generating the volumetric density model from the first set of images according to the camera pose; 10. The system of claim 9, further comprising: storing the plurality of instructions further causing the system to:
15. The memory, when executed, causes the processor to: identifying a plurality of camera poses for the third set of images; identifying a plurality of 3D points in the third image set using the plurality of camera poses of the third image set; reconstructing a surface of the object according to the 3D points to generate the 3D surface model; 10. The system of claim 9, further comprising: storing the plurality of instructions further causing the system to:
16. The system of claim 9 , wherein the 3D surface model and the texture map are configured to be rendered for display by simultaneously rendering a set of views of the object as a multi-view image.
17. 1. A non-transitory computer-readable storage medium storing executable instructions that, when executed by a processor of a computing system, perform operations for generating a three-dimensional (3D) model of a first set of images, the operations including: generating a neural irradiance field (NeRF) model from the first set of images corresponding to different viewing angles of an object; generating a second set of images from the NeRF model and a predetermined color function; blending the first image set with the second image set to generate a third image set; generating a 3D surface model from the third set of images; and generating a texture map of the 3D surface model from the first set of images; wherein the computing system is configured to render the 3D surface model and the texture map for display.
18. The operation includes: assigning blend weights corresponding to regions of the textureless surface of the first set of images; blending the first image set with the second image set according to the blend weights to generate a third image set; 20. The non-transitory computer-readable storage medium of claim 17, further comprising:
19. 20. The non-transitory computer-readable storage medium of claim 18, wherein the region of untextured surface includes pixels within a threshold pixel value distribution.
20. 20. The non-transitory computer-readable storage medium of claim 17, wherein the 3D surface model and the texture map are configured to be rendered for display by simultaneously rendering a set of views of the object as a multi-view image.
Citation Information
Patent Citations
Image processing apparatus, image processing method, and program
JP2020149174A
Denoising monte carlo renderings using machine learning with importance sampling
US20200143522A1
Image generation method and image generation device
US20200202611A1
