Creating an Arbitrary View

The system addresses the trade-off between quality and speed in rendering techniques by using a database of existing views and advanced image processing methods to generate high-quality arbitrary views at high speeds, suitable for interactive real-time applications.

JP7657214B2Active Publication Date: 2025-04-04OUTWARD INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2022525979
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-11-05
Filing Date
2020-11-06
Publication Date
2025-04-04
Estimated Expiration
2040-11-06

AI Technical Summary

Technical Problem

Existing rendering techniques face a trade-off between quality and speed, with high-quality rendering requiring significant processing resources and time, while fast rendering techniques often compromise on quality, making them unsuitable for interactive real-time applications.

Method used

The system generates arbitrary views of a scene by using a database of existing views and applying perspective transformations, pixel merging, and interpolation to create high-quality views at extremely high speeds, eliminating the trade-off between rendering speed and quality.

Benefits of technology

This approach enables the generation of high-definition arbitrary views with very low processing overhead, making it particularly suitable for interactive real-time graphics applications that require immediate, high-quality outputs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007657214000001
    Figure 0007657214000001
  • Figure 0007657214000002
    Figure 0007657214000002
  • Figure 0007657214000003
    Figure 0007657214000003
Patent Text Reader

Abstract

A machine learning-based image processing and generation framework is disclosed. In some embodiments, depth values ​​of an object or asset in a received input image are determined, at least in part, using a machine learning-based framework constrained to a known, predetermined environment. The determined depth values ​​facilitate the generation of other views of the object or asset.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] CROSS-REFERENCE TO OTHER APPLICATIONS This application is a continuation-in-part of U.S. application Ser. No. 16 / 523,888, filed July 26, 2019, entitled "ARBITRARY VIEW GENERATION," which is a continuation-in-part of U.S. application Ser. No. 16 / 181,607, filed November 6, 2018, entitled "ARBITRARY VIEW GENERATION," which is a continuation-in-part of U.S. application Ser. No. 15 / 721,426, filed September 29, 2017, entitled "ARBITRARY VIEW GENERATION" (now U.S. Patent No. 10,163,250), which claims priority to U.S. Provisional Application No. 62 / 541,607, filed August 4, 2017, entitled "FAST RENDERING OF ASSEMBLED SCENES," and which claims the benefit of U.S. Provisional Application No. This is a continuation-in-part of U.S. patent application Ser. No. 15 / 081,553, filed Mar. 25, 2016, entitled "METHOD FOR HYBRIDIZED HYDROPHENOL GENERATION" (now U.S. Patent No. 9,996,914), all of which are incorporated herein by reference for all purposes.

[0002] This application claims priority to U.S. Provisional Patent Application No. 62 / 933,258, filed November 8, 2019, entitled "FAST RENDERING OF IMAGE SEQUENCES FOR PRODUCT VISUALIZATION," and U.S. Provisional Patent Application No. 62 / 933,261, filed November 8, 2019, entitled "SYSTEM AND METHOD FOR ACQUIRING IMAGES FOR SPACE PLANNING APPLICATIONS," both of which are incorporated by reference herein for all purposes.

[0003] Existing rendering techniques face a trade-off between the conflicting goals of quality and speed. High quality rendering requires significant processing resources and time. However, slow rendering techniques are unacceptable for many applications, such as interactive real-time applications. Generally, lower quality but faster rendering techniques are preferred for such applications. For example, rasterization is commonly utilized by real-time graphics applications, sacrificing quality for relatively fast rendering. Therefore, improved techniques that do not significantly compromise either quality or speed are needed. [Brief description of the drawings]

[0004] Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.

[0005] [Figure 1] 1 is a high-level block diagram illustrating one embodiment of a system for generating an arbitrary view of a scene.

[0006] [Diagram 2] FIG. 13 is a diagram showing an example of a database asset.

[0007] [Diagram 3] 1 is a flow chart illustrating one embodiment of a process for generating an arbitrary perspective.

[0008] [Figure 4] 1 is a flow chart illustrating one embodiment of a process for generating a reference image or view of an asset from which any view of the asset can be generated.

[0009] [Diagram 5] 1 is a flow chart illustrating one embodiment of a process for generating a reference image or view of an asset from which any view of the asset can be generated.

[0010] [Figure 6]1 is a flow chart illustrating one embodiment of a process for providing a requested view of a scene.

[0011] [Figure 7] FIG. 1 is a high-level block diagram illustrating one embodiment of a machine learning based image processing framework for learning attributes associated with an image dataset.

[0012] [Figure 8] 1 is a flow chart illustrating one embodiment of a process for populating a database with images associated with an asset that can be utilized to generate other optional views of the asset.

[0013] [Figure 9] 4 is a flow chart illustrating one embodiment of a process for generating an image or frame.

[0014] [Figure 10] 1 is a high level flow chart illustrating one embodiment of a process for generating an arbitrary or novel view or perspective of an object or asset. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0015] The present invention may be implemented in various forms, including as a process, an apparatus, a system, a composition of matter, a computer program product embodied on a computer-readable storage medium, and / or a processor configured to execute instructions stored in and / or provided by a memory coupled to the processor. These embodiments or any other form the present invention may take may be referred to herein as techniques. In general, the order of steps of a disclosed process may be altered within the scope of the present invention. Unless otherwise noted, components such as a processor or memory described as configured to perform a task may be implemented as general components temporarily configured to perform the task at a given time, or as specific components manufactured to perform the task. As used herein, the term "processor" refers to one or more devices, circuits, and / or processing cores configured to process data, such as computer program instructions.

[0016] A detailed description of one or more embodiments of the present invention will now be given with reference to the drawings illustrating the principles of the present invention. The present invention will be described in connection with such embodiments, but is not limited to any of them. The scope of the present invention is limited only by the claims, and the present invention includes many alternatives, modifications, and equivalents. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. These details are for the purpose of example, and the present invention may be practiced according to the claims without some or all of these specific details. For simplicity, technical matters well known in the art related to the present invention have not been described in detail so as not to unnecessarily obscure the present invention.

[0017] Techniques are disclosed for generating arbitrary views of a scene. The examples described herein provide high definition output with very low processing or computational overhead, effectively eliminating the difficult trade-off between rendering speed and quality. The disclosed techniques are particularly useful for generating high quality output very quickly for interactive real-time graphics applications. Such applications depend on the substantially immediate presentation of a preferred high quality output in response to and according to user manipulation of a presented interactive view or scene.

[0018] FIG. 1 is a high-level block diagram illustrating one embodiment of a system 100 for generating an arbitrary view of a scene. As shown, an arbitrary view generator 102 receives a request for an arbitrary view as an input 104, generates the requested view based on existing database assets 106, and provides the generated view as an output 108 in response to the input request. In various embodiments, the arbitrary view generator 102 may comprise a processor, such as a central processing unit (CPU) or a graphics processing unit (GPU). The configuration of the system 100 shown in FIG. 1 is presented for illustrative purposes. In general, the system 100 may comprise any other suitable number and / or configuration of interconnected components that provide the described functionality. For example, in alternative embodiments, the arbitrary view generator 102 may comprise different configurations of internal components 110-116, the arbitrary view generator 102 may comprise multiple parallel physical and / or virtual processors, the database 106 may comprise multiple network databases or clouds of assets, etc.

[0019] The arbitrary view request 104 includes a request for an arbitrary perspective of a scene. In some embodiments, the requested perspective of the scene, including other perspectives or viewpoints of the scene, is not already present in the asset database 106. In various embodiments, the arbitrary view request 104 may be received from a process or a user. For example, the input 104 may be received from a user interface in response to user manipulation of the presented scene or a portion thereof (such as user manipulation of a camera viewpoint of the presented scene). In another example, the arbitrary view request 104 may be received in response to specifying a path of movement or travel within the virtual environment, such as a fly-through of the scene. In some embodiments, the possible arbitrary views of the scene that can be requested are at least partially constrained. For example, a user may not be able to manipulate the camera viewpoint of a presented interactive scene to any random position, but is constrained to a particular position or perspective of the scene.

[0020] The database 106 stores multiple views of each stored asset. In the given context, an asset is an individual scene whose specifications are stored in the database 106 as multiple views. In various embodiments, a scene may include a single object, multiple objects, or a rich virtual environment. Specifically, the database 106 stores multiple images corresponding to different perspectives or viewpoints of each asset. The images stored in the database 106 include high-quality photographs or photorealistic renderings. Such high definition or high resolution images input to the database 106 may be captured or rendered during offline processing or obtained from an external source. In some embodiments, corresponding camera characteristics are stored with each image stored in the database 106. That is, camera attributes such as relative position or location, orientation, rotation, depth information, focal length, aperture, zoom level, etc. are stored with each image. Additionally, camera optical information such as shutter speed and exposure may be stored with each image stored in the database 106.

[0021] In various embodiments, any number of different perspectives of an asset may be stored in the database 106. FIG. 2 illustrates an example of a database asset. In the given example, 73 views corresponding to different angles around a chair object are captured or rendered and stored in the database 106. The views may be captured, for example, by rotating the camera around the chair or rotating the chair in front of the camera. Relative object and camera position and orientation information is stored with each generated image. FIG. 2 specifically illustrates a view of a scene including one object. The database 106 may also store specifications for scenes including multiple objects or rich virtual environments. In such cases, multiple views corresponding to different positions or locations in a scene or three-dimensional space are captured or rendered and stored in the database 106 along with the corresponding camera information. In general, the images stored in the database 106 may include two-dimensional or three-dimensional images and may include stills or frames of an animation or video sequence.

[0022] In response to a request 104 for an arbitrary view of a scene that does not already exist in the database 106, the arbitrary view generator 102 generates the requested arbitrary view from multiple other existing views of the scene stored in the database 106. In the example configuration of FIG. 1, an asset management engine 110 of the arbitrary view generator 102 manages the database 106. For example, the asset management engine 110 may facilitate storage and retrieval of data in the database 106. In response to a request for an arbitrary view of a scene 104, the asset management engine 110 identifies and retrieves multiple other existing views of the scene from the database 106. In some embodiments, the asset management engine 110 retrieves all existing views of the scene from the database 106. Alternatively, the asset management engine 110 may select and retrieve a portion of the existing views (e.g., views that are closest to the requested arbitrary view). In such a case, the asset management engine 110 is configured to intelligently select a portion of the existing views from which pixels can be collected to generate the requested arbitrary view. In various embodiments, multiple existing views may be retrieved together by the asset management engine 110 or on an as-needed basis by other components of the arbitrary view generator 102 .

[0023] The perspective of each existing view retrieved by the asset management engine 110 is transformed to the perspective of the requested arbitrary view by the perspective transformation engine 112 of the arbitrary view generator 102. As mentioned above, the exact camera information is known and stored with each image stored in the database 106. Thus, the perspective change from the existing view to the requested arbitrary view includes a simple geometric mapping or transformation. In various embodiments, the perspective transformation engine 112 may use any one or more suitable mathematical techniques to transform the perspective of the existing view to the perspective of the arbitrary view. If the requested view includes an arbitrary view that is not identical to any existing view, the transformation of the existing view to the perspective of the arbitrary view will include at least some unmapped or missing pixels, i.e., pixels at angles or positions introduced into the arbitrary view that are not present in the existing views.

[0024] Pixel information from a single perspective-transformed existing view cannot fill all the pixels of another view. However, in many cases, most, if not all, pixels of the requested arbitrary view may be collected from multiple perspective-transformed existing views. The merge engine 114 of the arbitrary view generator 102 combines pixels from multiple perspective-transformed existing views to generate the requested arbitrary view. Ideally, all pixels that make up the arbitrary view are collected from the existing views. This may be possible, for example, when a sufficiently diverse set of existing views or perspectives is available for the asset under consideration and / or when the requested perspective is not too different from the existing perspectives.

[0025] Any suitable technique may be used to combine or merge pixels from multiple perspective-transformed existing views to generate the requested arbitrary view. In one embodiment, a first existing view that is closest to the requested arbitrary view is selected and retrieved from the database 106 and transformed into the perspective of the requested arbitrary view. Pixels are then collected from this perspective-transformed first existing view and used to fill the corresponding pixels in the requested arbitrary view. To fill the pixels of the requested arbitrary view that could not be obtained from the first existing view, a second existing view that includes at least a portion of these remaining pixels is selected and retrieved from the database 106 and transformed into the perspective of the requested arbitrary view. The pixels that could not be obtained from the first existing view are then collected from this perspective-transformed second existing view and used to fill the corresponding pixels in the requested arbitrary view. This process may be repeated for any number of additional existing views until all pixels of the requested arbitrary view are filled and / or until all existing views are exhausted or a predetermined threshold number of existing views are utilized.

[0026] In some embodiments, the requested arbitrary view may include some pixels that could not be obtained from any of the existing views. In such cases, the interpolation engine 116 is configured to fill in all remaining pixels of the requested arbitrary view. In various embodiments, any one or more suitable interpolation techniques may be used by the interpolation engine 116 to generate these unfilled pixels in the requested arbitrary view. Examples of available interpolation techniques include, for example, linear interpolation, nearest neighbor interpolation, etc. Interpolation of pixels introduces averaging or smoothing. While the overall image quality is not significantly affected by some degree of interpolation, excessive interpolation may introduce unacceptable blurring. Therefore, it may be desirable to use interpolation sparingly. As mentioned above, in cases where all pixels of the requested arbitrary view can be obtained from existing views, interpolation is avoided entirely. However, in cases where the requested arbitrary view includes some pixels that cannot be obtained from any of the views, interpolation is introduced. In general, the amount of interpolation required depends on the number of existing views available, the diversity of perspectives of the existing views, and / or how different the perspective of the arbitrary view is with respect to the perspective of the existing views.

[0027] For the example shown in FIG. 2, 73 views around the chair object are stored as existing views of the chair. Any view around the chair object that is different or unique from any of the stored views may be generated using a plurality of these existing views, preferably with minimal, if any, interpolation. However, generating and storing such a comprehensive set of existing views may not be efficient or desirable. In some cases, a significantly smaller number of existing views that cover a sufficiently diverse set of perspectives may instead be generated and stored. For example, the 73 views of the chair object may be reduced to a smaller set of fewer views around the chair object.

[0028] As mentioned above, in some embodiments, the possible arbitrary views that can be requested may be at least partially constrained. For example, a user may be restricted from moving a virtual camera associated with an interactive scene to a particular position. With respect to the example given in FIG. 2, the possible arbitrary views that can be requested are restricted to any position around the chair object and may not include any position below the chair object, for example, because insufficient pixel data exists for the bottom of the chair object. Such constraints on the allowed arbitrary views ensure that the requested arbitrary views can be generated from existing data by the arbitrary view generator 102.

[0029] The arbitrary view generator 102 generates and outputs a requested arbitrary view 108 in response to an input arbitrary view request 104. The resolution or quality of the generated arbitrary view 108 is the same or comparable to the quality of the existing view used to generate it, since pixels from the existing view are used to generate the arbitrary view. Thus, in most cases, using a high definition existing view will result in a high definition output. In some embodiments, the generated arbitrary view 108 may be stored in the database 106 along with other existing views of the associated scene, and later used to generate other arbitrary views of that scene in response to future requests for arbitrary views. If the input 104 includes a request for an existing view in the database 106, the requested view does not need to be generated from other views, as described above, but instead the requested view is retrieved using a simple database lookup and directly presented as the output 108.

[0030] The arbitrary view generator 102 may be further configured to generate an arbitrary ensemble view using the described techniques. That is, the input 104 may include a request to combine multiple objects into a single custom view. In such a case, the above-described techniques are performed for each of the multiple objects and combined to generate a single integrated or ensemble view that includes the multiple objects. Specifically, existing views of each of the multiple objects are selected and retrieved from the database 106 by the asset management engine 110, the existing views are transformed to the perspective of the requested view by the perspective transformation engine 112, pixels from the perspective-transformed existing views are used to fill corresponding pixels of the requested ensemble view by the merge engine 114, and any remaining unfilled pixels in the ensemble view are interpolated by the interpolation engine 116. In some embodiments, the requested ensemble view may include perspectives that already exist for one or more objects that make up the ensemble. In such cases, an existing view of the object asset that corresponds to the requested perspective is used to directly fill the pixels that correspond to the object in the ensemble view, instead of first generating the requested perspective from other existing views of the object.

[0031] As an example of an arbitrary ensemble view including multiple objects, consider the chair object and the separately photographed or rendered table object in FIG. 2. The chair object and the table object may be combined using the disclosed techniques to generate a single ensemble view of both objects. Thus, using the disclosed techniques, separately captured or rendered images or views of each of the multiple objects may be consistently combined to generate a scene including the multiple objects and having a desired perspective. As described above, the depth information of each existing view is known. The perspective transformation of each existing view includes a depth transformation, allowing the multiple objects to be properly positioned relative to each other in the ensemble view.

[0032] The generation of an arbitrary ensemble view is not limited to combining multiple single objects into a custom view. Rather, multiple scenes with multiple objects or multiple rich virtual environments may be similarly combined into a custom ensemble view. For example, multiple separate and independently generated virtual environments (possibly originating from different content sources and possibly having different pre-existing individual perspectives) may be combined into an ensemble view with a desired perspective. Thus, in general, the arbitrary view generator 102 may be configured to consistently combine or blend multiple independent assets, possibly including different pre-existing views, into an ensemble view with a desired, possibly arbitrary perspective. Since all combined assets are normalized to the same perspective, a perfectly matched resulting ensemble view is generated. The possible arbitrary perspectives of the ensemble view may be constrained based on the pre-existing views of the individual assets available for generating the ensemble view.

[0033] 3 is a flow diagram illustrating one embodiment of a process for generating an arbitrary perspective. The process 300 may be used, for example, by the arbitrary view generator 102 of FIG 1. In various embodiments, the process 300 may be used to generate an arbitrary view or an arbitrary ensemble view of a given asset.

[0034] Process 300 begins at step 302, where a request for an arbitrary perspective is received. In some embodiments, the request received at step 302 may include a request for an arbitrary perspective of a given scene that is different from any existing available perspective of the scene. In such a case, for example, the arbitrary perspective request may be received in response to a request to change the perspective of a presented view of the scene. Such a change in perspective may be prompted by a change or manipulation of a virtual camera associated with the scene, such as panning the camera, changing the focal length, changing the zoom level, etc. Alternatively, in some embodiments, the request received at step 302 may include a request for an arbitrary ensemble view. As an example, such an arbitrary ensemble view request may be received for an application that allows selection of multiple independent objects to provide a unified perspective-modified ensemble view of the selected objects.

[0035] At step 304, a number of pre-existing images from which at least a portion of the requested arbitrary perspective may be generated are retrieved from one or more relevant asset databases. The retrieved images may be associated with a given asset if the request received at step 302 includes a request for an arbitrary perspective of the given asset, or may be associated with multiple assets if the request received at step 302 includes a request for an arbitrary ensemble view.

[0036] In step 306, each of the multiple existing images retrieved in step 304 having different perspectives is transformed to the arbitrary perspective requested in step 302. Each of the existing images retrieved in step 304 includes associated perspective information. The perspective of each image is defined by the camera characteristics associated with the generation of that image, such as relative position, orientation, rotation, angle, depth, focal length, aperture, zoom level, lighting information, etc. Since the complete camera information is known for each image, the perspective transformation of step 306 involves simple mathematical operations. In some embodiments, step 306 optionally further includes an optical transformation such that all images are consistently normalized to the same desired lighting conditions.

[0037] In step 308, at least a portion of the image having the requested arbitrary perspective in step 302 is filled with pixels collected from the existing perspective-transformed images, i.e., pixels from multiple existing perspective-corrected images are used to generate the image having the requested arbitrary perspective.

[0038] At step 310, it is determined whether the generated image having the requested arbitrary perspective is complete. If it is determined at step 310 that the generated image having the requested arbitrary perspective is not complete, it is determined at step 312 whether additional existing images are available from which to obtain any remaining unfilled pixels of the generated image. If it is determined at step 312 that additional existing images are available, one or more additional existing images are retrieved at step 314 and process 300 proceeds to step 306.

[0039] If the generated image having the requested arbitrary perspective is not complete as determined in step 310 and no existing image is available any more as determined in step 312, then all remaining unfilled pixels of the generated image are interpolated in step 316. Any suitable interpolation technique or techniques may be used in step 316.

[0040] If the generated image having the requested arbitrary perspective is complete as determined in step 310, or after interpolating all remaining unfilled pixels in step 316, the generated image having the requested arbitrary perspective is output in step 318. The process 300 then ends.

[0041] As mentioned above, the disclosed technique may be used to generate arbitrary perspectives based on other existing perspectives. Since the camera information is stored with each existing perspective, it is possible to normalize the different existing perspectives to a common desired perspective. A resulting image with the desired perspective can be constructed by taking pixels from the perspective-transformed existing images. The processing associated with generating arbitrary perspectives using the disclosed technique is not only fast and nearly instantaneous, but also produces high-quality output, making the disclosed technique particularly powerful for interactive real-time graphics applications.

[0042] The above-mentioned techniques include a uniquely efficient paradigm for generating a desired arbitrary view or perspective of a scene using an existing reference view or image having a perspective different from the desired perspective. More specifically, the disclosed techniques facilitate rapid generation of a high-definition image having a desired arbitrary perspective from one or more existing reference images in which most, if not all, pixels of the desired arbitrary perspective are collected. As mentioned above, the existing reference images may include high-quality photographs or photorealistic renderings, captured or rendered during offline processing, or obtained from an external source. Furthermore, (virtual) camera characteristics may be stored as metadata with each reference image and used later to facilitate perspective transformation of the image. Various techniques for generating reference images, such as the images or views stored in the asset database 106 of FIG. 1, and further details regarding their associated metadata are now described.

[0043] 4 is a flow diagram illustrating one embodiment of a process for generating a reference image or view of an asset from which an arbitrary view or perspective of the asset may be generated. In some embodiments, the process 400 is used to generate a reference image or view of the asset that is stored in the database 106 of FIG. 1. The process 400 may include an offline process.

[0044] Process 400 begins at step 402 where an asset is imaged and / or scanned. Multiple views or perspectives of the asset are captured at step 402, for example, by rotating an imaging or scanning device around the asset or rotating the asset in front of such a device. In some cases, an imaging device such as a camera may be used to capture high quality photos of the asset at step 402. In some cases, a scanning device such as a 3D scanner may be used to collect point cloud data associated with the asset at step 402. Step 402 further includes collecting applicable metadata (camera attributes, relative location or position, depth information, lighting information, surface normal vectors, etc.) along with the image data and / or scan data. Some of these metadata parameters may be estimated. For example, normal data may be estimated from depth data. In some embodiments, at least a predetermined set of perspectives of the asset that cover most, if not all, of the asset's target area or target surface are captured at step 402. Additionally, different imaging or scanning devices having different characteristics or attributes may be used in step 402 for different perspectives of a given asset and / or for different assets stored in database 106 .

[0045] At step 404, a three-dimensional polygon mesh model of the asset is generated from the image data and / or scan data captured at step 402. That is, a fully calibrated three-dimensional mesh model is generated based on the photographic and / or point cloud data and associated metadata captured at step 402. In some embodiments, enough asset data is captured at step 402 to ensure that a complete mesh model can be constructed at step 404. Portions of the generated mesh model that were not fully captured at step 402 may be interpolated. In some cases, step 404 is not fully automated and involves at least some human intervention to ensure that the generated three-dimensional mesh model is orderly.

[0046] In step 406, multiple reference images or views of the asset are rendered from the three-dimensional mesh model generated in step 404. Any suitable rendering technique may be used in step 406 depending on the available resources. For example, simpler rendering techniques (such as scanline rendering or rasterization) may be used when constraints exist on computational resources and / or rendering time, but at the expense of rendering quality. In some cases, more complex rendering techniques (such as ray tracing) may be used that consume more resources but produce high quality photorealistic images. Each reference image rendered in step 406 is equipped with associated metadata determined from the three-dimensional mesh model and may include parameters such as (virtual) camera attributes, relative location or position, depth information, lighting information, surface normal vectors, etc.

[0047] In some embodiments, any source image captured in step 402 includes a very small portion of the reference image or view of the asset stored in database 106. Rather, most of the image or view of the asset stored in database 106 is rendered using the three-dimensional mesh model of the asset generated in step 404. In some embodiments, the reference image or view of the asset includes one or more orthographic views of the asset. Such orthographic views of multiple different assets may be combined (e.g., stacked together or placed next to each other like building blocks, etc.) to generate an orthographic view of a composite asset constructed from or by combining multiple separately captured or rendered individual assets, which may then be collectively transformed into any arbitrary camera view by transforming the orthographic views of each of the individual assets to any desired perspective.

[0048] The three-dimensional mesh model-based rendering of process 400 of FIG. 4 is computationally intensive and time consuming. Thus, in most cases, process 400 involves offline processing. Furthermore, while a three-dimensional mesh model of an asset may exist, rendering high-quality arbitrary perspectives directly from such a model cannot be efficiently achieved in many applications, including most real-time or on-demand applications. Rather, more efficient techniques must be used to meet speed constraints despite the existence of an underlying three-dimensional mesh model that can render any desired arbitrary perspective of an asset. For example, the arbitrary view generation techniques described above with respect to the description of FIGS. 1-3 may be used to generate desired arbitrary views or perspectives based on existing reference views or images of an asset very quickly while maintaining a quality comparable to that of the reference views. However, in some embodiments, the inefficiencies associated with building a three-dimensional mesh model and rendering a reference view from the model may be undesirable or unacceptable, despite having the option to perform these steps offline. In some such cases, building a mesh model and utilizing complex rendering techniques to generate a reference view may be omitted, as described further below.

[0049] 5 is a flow diagram illustrating one embodiment of a process for generating a reference image or view of an asset from which an arbitrary view or perspective of the asset may be generated. In some embodiments, the process 500 is used to generate a reference image or view of the asset that is stored in the database 106 of FIG. 1. The process 500 may include an offline process.

[0050] Process 500 begins at step 502 where an asset is imaged and / or scanned. Multiple views or perspectives of the asset are captured at step 502, for example, by rotating an imaging or scanning device around the asset or rotating the asset in front of such a device. The views captured at step 502 may include, at least in part, orthographic views of the asset. In some embodiments, the image / scan captured at step 502 has an overlapping field of view with at least one other image / scan captured at step 502, and the relative (camera / scanner) pose between the two is known and stored. In some cases, an imaging device such as a DSLR (digital single-lens reflex) camera may be used to capture high-quality photographs of the asset at step 502. For example, a camera with a long focal length lens may be used to simulate an orthographic view. In some cases, a scanning device such as a 3D scanner may be used to collect point cloud data associated with the asset at step 502. Step 502 further includes storing applicable metadata with the image and / or scan data, such as camera attributes, relative location or position, lighting information, surface normal vectors, relative pose between images / scans with overlapping fields of view, etc. Some of these metadata parameters may be estimated. For example, normal data may be estimated from depth data. In some embodiments, at least a predetermined set of perspectives of the asset that sufficiently covers most, if not all, of the asset's target area or target surface are captured in step 502. Additionally, different imaging or scanning devices having different characteristics or attributes may be used in step 502 for different perspectives of a given asset and / or for different assets stored in database 106.

[0051] In step 504, multiple reference images or views of the asset are generated based on the data captured in step 502. The reference views are generated in step 504 solely from the images / scans and associated metadata captured in step 502. That is, any arbitrary view or perspective of the asset may be generated with appropriate metadata and overlapping perspectives captured in step 502. In some embodiments, a comprehensive set of reference views of the asset that are stored in database 106 are generated from the images / scans captured in step 502 and their associated metadata. The data captured in step 502 may be sufficient to form fragments of a mesh model, but an integrated, fully coordinated mesh model need not be generated. Thus, a complete three-dimensional mesh model of the asset is not generated, nor are complex rendering techniques such as ray tracing used to render reference images from the mesh model. Process 500 improves efficiency by eliminating the steps of process 400 that consume the most processing resources and time.

[0052] The reference images generated in step 504 may facilitate faster generation of arbitrary views or perspectives using the techniques described above with respect to the description of FIGS. 1-3. However, in some embodiments, a repository of reference images need not be generated in step 504. Rather, the views captured in step 502 and their associated metadata are sufficient to generate any desired arbitrary view of the asset using the techniques described above with respect to the description of FIGS. 1-3. That is, any desired arbitrary view or perspective may be generated simply from a small number of high quality images / scans with overlapping fields of view that capture most, if not all, of the area or surface of the asset and registered with associated metadata. The processing associated with generating the desired arbitrary view from only the source images captured in step 502 is fast enough for many on-demand real-time applications. However, if further efficiency in speed is desired, a repository of reference views may be generated, such as in step 504 of process 500.

[0053] As mentioned above, each image or view of an asset in database 106 may be stored with corresponding metadata. The metadata may be generated from a three-dimensional mesh model when rendering the view from the model, when imaging or scanning the asset (in which case depth and / or surface normal data may be estimated), or a combination of both.

[0054] A given view or image of an asset includes pixel intensity values ​​(e.g., RGB values) for each pixel comprising the image, as well as various metadata parameters associated with each pixel. In some embodiments, one or more of the red, green, and blue (RGB) channels or values ​​of a pixel may be used to encode pixel metadata. The pixel metadata may include, for example, information about the relative location or position (e.g., x, y, and z coordinate values) of a point in three-dimensional space projected onto that pixel. Additionally, the pixel metadata may include information about the surface normal vector at that location (e.g., angles with the x, y, and z axes). The pixel metadata may also include texture mapping coordinates (e.g., u and v coordinate values). In such cases, the actual pixel value at a point is determined by reading the RGB values ​​of the corresponding coordinates in the texture image.

[0055] The surface normal vectors facilitate modification or alteration of the lighting of any generated view or scene. More specifically, altering the lighting of a scene includes scaling pixel values ​​based on how well the surface normal vector of a pixel matches the direction of a newly added, removed, or otherwise altered light source (e.g., which may be quantified at least in part by a dot product of the light source direction and the pixel's normal vector). Defining pixel values ​​using texture mapping coordinates facilitates modification or alteration of the texture of any generated view or scene or part thereof. More specifically, the texture can be altered by simply exchanging or replacing a referenced texture image with another texture image having the same dimensions.

[0056] As mentioned above, the reference images or views of an asset may be generated with or without an underlying mesh model of the asset. In the most efficient embodiment, merely a small set of source images / scans capturing various (overlapping) views around the asset and the associated associated metadata are needed to generate any desired arbitrary view of the asset and / or a set of reference views from which the desired arbitrary views may be generated using the techniques described above with respect to the description of Figures 1-3. In such an embodiment, the most resource intensive step of path tracing based modeling and rendering is eliminated. The images or views generated using the disclosed arbitrary view generation techniques may include static or dynamic scenes and may include still images or frames of an animation or video sequence. In the case of motion capture, a set of images or views of one or more assets may be generated for each time slice. The disclosed techniques are particularly useful in applications that require fast generation of high quality arbitrary views, such as gaming applications, virtual / alternate reality applications, and CGI (Computer Generated Imagery) applications.

[0057] Existing three-dimensional content frameworks based on rendering from three-dimensional models are typically developed and optimized for a specific use case, and lack scalability to different platforms and applications. As a result, substantial efforts and resources need to be invested and repeated in generating the same three-dimensional content for different use cases. Furthermore, the requirements of three-dimensional content face moving objects over time. Thus, the three-dimensional content needs to be manually regenerated as the requirements change. As a result, the widespread use of three-dimensional content has been hindered as a result of the difficulty in standardizing three-dimensional content formats across different platforms, devices, applications, use cases, and generally various quality conditions. Thus, there is a need for a more extensible format for representing three-dimensional content that can be utilized to achieve any desired quality level as disclosed herein.

[0058] The disclosed technology provides all of the attributes of traditional three-dimensional frameworks, as well as various other features and advantages, while providing a fundamentally novel framework for representing three-dimensional content as two-dimensional content. As described above, three-dimensional content and corresponding information are encoded into a number of images from which any desired arbitrary view may be generated without requiring an underlying three-dimensional model of the associated asset. That is, the above-described technology effectively involves the conversion of three-dimensional source content into two-dimensional content (i.e., images). More specifically, it results in a two-dimensional platform including a set of images associated with assets that effectively replaces traditional three-dimensional platforms including three-dimensional models. As described above, the images that make up the two-dimensional platform may be generated from the three-dimensional model and / or from a small set of source images or scans. Associated metadata is stored for each view of the asset, and in some cases encoded as pixel values. The image-based views and metadata of a given two-dimensional architecture facilitate the use of two-dimensional content as a three-dimensional source. Thus, the disclosed technology completely replaces traditional three-dimensional architectures that rely on rendering with an underlying three-dimensional polygon mesh model. Three-dimensional source content (such as a physical asset or a three-dimensional mesh model of the asset) is encoded or converted into a two-dimensional format that includes a set of views and metadata that are instead used to represent and provide features that were previously only available using three-dimensional frameworks, such as the ability to generate multiple different views or perspectives of the asset. In addition to providing all of the features of traditional three-dimensional frameworks, the disclosed two-dimensional representations offer a variety of additional unique features, such as being amenable to traditional image processing techniques.

[0059] In the disclosed two-dimensional framework for representing three-dimensional content, information about an asset is encoded as image data. The image comprises an array having height, width, and a third dimension that contains pixel values. The image associated with the asset may comprise various reference views or perspectives of the asset and / or corresponding metadata encoded as pixel values ​​(e.g., RGB channel values). Such metadata may include, for example, camera characteristics, textures, uv coordinate values, xyz coordinate values, surface normal vectors, lighting information (global illumination values ​​or values ​​associated with a predefined lighting model, etc.), etc. In various embodiments, the image containing the reference views or perspectives of the asset may be a (high-quality) photograph or a (photorealistic) rendering.

[0060] Various features are supported by the disclosed two-dimensional framework, such as the ability to render any desired view or perspective of an asset with any camera characteristics (such as camera position and lens type), any asset ensemble or combination, any lighting, any texture variation, etc. Since complete camera information is known for and stored with a reference view of an asset, other new views of the asset, including any camera characteristics, may be generated from multiple perspective-transformed reference views of the asset. More specifically, a given arbitrary view or perspective of a single object or scene may be generated from multiple existing reference images associated with the object or scene, while a given arbitrary ensemble view may be generated by consistently combining multiple objects or scenes from a set of reference images associated with the object or scene into a unified view by normalizing them. The reference view of the asset may have lighting modeled by one or more lighting models (such as global illumination models). A known surface normal vector for the reference view facilitates arbitrary lighting control, such as the ability to change the lighting of an image or scene according to any desired lighting model. The reference view of an asset has a texture specified with texture mapping (uv) coordinates, which facilitates arbitrary texture control by allowing any desired texture to be substituted simply by changing the referenced texture image.

[0061] As mentioned above, the disclosed two-dimensional framework is based on image data sets and is therefore suitable for image processing techniques. Thus, the disclosed image-based two-dimensional framework for representing three-dimensional content is inherently seamlessly scalable and resource adaptive both up and down the computational and bandwidth spectrum. Existing techniques for scaling images (such as image compression techniques) may be advantageously used to scale the image-based three-dimensional content of the disclosed framework. Images comprising the disclosed two-dimensional framework may be easily scaled in terms of quality or resolution to appropriately conform to the requirements of different channels, platforms, devices, applications, and / or use cases. Image quality or resolution requirements may vary significantly for different platforms (such as mobile vs. desktop), different models of devices of a given platform, different applications (such as online viewers vs. native applications running locally on a machine), over time, different network bandwidths, etc. Thus, there is a need for an architecture (such as that of the disclosed two-dimensional framework) that comprehensively meets the requirements of different use cases and is not susceptible to changes in requirements over time.

[0062] In general, the disclosed 2D framework supports resource-adaptive rendering. Furthermore, time-varying quality / resolution adaptation may be provided based on current or real-time availability of computational resources and / or network bandwidth. Scaling (i.e., the ability to smoothly and seamlessly raise or lower image quality levels) is fully automated in most cases. For example, the disclosed two-dimensional framework provides the ability to automatically downsample an asset (i.e., one or more images that include the asset) across one or more features, such as a reference view or perspective, as well as images that encode metadata (e.g., textures, surface normal vectors, xyz coordinates, uv coordinates, lighting values, etc.), without requiring manual intervention. In some such cases, the scaling of an asset may not be uniform across all features of the asset and may vary depending on the type of information associated with or encoded within the image or images associated with the asset. For example, the actual image pixel values ​​of the asset's reference view or perspective may be lossily compressed, but images that encode certain metadata (such as depth (i.e., xyz values) and normal values) may not be compressed in the same manner, or in some cases may not be compressed at all because loss of such information may be unacceptable when rendering.

[0063] In some embodiments, a master asset (i.e., a set of images including the master asset) with the highest available quality or resolution is generated and stored, for example, in database 106 of FIG. 1. In some such cases, one or more lower quality / resolution versions of the asset are automatically generated from the master asset and stored such that an appropriate version can be selected for generating a requested perspective or view based on the (current) capabilities of the server generating the requested perspective, the requesting client, and / or one or more associated communication networks. Alternatively, in some cases, a single version of the asset (i.e., the master asset) is stored, and the disclosed framework supports streaming or progressive delivery of a quality or resolution up to that of the master asset based on the (current) capabilities of the server generating the requested perspective, the requesting client, and / or one or more associated communication networks.

[0064] 6 is a flow diagram illustrating one embodiment of a process for providing a requested view of a scene. Process 600 may be used, for example, by arbitrary view generator 102 of FIG. 1. In some embodiments, process 300 of FIG. 3 is part of process 600. In various embodiments, process 600 may be used to generate an arbitrary view of a scene that includes one or more assets (i.e., a predefined asset or an arbitrary ensemble of assets).

[0065] Process 600 begins at step 602 where a request is received for a desired arbitrary view of a scene that does not yet exist that is different from any other existing available views of the scene. In general, an arbitrary view may include any desired view of a scene or assets whose specifications are not known a priori before being requested. The arbitrary view request of step 602 is received from a client and may include specifications for predefined camera characteristics (e.g., lens type and pose / perspective), lighting, textures, asset ensembles, etc.

[0066] At step 604, the arbitrary view of the scene requested at step 602 is generated or rendered based on available resources. For example, the requested arbitrary view generated at step 604 may be appropriately scaled based on the computational or processing power of the client requesting the arbitrary view, the server generating the requested arbitrary view, and / or the bandwidth availability of one or more associated communication networks between the client and the server. More specifically, step 604 facilitates resource-adaptive rendering by trading off image quality for responsiveness by scaling or adjusting along one or more associated axes described below.

[0067] The quality of the images, including the requested view, generated or rendered in step 604 using the disclosed techniques may be based, at least in part, on the number of existing perspective-transformed reference images used to generate the requested view. In many cases, using more reference images leads to higher quality and using fewer reference images leads to lower quality. Thus, the number of reference images with different perspectives used to generate the requested view may be adapted or optimized for various platforms, devices, applications, or use cases, and may be further adapted based on real-time resource availability and constraints. As some examples, a relatively large number of reference images (e.g., 60 images) may be used to generate a requested view that includes still images or a requested view for a native application on a desktop with a high-speed Internet connection, while a relatively small number of reference images (e.g., 12 images) may be used to generate a requested view that includes frames of a video or an augmented reality sequence, or a requested view for a web application for a mobile device.

[0068] The quality of the image including the requested view generated or rendered in step 604 using the disclosed techniques may be based, at least in part, on the resolution (i.e., pixel density) of the image including one or more assets (i.e., the image including the reference perspective and associated metadata of the one or more assets) used to generate the requested view. A higher resolution version of the image including the assets leads to higher quality, while a lower resolution version of the image including the assets leads to lower quality. Thus, the resolution or pixel density of the image including different perspectives and associated metadata used to generate the requested view may be adapted or optimized for various platforms, devices, applications, or use cases, and may further be adapted based on real-time resource availability and constraints. As some examples, a relatively high resolution (e.g., 2K×2K) version of the image associated with one or more assets may be used to generate a request view for a native application on a desktop with a high-speed Internet connection, while a relatively low resolution (e.g., 512×512) version of the image associated with one or more assets may be used to generate a request view for a web-based application for a mobile device.

[0069] The quality of an image including a requested view generated or rendered in step 604 using the disclosed techniques may be based, at least in part, on the bit depth (i.e., bits per pixel) of an image including one or more assets (i.e., an image including reference perspectives and associated metadata for one or more assets) used to generate the requested view. A higher bit depth version of an image including an asset leads to higher quality, while a lower bit depth version of an image including an asset leads to lower quality. Thus, the pixel precision of images including different perspectives and associated metadata used to generate the requested view may be adapted or optimized for various platforms, devices, applications, or use cases, and may be further adapted based on real-time resource availability and constraints. As some examples, a higher precision version of an image associated with one or more assets (e.g., 64 bpp for texture values ​​and floats for xyz coordinates and normal vectors) may be used to generate a higher quality requested view, while a lower precision version of an image associated with one or more assets (e.g., 24 bpp for texture values ​​and 48 bpp for xyz coordinates and normal vectors) may be used to generate a lower quality requested view.

[0070] The disclosed techniques for resource adaptive rendering support discrete and / or continuous scaling along any one or more of the three axes (number, resolution, and bit depth) of images used to generate or render a requested arbitrary view of a scene. The image quality of the requested view may be changed by appropriately scaling and / or selecting a different combination or version of images including reference views and metadata used to generate or render the requested view. The output image quality of the requested view may be selected in step 604 based on one or more (real-time) considerations and / or constraints. For example, the image quality selected for the requested view may be based on the requesting client's platform or device type (e.g., mobile vs. desktop and / or their models), the use case such as a web page with a given viewport size and / or fill factor (e.g., 512x512 window vs. 4K window), the application type (e.g., still images vs. video, games, or frames of virtual / augmented reality sequences), the network connection type (e.g., mobile vs. broadband), etc. Thus, the quality may be selected based on a given use case and the capabilities of the client for the given use case.

[0071] In some embodiments, the disclosed techniques further support streaming or progressive delivery from low quality to high quality up to the highest quality available or achievable on the client device. In many cases, the scaling or selection of the number of reference images used to generate the requested view depends at least in part on the latency requirements of the associated application. For example, a relatively large number of reference images may be used to generate still images, while a relatively small number of reference images may be used to generate frames for applications where the view changes rapidly. In various embodiments, the scaling may be the same or different across one or more of the aforementioned axes available for scaling and / or depending on the type of information encoded by the various images. For example, the resolution and bit depth of the images used to generate the requested view may be scaled uniformly in direct proportion or independently. As an example, the resolution may be downsampled, but the bit depth may not be scaled down at all to preserve high dynamic range and color depth in applications where preserving tonal quality (lighting, color, contrast) is important. Furthermore, the resolution and bit depth of the images used to generate the requested view may be scaled differently depending on the type of information encoded in the image, since loss may be acceptable for some types of data, such as actual pixel values ​​of the reference view, but not for other types of data, including metadata, such as depth (xyz coordinates) and surface normal vectors.

[0072] In step 606, the requested view generated or rendered in step 604 is provided, for example to a requesting client, to fulfill the received request in step 602. Process 600 then ends.

[0073] As mentioned above, the above-described two-dimensional framework for generating or rendering any desired view of a scene including an asset or an asset ensemble is based on an image including reference views with different perspectives and metadata associated with each reference view or perspective. As some examples, the metadata associated with each reference view or perspective may associate each pixel of the reference view or perspective with its location in three-dimensional space (xyz coordinate values) and a surface normal vector at that location. For images generated with physically based rendering techniques using a three-dimensional model, relevant metadata may be captured or generated from the corresponding three-dimensional model and associated with the image. For images (e.g., photographs / scans or other renderings) where one or more types of metadata are unknown, such metadata values ​​may be determined using machine learning based techniques. For example, as described further below, a neural network may be used to determine the mapping from image space to metadata space.

[0074] FIG. 7 is a high-level block diagram illustrating an embodiment of a machine learning-based image processing framework 700 for learning attributes associated with an image dataset. An available three-dimensional (polygon mesh) model of an asset and a given modeled environment 702 are used to render a wide image dataset 704, for example, using physically based rendering techniques. In some embodiments, the modeled environment closely matches or substantially simulates the actual physical environment in which the physical asset is imaged or photographed. The rendered image dataset 704 may include a photorealistic rendering and may include multiple views or perspectives of the asset and textures. Additionally, the rendered image dataset 704 is appropriately labeled or tagged or otherwise associated with relevant metadata determined and / or captured during rendering.

[0075] The broad tagged dataset 704 is perfectly suited for artificial intelligence-based learning. As a result of training 706 on the dataset 704, for example using any combination of one or more suitable machine learning techniques (such as deep neural networks and convolutional neural networks), a set of one or more characteristics or attributes 708 associated with the dataset 704, such as associated metadata values, is learned. Such learned attributes may be derived or estimated from labels, tags, or metadata associated with the dataset 704. The image processing framework 700 may be trained on multiple different training datasets associated with various assets and combinations of assets. However, in some embodiments, at least a portion of the training datasets are constrained to a given modeled environment. After training on multiple datasets to learn various attributes or attribute types, the image processing framework 700 may then be used to detect or derive similar attributes or combinations thereof in other images where such attributes are unknown, such as other renderings of assets rendered with respect to the same or similar model environment as the training data, as well as photographs captured in real physical environments that match or are similar to the environment modeled by the model environment of the training data. As an example, a machine learning based framework trained on a dataset where image pixels are tagged with physical xyz position coordinates and surface normal vectors may be used to predict image position (i.e., depth, i.e., xyz distance from the camera) and surface normal vector where such metadata values ​​are not known.

[0076] The disclosed framework is particularly useful when a known controlled or constrained physical environment, which can be simulated or modeled, is used to image or photograph individual assets or combinations thereof. In one application, for example, the above-mentioned apparatus (e.g., a camera rig) for imaging or photographing objects or items may be used in a retailer's product warehouse. In such an application, precise information about the actual physical environment in which the object is imaged or photographed is known, for example, in some cases from the viewpoint or perspective of the imaging object from within the imaging device. The known information about the actual physical environment may include, for example, the structure and shape of the imaging device, the number, type, and pose of the cameras utilized, the location and intensity of light sources and ambient lighting, etc. Such known information about the actual physical environment is used to define a modeled environment for the rendering of the training dataset of the machine learning-based image processing framework, such that the modeled environment is identical to the actual physical environment or at least substantially reproduces or simulates the actual physical environment. In some embodiments, for example, the modeled environment includes a three-dimensional model of the imaging device and the same camera configuration and lighting as the actual physical environment. To enable the disclosed machine learning based framework to detect or predict metadata values ​​for images where such values ​​are unknown (e.g., photographs captured in a real physical environment), metadata values ​​are learned from a training dataset tagged with known metadata values. Constraining certain attributes of the environment (e.g., shape, camera, lighting) to known values ​​facilitates learning and predicting other attributes (e.g., depth / position, surface normal vectors).

[0077] As described above, the machine learning based image processing framework may be used to learn metadata from available three-dimensional models and renders generated from a given modeled environment where the metadata values ​​are known, and the machine learning based image processing framework may then be used to identify metadata values ​​in images where such metadata values ​​are unknown. Although described in some of the examples given with respect to a given physical environment and corresponding modeled environment, the disclosed techniques may generally be utilized and adapted to learn and predict different types of image metadata for different types of assets, modeled environments, and / or combinations thereof. For example, the described machine learning based framework may be trained to determine unknown metadata values ​​for images of any asset rendered or captured in any environment, assuming the training dataset spans a sufficiently comprehensive and diverse set of assets and environments.

[0078] 8 is a flow diagram illustrating an embodiment of a process for populating a database with images associated with an asset or scene that can be utilized to generate any other view of the asset or scene. For example, process 800 of FIG. 8 may be used to populate asset database 106 of FIG. 1. Process 800 utilizes a machine learning based framework (such as framework 700 of FIG. 7). In some embodiments, the images of process 800 are constrained to a given physical environment and a corresponding modeled environment. However, more generally, process 800 may be used with respect to any physical or modeled environment.

[0079] Process 800 begins at step 802 where metadata associated with a training dataset is learned using machine learning based techniques. In some embodiments, the image dataset used for training includes an extensive collection of images of assets or scenes rendered from known three-dimensional models of the assets or scenes in a simulated or modeled environment defined by predefined specifications, such as geometry, cameras, lighting, etc. The metadata learned may include different types of image metadata values. The training dataset of step 802 may cover different assets in a predefined model environment, or more generally, may comprehensively cover different assets in different environments.

[0080] At step 804, an image is received for which one or more image metadata values ​​are unknown or incomplete. The received image may include a rendering or a photograph or a scan. In some embodiments, the received image was generated or captured with respect to a modeled or physical environment that is the same or similar to the rendering environment used for at least a portion of the training image dataset of step 802.

[0081] At step 806, unknown or incomplete metadata values ​​for the received image are determined or predicted using the machine learning based framework of process 800. At step 808, the received image and associated metadata are stored, for example, in asset database 106 of Figure 1. Process 800 then terminates.

[0082] By determining and associating relevant metadata with an image (i.e., the image received in step 804 and stored in step 808), process 800 effectively facilitates converting the image into a reference image or view of the associated asset or scene that can be later utilized to generate any other views of the associated asset or scene. In various embodiments, when storing an image as a reference image, the image may be appropriately tagged with corresponding metadata and / or associated with one or more images that encode the relevant metadata values. Process 800 may generally be used to convert any image into a reference image by using machine learning based techniques to determine the unknown image metadata values ​​necessary for the image to become a reference image from which other views of the associated asset or scene, e.g., with any camera characteristics, textures, lighting, etc., may be generated. Additionally, process 800 is particularly useful for determining or predicting types of metadata where accuracy is important (such as depth values ​​and surface normal vector values).

[0083] As mentioned above, most of the disclosed techniques are based on making available and utilizing an extensive dataset of existing reference images or views and corresponding metadata. Thus, in many cases, a sequence of images or views with different camera perspectives around one or more objects or assets is rendered or generated and stored in a database or repository. For example, a 360 degree rotation including and / or encompassing angles around an object or asset may be rendered or generated. Although such a dataset may be constructed offline, strict physically based rendering techniques are costly operations in terms of resource consumption, requiring significant processing power and time. Several techniques for more efficiently generating or rendering images or views of objects or assets have already been described. Further techniques for more efficiently rendering or generating images or views of objects or assets are described in detail below.

[0084] Substantial redundancy exists with respect to certain types of data or datasets. For example, there is a lot of redundancy among a set of images or views that include a rotation around an object or asset, especially between nearby images or views that differ by only a small camera angle or rotation. Similarly, there is redundancy among frames of an animation or video sequence, especially between adjacent or nearby frames. As another example, there is a lot of redundancy among images or views that include the same texture. Thus, more generally, in a particular feature space, many images exhibit the same or very similar features and share significant feature space correlation. For example, in the above example, substantially similar texture features may be shared by many images or views. Given the availability of a large amount of existing object or asset datasets, redundancy with respect to such existing images can be exploited when rendering or generating new images or views (e.g., of different perspectives, or of different object or asset types or shapes). Furthermore, the inherent redundancy in slowly changing image or frame sequences may be exploited as well. Machine learning is particularly well suited to learning and detecting features in large datasets that include relatively well-defined and constrained feature spaces. Thus, in some embodiments, a machine learning framework (such as a neural network) is used to more efficiently render or generate new images or views based on exploiting feature redundancy with respect to other (existing) images or views. In general, any suitable neural network configuration may be utilized in connection with the disclosed techniques.

[0085] 9 is a high-level flow chart illustrating one embodiment of a process for generating an image or frame. In some embodiments, the process 900 includes a super-resolution process for upscaling an input image. As described further below, the process 900 may be used to generate output images more efficiently, resulting in substantially less resource consumption compared to strict physically based rendering and other existing techniques, particularly when generating photorealistic high quality or high definition (HD) images.

[0086] The process 900 begins at step 902 where a feature space is identified or defined. The feature space identified at step 902 may include one or more features (such as features of a given texture). In some embodiments, the feature space is identified at step 902 using a neural network-based machine learning framework. In some such cases, for example, a neural network is used to determine or detect one or more features specific to a given set of images that includes a constrained feature space that is known and well-defined for that set of images. That is, the set of images acts as a prior distribution for defining the feature space. The set of images may include, for example, strictly rendered or generated images (e.g., high or full resolution or definition images) and / or previously rendered or generated existing images or portions thereof (e.g., patches of existing images).

[0087] In step 904, features are detected in the input image. More specifically, the input image is processed by a neural network to determine feature space data values ​​for the input image. The input images of step 904 include images of lower quality or resolution or smaller size that have been rendered or generated using techniques of lower computational complexity or cost compared to the image set of step 902. That is, the input images of step 904 include images that are noisier (e.g., due to not using enough samples for convergence) and / or of lower quality (e.g., lower resolution and / or size) compared to the images that make up the image set of step 902.

[0088] In step 906, an output image is generated by replacing features detected in the input image in step 904 with corresponding (e.g., closest or most similar matching) features in the feature space identified in step 902. More specifically, a nearest neighbor search is performed for features detected in the input image in step 904 with respect to the feature space identified in step 902, and features detected from the input image in step 904 are replaced with corresponding nearest matching features from the feature space identified in step 902. The feature detection, nearest neighbor search, and feature replacement described above are performed in feature space. Thus, in some embodiments, step 906 includes decoding or converting back from the feature space to image space to generate a resulting output image. The manipulation of the feature space leads to a consistent corresponding pixel-level transformation in image space.

[0089] In general, the process 900 provides an efficient framework for image restoration or upscaling or correction by exploiting redundancy and information available from other existing images. For example, the process 900 may be used to clean an input image (i.e., to convert a noisy input image into a relatively noise-free output image). Similarly, the process 900 may be used to improve the quality of an input image (i.e., to convert a relatively low-quality input image into a high-quality output image, e.g., in terms of resolution, size, bit depth, etc.). More specifically, the process 900 facilitates imparting features of an image set to inferior or degraded input images that share redundancy in feature space with the image set. Because the process 900 essentially involves a computationally low-cost lookup operation coupled with some other relatively simple distance calculation, such as a nearest neighbor search, it provides substantial efficiency in the image rendering space, especially compared to strict physically-based rendering techniques. The process 900 is therefore particularly useful in image rendering or generation pipelines for generating images or frames at higher speeds and with higher efficiency. For example, low computational complexity physically based rendering or other techniques may be used to render or generate a low quality or low resolution or small size image, and then process 900 may be used to convert that image to a high quality or full resolution or large size version. Additionally, process 900 may be used to restore or upscale or otherwise modify input images, including photographs captured in a given physical environment, similarly based on a training data set constrained to a simulated or modeled version of the given physical environment. That is, process 900 may be used in conjunction with the machine learning based architectures described in detail above with respect to Figures 7 and 8.

[0090] Process 900 may be utilized and adapted for many specific use cases. In some embodiments, process 900 is used to generate a series of images, such as a reference view that includes a (360°) rotation around an object or asset or frame of a video or animation sequence. In such cases, substantial redundancy exists between neighboring images or frames of the sequence, and the redundancy may be exploited by process 900. In one example, some images of the sequence are classified as independent frames (I-frames) and rendered at high or full definition or resolution or size. All images of the sequence that are not classified as I-frames are rendered at a lower quality or resolution or small size and are classified as dependent frames (D-frames) because they depend on other frames (i.e., I-frames) for upscaling. With respect to process 900, an I-frame corresponds to the set of images of step 902, and each D-frame corresponds to an input image of step 904. In this example, the number of I-frames selected for the sequence may depend on the desired tradeoff between speed and quality, with more I-frames selected to obtain better image quality. In some cases, certain rules defining the predetermined intervals may be used to designate I-frames (e.g., every other or every third image in a sequence is an I-frame), or a certain threshold may be set to identify and select I-frames in a sequence. Alternatively, adaptive techniques may be used to select new I-frames as the correlation between D-frames and existing I-frames weakens. In some embodiments, process 900 is used to generate an image including a predetermined texture. For process 900, a lower quality or lower resolution or small size version of the image comprises the input image of step 904, and a set of images or patches of the predetermined texture comprises the set of images of step 902. More specifically, in this case, the predetermined texture is known and well-defined from existing images that include the same texture.In this embodiment, texture patches are generated from one or more existing renders or assets having a given texture, the generated patches are subsampled in an appropriate manner (e.g., by clustering in feature space to find and select patches with more diverse feature content), and then stored such that the set of stored patches can be utilized as a prior distribution (i.e., the set of images of step 902). The output images of step 906, derived from either of the two above examples, include high quality or high resolution or large size or denoised versions of the input images of step 904. Although several specific examples are described, process 900 may be generally adapted to any applicable application where sufficient redundancy exists.

[0091] In some embodiments, one or more machine learning based techniques may be used to generate arbitrary or novel views or perspectives of an object or asset. In some such cases, the associated machine learning based framework is constrained to a known and well-defined feature space. For example, images processed by such machine learning based frameworks may be constrained to a predefined environment and / or one or more known textures. As detailed with respect to FIG. 7 and FIG. 8, for example, a training dataset may be constrained to a predefined model environment that simulates the actual physical environment in which the input images (i.e., photographs) of the physical asset are captured. In such cases, the input images themselves may not be associated with any image metadata values, or at least highly accurate image metadata values. However, one or more neural networks may be utilized to learn metadata values ​​in a simulation from a synthetic training dataset that includes accurate metadata values, and then applied to input images (i.e., photographs) captured by a real camera to generate corresponding reference images or views that can be subsequently utilized to predict or determine related metadata values ​​and / or to generate other views or images as described in the disclosed arbitrary view generation framework.

[0092] 10 is a high-level flow chart illustrating one embodiment of a process for generating arbitrary or novel views or perspectives of an object or asset. As described in further detail below, process 1000 may be used to convert an image or photograph of an object or asset captured in a known physical environment into an arbitrary view or perspective of the object or asset. Many of the steps of process 1000 are facilitated by a machine learning based framework (e.g., one or more associated neural networks that learn from a training data set that is constrained to a predefined model environment that simulates the physical environment). The feature space may be further constrained to known textures for which extensive training data sets exist.

[0093] Process 1000 begins at step 1002 where an input image of an object or asset is received. In some embodiments, the input image includes a photograph of the object or asset captured in a known physical environment, such as a given imaging device (e.g., a camera rig) for photographing the object or asset. In some embodiments, the input image includes multiple images (e.g., images from different cameras or camera angles). For example, the input image may include a stereo pair including left and right images captured by left and right cameras with a given imaging device or camera rig.

[0094] In step 1004, the background of the input image received in step 1002 is removed such that only the subject (i.e., object or asset) of the input image remains. In general, any suitable image processing technique or techniques for background removal may be used in step 1004. In some embodiments, background removal is facilitated by image segmentation. In some such cases, a neural network may be used to facilitate image segmentation. For example, during training, a convolutional neural network or other suitable neural network may learn image features (edges, corners, shape, size, etc.) at, for example, a lower resolution (128x128 or 256x256), and those learned features may be combined to create an upscaled segmentation mask.

[0095] In step 1006, depth values ​​of objects or assets in the input image are determined. Depth values ​​are determined in step 1006 for each pixel. Step 1006 may include determining a depth estimate and / or fine-tuning the determined depth estimate. For example, the depth estimate may be determined from a left and right stereo pair that constitutes the input image and / or predicted using a neural network. The determined depth estimate may be subsequently cleaned or fine-tuned, for example, using a neural network and / or other techniques.

[0096] In step 1008, an output image including a predefined arbitrary perspective of the object or asset that is different from the perspective of the input image is generated by performing a perspective transformation based on the depth values ​​determined in step 1006. In general, the predefined arbitrary perspective may include any desired or required camera view of the object or asset. For example, the predefined arbitrary perspective may include an orthographic view (e.g., top-down or bird's-eye view) of the object or asset. Step 1008 may include determining a perspective transformation estimate and / or fine-tuning the determined perspective transformation estimate. For example, the perspective transformation estimate may be determined directly from a mathematical transformation and / or may be predicted indirectly using a neural network (such as a generative adversarial network (GAN)). The determined perspective transformation estimate may then be cleaned or fine-tuned, for example, using a neural network (such as a restoration network as described with respect to FIG. 9 or a GAN). In some cases, the determined perspective transformation estimate may alternatively or additionally be fine-tuned using traditional techniques such as denoising, inpainting, etc.

[0097] Process 1000 then terminates. As described with respect to process 1000, multiple stages and / or layers of neural network-based techniques may be used to generate arbitrary views or perspectives of an object or asset.

[0098] Although the above embodiments have been described in some detail for ease of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not limiting. [Application Example 1] A method comprising the steps of: Remove the background of the input image of the object or asset, determining a depth value of the object or asset within the input image; generating an output image that includes a predefined perspective of the object or asset that differs from a perspective of the input image by performing a perspective transformation based on the determined depth values; Equipped with A method, wherein a machine learning based framework is utilized for one or more steps of the method, the machine learning based framework being constrained to a known, predetermined environment. [Application Example 2] A method as described in Application Example 1, wherein the known predetermined environment includes a physical environment in which the input image was taken and a model environment that simulates the physical environment for a training dataset of the machine learning-based framework. [Application Example 3] The method described in Application Example 1, wherein the machine learning based framework is constrained to one or more known textures. [Application Example 4] The method described in Application Example 1, wherein the input image includes a photograph captured by a camera of the object or asset. [Application Example 5] The method described in Application Example 1, wherein the input images include multiple images from different cameras or camera angles. [Application Example 6] The method described in Application Example 1, wherein removing the background is based at least in part on neural network-based image segmentation. [Application Example 7] The method described in Application Example 1, wherein a depth value is determined for each pixel. [Application Example 8] A method as described in Application Example 1, wherein determining the depth value includes one or both of determining a depth estimate and fine-tuning the determined depth estimate. [Application Example 9] The method according to Application Example 8, wherein the depth estimate is determined from a left and right stereo pair constituting the input image. [Application Example 10] The method described in Application Example 8, wherein the depth estimate is predicted using a neural network. [Application Example 11] The method described in Application Example 8, wherein the determined depth estimate is fine-tuned using a neural network. [Application Example 12] The method described in Application Example 1, wherein the predetermined perspective includes an orthographic view. [Application Example 13] A method as described in Application Example 1, wherein performing the perspective transformation includes one or both of determining a perspective transformation estimate and fine-tuning the determined perspective transformation estimate. [Application Example 14] The method according to Application Example 13, wherein the perspective transformation estimate is determined from a mathematical transformation. [Application Example 15] The method according to Application Example 13, wherein the perspective transformation estimate is predicted using a neural network. [Application Example 16] The method according to Application Example 13, wherein the perspective transformation estimate is fine-tuned using a neural network. [Application Example 17] The method described in Application Example 1, wherein the machine learning-based framework comprises one or more neural networks. [Application Example 18] The method described in Application Example 1, wherein the machine learning-based framework comprises a generative adversarial network (GAN). [Application Example 19] A system, 1. A processor comprising: Remove the background of the input image of the object or asset, determining a depth value of the object or asset within the input image; a processor configured to generate an output image including a predefined perspective of the object or asset that differs from a perspective of the input image by performing a perspective transformation based on the determined depth values; a memory coupled to the processor and configured to provide instructions to the processor; Equipped with A system, wherein a machine learning based framework is utilized by one or more processes of the processor, the machine learning based framework being constrained to a known, predetermined environment. [Application Example 20] A computer program product embodied in a non-transitory computer-readable storage medium, computer instructions for removing a background of an input image of an object or asset; computer instructions for determining a depth value of the object or asset within the input image; computer instructions for generating an output image including a predefined perspective of the object or asset that differs from a perspective of the input image by performing a perspective transformation based on the determined depth values; Equipped with 1. A computer program product, comprising: a machine learning based framework utilized for one or more steps of the computer program product, the machine learning based framework being constrained to a known, predefined environment.

Claims

1. 1. A method comprising: Remove the background of the input image of the object or asset, determining a depth value of the object or asset in the input image, the depth value being determined at least in part using a machine learning based framework constrained to a known, predetermined environment, the determined depth value comprising x, y and z position coordinates corresponding to image pixels of the object or asset in the input image; generating an output image that includes a predefined perspective of the object or asset that differs from a perspective of the input image by performing a perspective transformation based on the determined depth values; Equipped with A method, wherein the machine learning based framework is utilized for one or more steps of the method, and the determined depth values ​​facilitate generation of the object or asset.

2. 2. The method of claim 1 , wherein the known, predetermined environment comprises a physical environment in which the input image was taken and a model environment that simulates the physical environment for a training data set of the machine learning based framework.

3. The method of claim 1 , wherein the machine learning based framework is constrained to one or more known textures.

4. The method of claim 1 , wherein the input image comprises a photograph captured by a camera of the object or asset.

5. The method of claim 1 , wherein the input images include multiple images from different cameras or camera angles.

6. The method of claim 1 , wherein removing the background is based at least in part on neural network based image segmentation.

7. The method of claim 1 , wherein a depth value is determined for each pixel.

8. The method of claim 1 , wherein determining the depth value comprises one or both of determining a depth estimate and fine-tuning the determined depth estimate.

9. The method of claim 8 , wherein the depth estimate is determined from a left and right stereo pair that constitute the input image.

10. The method of claim 8 , wherein the depth estimate is predicted using a neural network.

11. The method of claim 8 , wherein the determined depth estimate is fine-tuned using a neural network.

12. The method of claim 1 , wherein the predetermined perspective comprises an orthographic view.

13. 2. The method of claim 1 , wherein performing the perspective transformation includes one or both of determining a perspective transformation estimate and fine-tuning the determined perspective transformation estimate.

14. The method of claim 13 , wherein the perspective transformation estimate is determined from a mathematical transformation.

15. The method of claim 13 , wherein the perspective transformation estimate is predicted using a neural network.

16. The method of claim 13 , wherein the perspective transformation estimate is fine-tuned using a neural network.

17. 2. The method of claim 1, wherein the machine learning based framework comprises one or more neural networks.

18. 2. The method of claim 1, wherein the machine learning based framework comprises a generative adversarial network (GAN).

19. 1. A system comprising:

1. A processor comprising: Remove the background of the input image of the object or asset, determining a depth value of the object or asset in the input image, the depth value being determined at least in part using a machine learning based framework constrained to a known, predetermined environment, the determined depth value comprising x, y and z position coordinates corresponding to image pixels of the object or asset in the input image; a processor configured to generate an output image including a predefined perspective of the object or asset that differs from a perspective of the input image by performing a perspective transformation based on the determined depth values; a memory coupled to the processor and configured to provide instructions to the processor; Equipped with The system, wherein the machine learning based framework is utilized by one or more processes of the processor, and the determined depth values ​​facilitate generation of the object or asset.

20. A computer program product embodied in a non-transitory computer-readable storage medium, comprising: computer instructions for removing a background of an input image of an object or asset; computer instructions for determining a depth value of the object or asset in the input image, the depth value being determined at least in part using a machine learning based framework constrained to a known, predetermined environment, the determined depth value comprising x, y and z position coordinates corresponding to image pixels of the object or asset in the input image; computer instructions for generating an output image including a predefined perspective of the object or asset that differs from a perspective of the input image by performing a perspective transformation based on the determined depth values; Equipped with The machine learning based framework is utilized by one or more processes of the processor, and the determined depth values ​​facilitate generation of the object or asset.

Citation Information

Patent Citations

  • Information processing device, image processing system, information processing method, and program

    JP2017212593A

  • New view composition using deep-layer convolutional neural network

    JP2018081672A

  • Image processing device, image processing method, and program

    WO2019167453A1