Multiview display system and method using multiview image convergence plane tilt

By tilting the convergence plane and applying shear functions in the graphics pipeline, multi-view displays address parallax issues, improving focus and clarity in extreme viewing angles, particularly for bird's-eye views.

JP7744983B2Active Publication Date: 2025-09-26LEIA INC
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
JP2023528731
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-11-18
Filing Date
2020-12-18
Publication Date
2025-09-26
Estimated Expiration
2040-12-18

AI Technical Summary

Technical Problem

Existing multi-view displays experience parallax issues when viewing from extreme angles, such as a bird's-eye view, leading to a suboptimal viewing experience due to objects not being in focus and having significant parallax.

Method used

The convergence plane of multi-view images is tilted to improve focus and reduce parallax by applying a shear function in the graphics pipeline, adjusting the disparity map to align views with the ground plane, and using a shader to perform transparency and depth of field operations.

Benefits of technology

This approach enhances the viewing experience by ensuring objects closer to the ground are in focus, while objects above or below are appropriately positioned, providing a more aesthetically pleasing and clear representation of the scene.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007744983000001
    Figure 0007744983000001
  • Figure 0007744983000002
    Figure 0007744983000002
  • Figure 0007744983000003
    Figure 0007744983000003
Patent Text Reader

Abstract

Systems and methods are directed to loading views of a multi-view image into memory. The views may be formatted as bitmaps defined by a pixel coordinate system. A distance between the view and a central viewpoint may be identified. The views may then be rendered in a graphics pipeline as sheared views according to a shear function applied along an axis of the pixel coordinate system. The shear strength of the shear function correlates with the distance between the view and the central viewpoint.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 63 / 115,531, filed November 18, 2020, which is incorporated herein by reference in its entirety.

[0002] STATEMENT OF FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT N / A [Background technology]

[0003] A scene in three-dimensional (3D) space can be viewed from multiple perspectives depending on the viewing angle. Additionally, when viewed by a user using stereoscopic vision, multiple views representing different perspectives of the scene can be perceived simultaneously, effectively creating a sense of depth that can be perceived by the user. A multi-view display presents an image with multiple views to represent how a scene is perceived in a 3D world. A multi-view display renders different views simultaneously to provide a realistic experience to the user. Multi-view images can be dynamically generated and processed by software. They can then be rendered in real time by a graphics pipeline. The graphics pipeline can apply various operations to the multi-view images as they are rendered for display. Summary of the Invention

[0004] Various features of examples and embodiments according to the principles described herein may be more readily understood by reference to the following detailed description in conjunction with the accompanying drawings, in which like reference numerals indicate like structural elements and in which: This disclosure includes the following [1] to

[22] . [1] A computer-implemented method for tilting a convergence plane of a multi-view image, the method comprising: loading views of the multiview image into memory, the views being formatted as bitmaps defined by a pixel coordinate system; identifying a distance between said view and a central viewpoint; Rendering the view in a graphics pipeline as a shear view according to a shear function applied along an axis of the pixel coordinate system, the shear strength of the shear function being correlated with the distance; A method for tilting the convergence plane of a multi-view image, comprising: [2] The method of tilting the convergence plane of a multi-view image according to [1] above, wherein the shear function is configured to skew the views only along the horizontal axis of the pixel coordinate system. [3] The method of tilting the convergence plane of a multi-view image according to [2], wherein the multi-view image includes a map generated by a navigation application. [4] The method of tilting the convergence plane of a multi-view image described in [1] above, wherein the distance between the view and the central viewpoint is identified by determining an ordered view number of the view of the multi-view image. [5] receiving user input from a user interface; determining the shear strength based on the user input; The method for tilting the convergence plane of a multi-view image according to [1] above, further comprising: [6] The above method is 10. The method of tilting the convergence plane of a multi-view image according to claim 1, further comprising the step of automatically determining the shear strength by calculating a disparity value at a common point between the view and another view of the multi-view image. [7] receiving user input from a user interface; determining a disparity value range based on the user input; configuring a shader to operate on pixels of the view in response to pixels having a disparity value within the disparity value range; The method for tilting the convergence plane of a multi-view image according to [1] above, further comprising: [8] The method of tilting the convergence plane of a multi-view image according to [7] above, wherein the shader is configured to perform at least one of a transparency operation and a depth of field operation. [9] A multi-view display system, comprising: a processor; a memory storing a plurality of instructions, the plurality of instructions, when executed, causing the processor to: loading views of a multi-view image into the memory, the views being formatted as bitmaps defined by a pixel coordinate system; sending instructions to a graphics pipeline to render the view as a shear view according to a shear function applied along an axis of the pixel coordinate system, the shear strength of the shear function being correlated to the position of the view relative to other views in the multiview image; the graphics pipeline configured to implement the shear function as pixels of the bitmap are sampled by the graphics pipeline; The multi-view display system is configured to tilt a convergence plane in the graphics pipeline.

[10] The multi-view display system of [9], wherein the shear function is configured to skew the view only along the horizontal axis of the pixel coordinate system.

[11] The multi-view display system of [9], wherein the multi-view image includes a map generated by a navigation application.

[12] The instructions, when executed, cause the processor to: receiving user input from a user interface; determining the shear strength based on the user input; The multi-view display system according to [9] above, further comprising:

[13] The multi-view display system described in [9], wherein the instructions, when executed, further cause the processor to perform a step of automatically determining the shear strength by calculating a disparity value at a common point between the view and another view of the multi-view image.

[14] The instructions, when executed, cause the processor to: receiving user input from a user interface; determining a disparity value range based on the user input; configuring a shader to operate on the pixels of the view in response to pixels having a disparity value within the disparity value range; The multi-view display system according to [9] above, further comprising:

[15] The multi-view display system of

[14] , wherein the shader is configured to perform at least one of transparency and depth of field operations.

[16] The multi-view display system is configured to provide wide-angle emitted light in 2D mode using a wide-angle backlight; the multi-view display system is configured to provide directional emitted light in a multi-view mode using a multi-view backlight having an array of multi-beam elements, the directional emitted light comprising a plurality of directional light beams provided by each multi-beam element of the array of multi-beam elements; the multi-view display system is configured to time-multiplex the 2D mode and the multi-view mode using a mode controller to sequentially activate the wide-angle backlight during first sequential time intervals corresponding to the 2D mode and the multi-view backlight during second sequential time intervals corresponding to the multi-view mode; [9] A multi-view display system as described in [9] above, wherein directional light beam directions of the plurality of directional light beams correspond to different view directions of the multi-view image.

[17] The multi-view display system is configured to guide light within a light guide as guided light; 16. The multi-view display system of claim 15, wherein the multi-view display system is configured to scatter a portion of the guided light as the directional radiation using multi-beam elements of the multi-beam element array, each multi-beam element of the multi-beam element array comprising one or more of a diffraction grating, a micro-refractive element, and a micro-reflective element.

[18] A non-transitory computer-readable storage medium storing instructions that, when executed by a processor of a computing system, implement tilting a convergence surface in a graphics pipeline, the instructions comprising: generating a plurality of views of a multiview image, each view formatted as a bitmap defined by a pixel coordinate system, the plurality of views comprising a first view and a second view; Rendering the first view in the graphics pipeline as a first shear view according to a first shear strength of a shear function applied along an axis of the pixel coordinate system; rendering the second view in the graphics pipeline as a second shear view according to a second shear strength of the shear function applied along the axis of the pixel coordinate system; 1. A non-transitory computer-readable storage medium comprising:

[19] The non-transitory computer-readable storage medium of

[18] , wherein the shear function is applied only along the horizontal axis of the pixel coordinate system.

[20] The non-transitory computer-readable storage medium of

[18] , wherein the shear function is configured to skew the first view and the second view along a vertical axis of the pixel coordinate system.

[21] The non-transitory computer-readable storage medium according to

[18] , wherein the first shear strength is a negative shear strength and the second shear strength is a positive shear strength.

[22] The non-transitory computer-readable storage medium of

[18] , wherein the graphics pipeline is configured to implement the shearing function when pixels of the bitmap of the multi-view image are sampled by the graphics pipeline. [Brief explanation of the drawings]

[0005] [Figure 1] 1 illustrates a multi-view image in an example, according to an embodiment consistent with principles described herein.

[0006] [Figure 2] 1 illustrates an example of generating a multi-view image according to an embodiment consistent with principles described herein.

[0007] [Figure 3] 1 illustrates an example of tilting the convergence plane of a multi-view image, according to an embodiment consistent with principles described herein.

[0008] [Figure 4] 1 illustrates an example computing system for tilting the convergence plane of a multi-view image, according to an embodiment consistent with principles described herein.

[0009] [Figure 5A] 10 illustrates an example of applying a shear function according to one embodiment consistent with principles described herein. [Figure 5B] Same as description for Figure 5A.

[0010] [Figure 6] 1 illustrates an example of an interface to a graphics pipeline, according to one embodiment consistent with principles described herein.

[0011] [Figure 7A] 1 illustrates an example user interface for configuring the rendering of multi-view images, according to an embodiment consistent with principles described herein. [Figure 7B] Same as description for Figure 7A.

[0012] [Figure 8] 1 illustrates an example of a computing system that applies a shear function as pixels are sampled, according to one embodiment consistent with principles described herein.

[0013] [Figure 9] 1 shows a flowchart of a system and method for tilting the convergence plane of multi-view images, according to one embodiment consistent with principles described herein.

[0014] [Figure 10] 1 is a schematic block diagram illustrating one exemplary diagram of a multi-view display system providing a multi-view display, according to one embodiment consistent with principles described herein. DETAILED DESCRIPTION OF THE INVENTION

[0015] Some examples and embodiments have other features in addition to, and in place of, those shown in the above-referenced figures. These and other features are described in detail below with reference to the above-referenced figures.

[0016] Examples and embodiments according to the principles described herein provide techniques for improving the user experience of perceiving a multi-view image by tilting the convergence plane. By default, the convergence plane is typically parallel to the camera lens at some distance from the camera. Objects that intersect with the convergence plane appear in focus with no parallax between different views of such objects. However, when the viewpoint changes to an extreme angle, such as a bird's-eye view angle, target objects in the multi-view image may experience parallax that adversely affects the viewing experience. As described herein, embodiments are directed to tilting the convergence plane to improve how objects are perceived based on the camera's angle of view. For a bird's-eye view, the convergence plane can be tilted to be substantially parallel to the ground. As a result, objects closer to the ground may be perceived more clearly from the viewer's perspective.

[0017] Embodiments are directed to applying graphics-level operations to tilt a convergence plane in a real-time graphics pipeline. For example, the convergence plane may be tilted as part of a post-processing operation when a multi-view image is rendered in real time. A shader in the graphics pipeline may be configured to apply a shear function to different views to effectively tilt the convergence plane. For example, the shader may sample pixels from views of a multi-view image to shear the resulting view. The amount of shear may correspond to the degree to which a particular view is away from a central viewpoint. To this end, the shear function shears different views of the multi-view image in real time to effectively tilt the convergence plane, thereby creating a better viewing experience for the viewer.

[0018] FIG. 1 illustrates an example multi-view image 103 according to one embodiment consistent with principles described herein. The multi-view image 103 has multiple views 106. Each of the views 106 corresponds to a different view direction 109. The views 106 are rendered for display by a multi-view display 112. The multi-view image 103 illustrated in FIG. 1 shows a bird's-eye view of various buildings on the ground. Each view 106 represents a different viewing angle of the multi-view image 103. Thus, the different views 106 have a level of parallax relative to each other. In some embodiments, a viewer can perceive one view 106 with their right eye while perceiving a different view 106 with their left eye. This allows the viewer to perceive different views simultaneously, resulting in stereoscopic vision. In other words, the different views 106 create a three-dimensional (3D) effect.

[0019] In some embodiments, as a viewer physically changes their viewing angle relative to the multi-view display 112, the viewer's eyes may capture different views 106 of the multi-view image 103. As a result, the viewer may interact with the multi-view display 112 to see different views 106 of the multi-view image 103. For example, as the viewer moves to the left, the viewer may see more of the left side of a building in the multi-view image 103. The multi-view image 103 may have multiple views 106 along a horizontal plane and / or may have multiple views 106 along a vertical plane. Thus, as the user changes their viewing angle to see different views 106, the viewer may obtain additional visual detail of the multi-view image 103. Once processed for display, the multi-view image 103 is stored as data in a format that records the different views 106.

[0020] As mentioned above, each view 106 may be displayed as a different corresponding image by the multi-view display 112. ViewThe views 106 are presented in a direction 109. When presenting the multi-view image 103 for display, the views 106 may actually appear on or near the multi-view display 112. The 2D display may be substantially similar to the multi-view display 112, except that the 2D display is generally configured to provide a single view (e.g., only one of the views), as opposed to the different views 106 of the multi-view image 103.

[0021] As used herein, a "two-dimensional display" or "2D display" is defined as a display configured to provide a view of an image that is substantially the same regardless of the direction from which the image is viewed (i.e., within a predetermined viewing angle or range of the 2D display). Examples of 2D displays include traditional liquid crystal displays (LCDs) found on smartphones and computer monitors. In contrast, as used herein, a "multi-view display" is defined as an electronic display or display system configured to provide different views of a multi-view image in or from different viewing directions simultaneously from a user's perspective. In particular, the different views 106 can represent different perspectives of the multi-view image 103.

[0022] The multi-view display 112 can be implemented using a variety of technologies that support the presentation of different image views to be perceived simultaneously. One example of a multi-view display uses a diffraction grating to control the predominant angular orientation of the different views 106. According to some embodiments, the multi-view display 112 may be a light field display that presents multiple light beams of different colors and directions corresponding to the different views. In some examples, the light field display is a so-called "naked-eye" three-dimensional (3D) display that may use a diffraction grating to provide an autostereoscopic representation of the multi-view image without requiring special eyewear for depth perception. In some embodiments, the multi-view display 112 may require glasses or other eyewear to control which view 106 is perceived by each of the user's eyes.

[0023] In some embodiments, the multi-view display 112 is part of a multi-view display system that renders multi-view images and 2D images. In each of these, the multi-view display system may include multiple backlights operating in different modes. For example, the multi-view display system may be configured to provide wide-angle emitted light during the 2D mode using a wide-angle backlight. In addition, the multi-view display system may be configured to provide directional emitted light during the multi-view mode using a multi-view backlight having an array of multi-beam elements, the directional emitted light including multiple directional light beams provided by each multi-beam element of the multi-beam element array. The multi-view display system may be configured to time-multiplex the 2D mode and the multi-view mode using a mode controller to sequentially activate the wide-angle backlight during first sequential time intervals corresponding to the 2D mode and the multi-view backlight during second sequential time intervals corresponding to the multi-view mode. The directional light beam directions of the directional light beams may correspond to different view directions of the multi-view image.

[0024] For example, in 2D mode, a wide-angle backlight may generate an image such that the multi-view display system operates like a 2D display. By definition, "wide-angle" emitted light is defined as light that has a cone angle that is greater than the cone angle of the multi-view image or view of the multi-view display. In particular, in some embodiments, wide-angle emitted light can have a cone angle greater than about 20 degrees (e.g., >±20°). In other embodiments, the wide-angle emitted light cone angle is greater than about 30 degrees (e.g., >±30°) or greater than about 40 degrees (e.g., >±40°) or about It may be greater than 50 degrees (e.g., >±50°). For example, the cone angle of the wide-angle emitted light is about 60 degrees. super (e.g., >±60°).

[0025] The multi-view mode can use a multi-view backlight instead of a wide-angle backlight. The multi-view backlight can have an array of multi-beam elements that scatter light as multiple directional light beams with different primary maximum angular directions. For example, if the multi-view display 112 operates in the multi-view mode to display a multi-view image having four views, the multi-view backlight can scatter light into four directional light beams, each corresponding to a different view. The mode controller can continuously switch between the 2D mode and the multi-view mode such that the multi-view image is displayed using the multi-view backlight for a first sequential time interval and the 2D image is displayed using the wide-angle backlight for a second sequential time interval.

[0026] In some embodiments, the multi-view display system is configured to guide light within a light guide as guided light. A "light guide" is defined herein as a structure that uses total internal reflection, or "TIR," to guide light within the structure. In particular, a light guide may include a core that is substantially transparent at the light guide's operating wavelength. In various examples, the term "light guide" generally refers to a dielectric light guide that employs total internal reflection to guide light at the interface between the light guide's dielectric material and the material or medium surrounding the light guide. By definition, the condition for total internal reflection is that the refractive index of the light guide is greater than the refractive index of the surrounding medium adjacent to the surface of the light guide material. In some embodiments, the light guide may include a coating in addition to or instead of the aforementioned refractive index difference to further promote total internal reflection. The coating may be, for example, a reflective coating. The light guide may be any of a number of light guides, including, but not limited to, one or both of a plate or slab guide and a strip guide. The light guide may be shaped like a plate or slab. The light guide may be edge-lit by a light source (eg, a light emitting device).

[0027] In some embodiments, the multiview display system is configured to scatter portions of the guided light as directional radiation using multibeam elements of an array of multibeam elements, each multibeam element comprising one or more of a diffraction grating, a micro-refractive element, and a micro-reflective element. In some embodiments, the diffraction grating of the multibeam element may comprise multiple individual sub-gratings. In some embodiments, the micro-reflective element is configured to reflectively combine or scatter the guided light portions as multiple directional light beams. The micro-reflective element may have a reflective coating to control how the guided light is scattered. In some embodiments, the multibeam element comprises a micro-refractive element configured to refractionally combine or scatter the guided light portions as multiple directional light beams (i.e., refractively scatter the guided light portions) by or using refraction.

[0028] 1, the multi-view display 112 comprises a screen that displays the multi-view image 103. The screen may be, for example, a display screen of a phone (e.g., a mobile phone, a smartphone, etc.), a tablet computer, a laptop computer, a computer monitor of a desktop computer, a camera display, or an electronic display of virtually any other device.

[0029] FIG. 2 illustrates an example of generating a multi-view image 115 according to one embodiment consistent with principles described herein. The multi-view image 115 of FIG. 2 includes various objects, such as a tree 118 on a ground surface 120. The tree 118 and the ground surface 120 may be referred to as objects, and together they form at least a portion of a scene. The multi-view image 115 may be displayed and viewed in a manner similar to that described with respect to FIG. 1. To generate the multi-view image 115, a camera 121 may be used to capture a scene. In some embodiments, the camera 121 may include one or more physical cameras. For example, a physical camera includes a lens for capturing light and recording it as an image. Multiple physical cameras may be used to capture different views of a scene to create the multi-view image 115. For example, each physical camera may be spaced a defined distance apart to allow different perspectives of objects in the scene to be captured. The distance between the different physical cameras enables the ability to capture depth of a scene, similar to how the distance between a viewer's eyes enables 3D vision.

[0030] The camera 121 may also represent a virtual (e.g., simulated or virtual) camera, as opposed to a physical camera. The scene may be generated using computer graphics techniques that manipulate computer-generated information. In this example, the camera 121 is implemented as a virtual camera having a viewpoint for generating the scene using software tools for editing images. The virtual camera may be defined in terms of a viewing angle and coordinates of a 3D model. The 3D model may define various objects to be captured by the virtual camera.

[0031] In some embodiments, one or more views of multi-view image 115 may be generated through automated algorithms (e.g., computer vision, artificial intelligence, image batch processing, etc.). For example, a physical or virtual camera may be used to generate or capture a view of a scene, and then one or more other views may be artificially generated by predicting, interpolating, or extrapolating from the original view. For example, various computer vision techniques may generate additional views based on one or more input views. This may include employing trained computer vision models that predict, interpolate, and / or extrapolate different views from one or more input views.

[0032] When generating or capturing views of a scene using the camera 121, the multi-view image may have a convergence plane 127. A "convergence plane" or "convergence plane" is defined as a set of positions where different views are aligned so that there is little parallax between them. The convergence plane 127 is sometimes referred to as the zero parallax plane (ZDP). The convergence plane 127 occurs in front of the camera 121. Objects between the camera 121 and the convergence plane 127 appear closer to the viewer, while objects behind the convergence plane 127 appear farther away from the viewer. In this regard, the degree of parallax between different views increases the further an object is positioned from the convergence plane 127. Objects along the convergence plane 127 appear in focus to the viewer. Thus, when generating the multi-view image 115, an author wishing to characterize a particular object as a primary subject may desire the convergence plane 127 to fall on the primary subject. Pixels rendered on the ZDP may appear to be located on the display, pixels rendered in front of the ZDP may appear to be located in front of the display, and pixels rendered behind the ZDP may appear to be located behind the display.

[0033] Camera 121 captures a scene that falls within camera 121's view frustum 130. View frustum 130 is shown with upper and lower limits that define the angular range of view of the scene. Typically, the default convergence plane 127 is parallel to the plane formed by the camera lens of camera 121, so that it forms a trapezoid with respect to view frustum 130. In FIG. 2, convergence plane 127 intersects (relative to camera 121) the bottom of tree 118 and the back surface of tree 118. As a result, the bottom of tree 118 appears to be in focus and located on the display, and therefore appears as a feature of interest to the viewer.

[0034] 2 also shows a disparity map 133 for one of the views of the multi-view image 115. The disparity map 133 may be generated for at least one of the views. In some cases, no disparity map is generated. In either case, the disparity map 133 is described to illustrate concepts related to the embodiments described herein. The disparity map 133 associates each pixel (or potentially a cluster of pixels) with a corresponding disparity value. The disparity value quantifies the disparity in terms of distance relative to corresponding pixels in different views. For example, a pixel with a large disparity value relative to a first view means that there is a large difference in where the pixel and the corresponding pixel appear to a viewer from a particular viewing angle relative to the corresponding pixel in a second view.

[0035] As used herein, a "disparity map" is defined as information indicating apparent pixel differences between at least two views of the multi-view image 115. In this regard, a disparity map can indicate the difference in position between two pixels in two views of the multi-view image. When the disparity is zero (e.g., equal to or close to zero), pixels representing an object appear to the viewer at the same location. In other words, an object focused on by a user has zero disparity between multiple views (e.g., left-eye view and right-eye view). A region with little or no disparity is considered to correspond to the convergence plane 127 (or ZDP). Objects appearing in front of or behind the focused object have disparity with varying degrees of disparity and are therefore beyond the convergence plane. For example, pixels representing objects between the camera 121 and the convergence plane 127 may have positive disparity values, while pixels representing objects behind the convergence plane 127 may have negative disparity values. The greater the absolute value of the disparity, the farther from the convergence plane 127. Parallax is inversely proportional to depth.

[0036] FIG. 2 shows a disparity map 133 having three regions 135a-c. Each region 135a-c contains pixels representing different disparity values. For example, the bottom region 135a corresponds to pixels representing the ground 120 in front of the tree 118, the middle region 135b corresponds to pixels representing the bottom of the tree 118, and the top region 135c corresponds to pixels representing the top of the tree 118. The disparity values ​​in the bottom region 135a may be relatively large and positive because they represent pixels in front of the convergence plane 127. The disparity values ​​in the middle region 135b may be close to zero because they represent pixels on the convergence plane 127. The disparity values ​​in the top region 135c may be relatively large and negative because they represent pixels behind the convergence plane 127. When rendered on a multi-view display, the multi-view image 115 is perceived by a user as having a wide range of disparity relative to the ground 120. In other words, only a small portion of the ground 120 appears to be in focus on the display. The remainder of the ground plane 120 appears in front of or behind the display. This result may be undesirable in some applications. For example, multi-view content featuring an object moving along the ground plane 120 or multiple objects at different positions on the ground plane may not be optimally presented to the viewer from a bird's-eye view. In such cases, it may be desirable to tilt the convergence plane.

[0037] 3 illustrates an example of tilting convergence plane 127 of a multi-view image according to one embodiment consistent with principles described herein. For example, convergence plane 127, which is initially parallel to a plane formed by the (virtual or physical) lens of camera 121, may be tilted to form a tilted convergence plane 138 that is non-parallel to the plane formed by the (virtual or physical) lens of camera 121. FIG. 3 illustrates tilt amount 141, which may be quantified as the angle between convergence plane 127 (which may be referred to as the initial convergence plane) and tilted convergence plane 138. Tilted convergence plane 138 may be generated as a result of rotating convergence plane 127 around a rotation point (shown at the intersection of initial convergence plane 127 and tilted convergence plane 138).

[0038] By applying the tilted convergence plane 138, the multi-view image can provide a more aesthetically pleasing viewing experience. For example, the tilted convergence plane 138 may correspond to the plane formed by the ground plane 120. As a result, objects along the ground plane have no parallax, thereby drawing the viewer's attention toward the ground plane as it unfolds in the multi-view image. For example, objects located on or near the ground plane appear as if they are on the display, objects above the ground plane appear in front of the display, and objects below the ground plane appear behind the display.

[0039] In terms of mathematical relationships, the convergence plane 127 can be tilted along the vertical (y) axis by modifying the disparity map according to equation (1) below: D'(X,Y)=D(X,Y)+T*Y+C (1) where "D" refers to the disparity value, "D'" refers to the updated disparity value, the disparity value is a function of the X and Y coordinates of the pixel, "T" quantifies the tilt amount 141, and "C" corresponds to the position of rotation of the convergence plane 127 defined by the rotation axis 150. By applying the above equation to the disparity map 133, the disparity is modified along the vertical axis such that the further away from the rotation axis 150, the greater the change in disparity.

[0040] Modifying the disparity map 133 to create a tilted convergence plane 138 may not be an option in some embodiments because the disparity map 133 may not be readily available. For example, in a real-time rendering environment, when there is not the bandwidth or ability to generate a disparity map, multi-view images may be rendered on the fly and post-processed. To this end, operating on the disparity map may not allow for real-time rendering in a graphics pipeline. The following diagram illustrates tilting the convergence plane 127 in a real-time rendering environment using a graphics pipeline.

[0041] When generating or rendering a multi-view image, there are various visual properties or effects that control how the image is displayed. These visual properties include, for example, parallax, depth of field (DoF), baseline, convergence plane, convergence offset, transparency, etc. The visual properties of the multi-view image can be applied at rendering time as a post-processing operation.

[0042] As used herein, "parallax" is defined as the difference between at least two views of a multi-view image at corresponding positions. For example, in the context of stereoscopic vision, the left and right eyes see the same object, but at slightly different positions, due to the difference in viewing angle between the eyes. This difference can be quantified as parallax. The change in parallax across a multi-view image conveys the perception of depth.

[0043] As used herein, "depth of field" is defined as the difference in depth between two objects that are considered to be in focus. For example, a large depth of field in a multi-view image results in a small amount of parallax between a relatively large range of depths.

[0044] As used herein, "baseline" or "camera baseline" is defined as the distance between two cameras capturing corresponding views of a multi-view image. For example, in the context of stereoscopic vision, the baseline is the distance between the left eye and the right eye. A larger baseline may result in increased disparity and improve the 3D effect of the multi-view image.

[0045] As used herein, "convergence offset" refers to the distance between the camera and a point along the convergence plane. Modifying the convergence offset changes the location of the convergence plane to refocus the multi-view image onto new objects at different depths.

[0046] As used herein, "transparency" refers to an object property that defines the degree to which other objects behind the object can be seen. Objects may be rendered as layers that form the final view of a multi-view image. Increasing the transparency of a front layer makes the back layer visible. Minimum transparency (e.g., no transparency) prevents the back layer from being seen, and maximum transparency makes the particular layer invisible, fully exposing the back layer.

[0047] Furthermore, as used herein, the article "a" is intended to have its ordinary meaning in the patent art, namely, "one or more." For example, as used herein, "processor" means one or more processors, and thus "memory" means "one or more memory components."

[0048] FIG. 4 illustrates an example of a computing system for tilting the convergence plane of a multi-view image, according to one embodiment consistent with principles described herein. The operation of tilting the convergence plane can be performed in the graphics pipeline 200 without using a disparity map. FIG. 4 illustrates one embodiment interfacing with the graphics pipeline 200 for tilting the convergence plane. As used herein, a "graphics pipeline" is defined as a computer implementation that renders and displays a model. The graphics pipeline may include one or more graphics processing units (GPUs), GPU cores, or other specialized processing circuitry optimized for rendering image content to a screen. For example, a GPU may include a vector processor that executes a set of instructions to operate in parallel on an array of data. The graphics pipeline 200 may include a graphics card, a graphics driver, or other hardware and software used to render graphics. The graphics pipeline 200 may be configured to render an image on the multi-view display 112. The graphics pipeline 200 may map pixels onto corresponding locations on the display and control the display to emit light to render the image.

[0049] The computing system shown in FIG. 4 may also include one or more central processing units (CPUs) 202. CPU 202 may be a general-purpose processor that executes instructions, supports an operating system, and provides user-level applications 205. In some embodiments, graphics pipeline 200 is a subsystem separate from CPU 202. For example, graphics pipeline 200 may include a dedicated processor (e.g., a GPU) separate from CPU 202. In some embodiments, graphics pipeline 200 is implemented purely as software by CPU 202. For example, CPU 202 may execute software modules that operate as graphics pipeline 200 without dedicated graphics hardware. In some embodiments, portions of graphics pipeline 200 are implemented with dedicated hardware, and other portions are implemented as software modules by CPU 202.

[0050] Application 205 may be a user-level application that generates a user interface that is rendered by graphics pipeline 200 for display on multiview display 112. For example, application 205 may be a navigation application that loads various maps showing streets, buildings, and other geographic landmarks. The navigation application may provide a user interface that generates a 3D model of a geographic area. The navigation application may dynamically update the viewing angle of a virtual camera on the 3D model to generate a visual output of a portion of the 3D model based on the orientation of the virtual camera.

[0051] The computing system may also include memory 208. Memory 208 may include main memory (e.g., system memory), cache, or other high-speed memory for quickly processing data. Memory 208 may be volatile memory, but may also include non-volatile memory, as described in more detail below. Memory 208 may include memory for CPU 202 and memory for graphics pipeline 200, such that CPU 202 and graphics pipeline 200 share the same memory resources. In some embodiments, memory 208 includes a first memory dedicated to the CPU (e.g., CPU memory) and a second memory dedicated to graphics pipeline 200 (e.g., GPU memory, texture memory, etc.). In this embodiment, graphics pipeline 200 may load, copy, or otherwise move content from CPU memory to GPU memory.

[0052] As described above, the application 205 can generate 3D models using computer graphics techniques for 3D modeling. 3D models are mathematical representations of the various surfaces and textures of different objects, and may include spatial relationships between the objects. The application 205 can generate and update the 3D models in response to user input. User input may include navigating the 3D model by clicking or dragging a cursor, pressing directional buttons, translating the user's physical location into a virtual location within the 3D model, etc. The 3D models can be loaded into memory 208 and subsequently updated.

[0053] The 3D model can be converted into a multi-view image 211 that reveals a window into the 3D model. The window can be defined by a virtual camera with a set of coordinates within the 3D model, a viewing angle, a focal length, a baseline, etc. A sequence of multi-view images 211 can form a video that is displayed at a particular frame rate (e.g., 30 frames per second). Each multi-view image 211 can be composed of multiple views 214a-d. The example of FIG. 4 shows the multi-view image 211 formatted as a four-view image with four views, but any number of views can be used. The views 214a-d can be configured to provide horizontal parallax, vertical parallax, or both. For example, when there is horizontal parallax, the views 214a-d appear to change as a viewer moves from left to right relative to the multi-view display 112.

[0054] An application 205 can load views 214a-d of a multiview image 211 into memory 208. For example, application 205 may be configured to convert a 3D model into a rendered scene for showing a multiview image 211 derived from the 3D model. One or more views 214a-d are generated by application 205 and placed in specific blocks of memory 208. The views 214a-d are represented by a bitmap defined by a pixel coordinate system. 217 For example, the views 214a-d may be represented as a two-dimensional array of bitmaps along the horizontal (X) and vertical (Y) axes. 217 Each pixel in has a corresponding location on the display. For example, a bitmap 217The top-left pixel of the view 214a-d controls the output of the top-left pixel of the display. Additionally, each view 214a-d may have a corresponding view index number 220. The view index number 220 may be an ordered view number of a view within the multiview image 211. For example, in a four-view multiview format, each of the four views may be numbered 1, 2, 3, and 4. The view index number 220 indicates the position of the view relative to the other views. For example, view 1 may be the left-most view, view 2 may be the left center view, view 3 may be the right center view, and view 4 may be the right-most view. In this case, the maximum disparity is between view 1 and view 4.

[0055] Once views 214a-d have been generated and loaded into memory 208, application 205 can invoke rendering commands 221 to graphics pipeline 200. Rendering commands 221 instruct graphics pipeline 200 to begin rendering multi-view image 211. Rendering commands 221 can be function calls to a graphics driver that cause graphics pipeline 200 to render multi-view image 211. Rendering commands 221 can identify the particular multi-view image 211 to be rendered. For example, rendering commands 221 can identify an address block where multi-view image 211 is stored.

[0056] Graphics pipeline 200 may include one or more shaders 226 for rendering multi-view image 211. Shader 226 may be a hardware device (e.g., a shader core), a software module, or a combination thereof. Shader 226 may be executed by a GPU of graphics pipeline 200. An initial rendering of multi-view image 211 may be performed by a module that performs various techniques, such as rasterization, to render a simple or rough version of multi-view image 211. The initial rendering operation may be a fast and highly efficient operation for converting scene geometry into pixels for display. The initial rendering may not include more advanced optically advanced effects. In some embodiments, shader 226 may be used in the initial rendering.

[0057] After the initial rendering is performed, one or more advanced optical effects can be applied to the initially rendered multi-view image. The optical effects can be applied using one or more shaders 226. By operating on the initially rendered multi-view image 211, the shaders 226 are considered to implement post-processing effects. As used herein, "post-processing" is defined as an operation performed on the initially rendered image as part of the rendering process in the graphics pipeline 200. Different shaders 226 can be configured to perform post-processing. Some examples of post-processing include, but are not limited to, modifying color saturation, modifying hue, adjusting brightness, adjusting contrast, applying blur, performing volumetric lighting, applying depth effects, performing cel shading, creating a bokeh effect, and applying one or more filters. As used herein, a "shader" is defined as a graphics component in a graphics pipeline that applies a specific graphics operation, including, for example, initial rendering or post-processing.

[0058] An application 205 can interface with graphics pipeline 200 using one or more application programming interfaces (APIs). One example of an API is OpenGL, which provides an interface to allow an application 205 to invoke functions executed in graphics pipeline 200. For example, an API may be used by application 205 to invoke a particular shader 226 that performs post-processing on an initially rendered multi-view image 211.

[0059] Embodiments are directed to implementing functionality in graphics pipeline 200 to tilt a convergence plane during real-time rendering. The following provides an example of functions and operations that may occur within a computing system. As described above, application 205 may generate views 214a-d of multi-view image 211 and load them into memory 208. Application 205 running on an operating system may instruct a CPU to load views 214a-d into blocks of memory 208.

[0060] The views 214a-d are bitmaps defined by a pixel coordinate system. 217 The views 214a-d identify a particular viewpoint and viewing angle of the 3D model and represent it as a bitmap. 217, which may be generated from the 3D model by converting it into a 3D model. This may be performed for each view of the multi-view image 211. The application 205 may then invoke rendering commands 221 to initially render views 214a-d of the multi-view image 211. For example, the application 205 may use an API to request the graphics pipeline 200 to perform the initial rendering. In response, the graphics pipeline 200 may generate the initially rendered views 214a-d, for example, by performing rasterization. In a real-time graphics rendering environment, the graphics pipeline 200 may be optimized to quickly render views 214a-d on the fly. This provides a seamless experience to the viewer because the new multi-view image 211 is dynamically generated (and not pre-rendered).

[0061] The application 205 is then configured to tilt the convergence plane in real time. For example, the application 205 may identify the distance between the views 214a-d and a central viewpoint. Assuming that the different views 214a-d have different degrees of horizontal parallax relative to the central viewpoint, the distance between each view and the central viewpoint along the horizontal axis can be determined. This distance depends on the baseline (e.g., the distance between the views). For example, the larger the baseline, the greater the distance from the central viewpoint. In some embodiments, the distance between the views 214a-d and the central viewpoint is identified by determining the ordered view numbers (e.g., view index numbers 220) of the views 214a-d in the multiview image 211. For example, if the views 214a-d of the multiview image 211 are ordered from 1 to 4, view 1 is positioned on the leftmost side and view 4 is positioned on the rightmost side. The view index numbers 220 correspond to the distance between the views 214a-d and the central viewpoint. For example, a view index number of 1, 220, may correspond to a distance of 50 pixels to the left of center, and a view index number of 2, Number 220may correspond to a distance of 25 pixels to the left of center, a view index number of 3 may correspond to a distance of 25 pixels to the right of center, and a view index number of 4 Number 220 may correspond to a distance of 50 pixels to the right of center. The distance from the center may be a signed number (e.g., positive or negative) to indicate whether the view is to the left of center. For example, a negative distance may indicate that the view is to the left of center, while a positive distance may indicate that the view is to the right of center.

[0062] Determining the distance of views 214a-d from the central viewpoint is part of determining how to tilt the convergence plane in real-time graphics pipeline 200. Application 205 can generate rendering instructions to tilt the convergence plane by using a shear function. Application 205 can send instructions to graphics pipeline 200 to render the views as sheared views. In this regard, application 205 can invoke instructions to post-process the initially rendered multi-view images so that they are sheared according to a shear function applied along an axis of a pixel coordinate system. Specifically, graphics pipeline 200 can render views 214a-d in graphics pipeline 200 as sheared views according to the shear function. The shear strength of the shear function correlates with the distance between views 214a-d and the central viewpoint. As used herein, a "shear function" is defined as a graphics operation that displaces pixels of an image along a direction according to the shear strength. The shear strength quantifies the amount of shear effect applied to the image by the shear function. The shear strength of the shear function may be correlated with the position of the view relative to other views in the multi-view image. Figure 5, described below, provides a visual illustration of the shear function.

[0063] Executing the shear function tilts the convergence plane in real time as the multiview image 211 is rendered in the graphics pipeline. A shader 226 can be customized to implement the shear function. In this regard, the application 205 can invoke the shader 226 to perform the shear function on the initially rendered multiview image 211. After applying the shear function to the views 214a-d of the multiview image, the graphics pipeline 200 can load the result into memory 208 as a sheared multiview image 232. The graphics pipeline 200 can override the multiview image 211 with the sheared multiview image 232 or can load the sheared multiview image 232 into a separate portion of the memory 208. Additional post-processing can be applied to the sheared multiview image 232 before it is ultimately rendered on the multiview display 112.

[0064] 5A and 5B show an example of applying a shear function according to one embodiment consistent with principles described herein. FIG. 5A shows different views of a multi-view image. Each view may be formatted as a bitmap image that is stored or loaded into a memory, such as memory 208 of FIG. 4. Although four views are shown, the multi-view image may have any number of views. The views shown in FIG. 5A (e.g., view 1, view 2, view 3, and view 4) have horizontal parallax. The multi-view image of FIG. 5A may have a central viewpoint 235. A viewer can look around an object in the multi-view image by moving along the horizontal axis (e.g., from left to right or right to left).

[0065] Each view may have a corresponding distance to the central viewpoint 235. While FIG. 5A shows this distance measured from the center of each view, the distance may be measured from any point on the view, such as the left or right edge. View 1 is a distance "D1" away from the central viewpoint 235. View 2 is a distance "D2" away from the central viewpoint 235. View 3 is a distance "D1" away from the central viewpoint 235. 3 View 4 is a distance "D4" away from the central viewpoint 235. Distances D1 and D2 can be negative values ​​indicating that it is to the left of the central viewpoint 235, and distances D3 and D4 can be positive values ​​indicating that it is to the right of the central viewpoint 235.

[0066] FIG. 5A illustrates a multiview image as it is loaded into memory and how it appears when initially rendered by a graphics pipeline before post-processing. FIG. 5B illustrates a multiview image after it has been sheared by a shear function as part of post-processing in a real-time graphics pipeline (e.g., graphics pipeline 200 of FIG. 4). Specifically, FIG. 5B illustrates shear view 1 generated from view 1, shear view 2 generated from view 2, shear view 3 generated from view 3, and shear view 4 generated from view 4. Each of shear views 1-4 is generated by a shear function that applies a shear strength. The shear strength is determined based on the distance (e.g., D1-D4) between the view and the central viewpoint 235. For example, the greater the distance from the central viewpoint 235, the greater the shear strength. Additionally, the sign of the shear strength (e.g., positive or negative) is defined by the sign of the distance. The sign of the shear strength controls the direction of the shear applied by the shear function.

[0067] The shear function can also be defined by shear lines 238. The shear lines 238 can extend along specific axes that control how each view is sheared. The shear function operates according to the shear lines 238. The example in FIG. 5B shows the shear lines 238 aligned along the horizontal axis. As a result, the shear function is configured to skew the view only along the horizontal axis of the pixel coordinate system. At this point, pixels in the pixel coordinate system are displaced only horizontally. The direction and degree of pixel displacement depend on the view's distance to the central viewpoint 235 (e.g., either a positive or negative distance) and whether the pixel being displaced is above or below the shear line 238. For example, in shear view 1 and shear view 2, pixels above the shear line 238 are skewed to the right, and pixels below the shear line 238 are skewed to the left. In shear view 3 and shear view 4, pixels above the shear line 238 are skewed to the left, and pixels below the shear line 238 are skewed to the right.

[0068] FIG. 5B also shows the shear effects 241a-d of corresponding shear views 1-4. A stronger shear effect causes the view to be more sheared. The shear effect is determined by the shear strength, such that a greater shear strength results in a larger shear effect 241a-d. For example, the shear strength may be based on the amount of tilt of the convergence plane. Additionally, the shear strength increases as the view moves away from the central viewpoint 235. For example, the shear effect 241a of shear view 1 is stronger than the shear effect 241b of shear view 2 because shear view 1 is farther away from the central viewpoint 235. Additionally, because shear view 1 and shear view 4 are equidistant from the central viewpoint 235, the shear effect 241a of shear view 1 is similar to the shear effect 241d of shear view 4. However, shear view 1 and shear view 4 are on opposite sides of the central viewpoint 235 and therefore have opposite directions of shear effects 241a, 241d.

[0069] The shear line 238 may form a horizontal line centered along the vertical axis by default. In other embodiments, the shear line 238 may be located at various vertical positions or may be user-specified. While FIG. 5B shows a horizontal shear line 238, the shear line 238 may be vertical. In this embodiment, the shear function is configured to skew the first and second views along the vertical axis of the pixel coordinate system. In some embodiments, the shear line 238 is tilted or curved to have varying points along the horizontal and vertical axes. In this example, the pixel may be displaced along both the X and Y directions.

[0070] One embodiment contemplates using a navigation application to dynamically generate multi-view images of a map scene as a user navigates a physical or virtual space. If the camera angle is similar to or close to a bird's-eye view, the convergence plane may be tilted about a horizontal axis. As a result, the shear function is configured to skew the view only along the horizontal axis of the pixel coordinate system.

[0071] FIG. 6 illustrates an example of interfacing with a graphics pipeline according to one embodiment consistent with principles described herein. As described above, application 205 can interface with graphics pipeline 200. For example, application 205 can be a user-level application running on an operating system of a client device. Application 205 can also be implemented as a cloud-based application running on a server and provided to a user via a client device. Application 205 can interface with graphics pipeline 200 using one or more APIs. Application 205 is responsible for computing views. Views can be dynamically computed from a 3D model as a user provides input. For example, a user may provide commands or input to change the perspective, zoom, orientation, or position of a camera capturing a scene defined by the 3D model. In response, application 205 can compute views of a multi-view image in real time. In this case, the multi-view image can be a frame of video to be rendered in a real-time graphics pipeline.

[0072] The views of a multi-view image can be dynamically computed in response to user interactions. Application 205 can generate commands to graphics pipeline 200 to perform real-time rendering of any or all views being computed by application 205. For example, application 205 may send API function calls to graphics pipeline 200 to render a view.

[0073] Real-time rendering may include an initial rendering portion and a post-processing portion. The initial rendering portion includes the graphics pipeline 200 for rendering an initial view. As described above, a view is first rendered to quickly render pixels of the multi-view image on the display without advanced optical effects. A shader may be used to perform the initial rendering. The application 205 may then invoke one or more post-processing operations to transform the initial rendering into a final rendering. The post-processing may apply image editing operations that improve the quality or realism of the initially rendered image. According to an embodiment, the application 205 instructs the graphics pipeline 200 to tilt the convergence plane. For example, the graphics pipeline 200 applies a shear function to each view. The shear strength of the shear function correlates with the position of the view relative to other views in the multi-view image. A shader may be used to implement the shear function. The application 205 may provide the shear strength, the shear line, or both as inputs to the graphics pipeline. The sheared views of the multi-view image are then rendered on the multi-view display 112. This process occurs continuously as the application 205 generates new multi-view images that are rendered in real time.

[0074] 7A and 7B show an example user interface 244 for configuring the rendering of multi-view images, according to an embodiment consistent with principles described herein. Generally, there are two modes of software development and use: configuration mode and runtime mode. Configuration mode refers to the mode in which a developer creates and configures a software application. For example, an application may allow a developer to create a navigation application during configuration mode. The developer can specify desired camera angles, post-processing operations, and other aspects of how the multi-view images are rendered. Runtime mode refers to the mode in which an end user runs software configured by a developer.

[0075] The user interface 244 may be used during configuration mode by developers developing applications that will be rendered on client devices and ultimately render multi-view images during runtime mode. The user interface may include windows containing information (e.g., text and graphics) to be presented to a user. The user interface 244 may be generated by an application used to design an end-user application. For example, the user interface 244 may be used by a developer to design a navigation application, a game application, or other application. The user interface 244 may be used by a developer to design graphics and how the graphics are presented to other users. The user interface 244 may also be rendered by an end-user application. The user interface 244 may allow a user to configure shaders during configuration mode by making user selections for different post-processing operations. Once the shaders are configured according to user input, the shaders can post-process the multi-view images at runtime.

[0076] The user interface 244 may have a first portion 247 for displaying a multi-view image or a representation thereof. The first portion 247 may include a rendering of the multi-view image. For example, the rendering of the multi-view image may simulate how user settings are applied to the multi-view image during runtime. The user interface 244 may have a second portion 250 including a menu. The menu may include various input elements, such as sliders, text boxes, check boxes, radio buttons, drop-down menus, etc. The menu allows a user to change various visual parameters of the multi-view image as it is rendered in the first portion. These visual parameters may include, for example, a camera baseline, a convergence offset, a ZDP rotation, an auto-ZDP option, a depth of field (DoF) threshold, a DoF intensity, a transparency threshold, a transparency intensity, and potentially other visual parameters. A user may provide input by manipulating one or more input elements. As a result, user input is received from the user interface 244.

[0077] FIG. 7A illustrates an example of receiving user input from a user interface and determining shear intensity based on the user input. For example, a user may slide a ZDP rotation slider to select a range of ZDP rotation. When the slider is set to a minimum value (e.g., zero rotation) at one end, the convergence plane is not rotated. When the slider is set to a maximum value by moving it to the other end, the convergence plane is tilted in a corresponding manner. That is, the amount of ZDP rotation specified by the user is used to determine the amount of tilt. This allows for quantifying the strength of the shear when applying the shear function during runtime.

[0078] The shear function can also calculate the strength of the shear according to a baseline that can be specified by the user. The baseline controls the distance between each view and the central viewpoint by increasing the distance between at least two views. Therefore, increasing the baseline moves a view farther from the central viewpoint, thereby subjecting that view to a stronger shear effect. To this end, outer views are sheared to a greater extent to achieve the effect of tilting the convergence plane.

[0079] FIG. 7B shows an example of a user interface that allows a user to select an option to automatically determine the amount of tilt of the convergence plane during configuration mode. For example, an application may automatically determine the shear strength by calculating the disparity value at a common point between a view and another view of a multi-view image. For example, the application may identify a feature at a predetermined location. The feature may be a pixel or a set of pixels with a common color. The predetermined location may be a midpoint along the horizontal or vertical axis of the view. The application may identify the location of a corresponding feature in another view to determine the amount of shift due to the different view angle of the other view. The application may invoke a ray casting operation to identify the feature at the predetermined location. Ray casting refers to projecting a virtual ray from a specific angle toward a specific location on the 3D model. The output identifies the feature in the 3D model. Ray casting can be used to determine the disparity between different views of the 3D model. The amount by which a feature is displaced between two views is equal to the disparity. Once the disparity between two views is identified at a particular location, an optimal shear strength can be determined such that tilting the convergence plane will result in the parallax being eliminated at that particular location. In this regard, tilting the convergence plane using the calculated shear strength will align the views at a given location such that no parallax exists.

[0080] 7A and 7B also illustrate a user interface for selectively applying post-processing operations. In some embodiments, post-processing operations can be applied to selected regions of a multi-view image. For example, an application may be configured to receive user input from the user interface, determine a disparity value range based on the user input, and configure a shader to operate on pixels of a view in response to pixels having disparity values ​​within the disparity value range. The user interface 244 may include a menu for selecting a threshold, such as a DoF threshold, a transparency threshold, or a threshold for other post-processing operations. The threshold may be a range of values ​​corresponding to a range of disparity. A low threshold may encompass regions of a view corresponding to a low amount of disparity (e.g., zero or near-zero disparity). A higher threshold may encompass regions of a view corresponding to a large amount of disparity, such that the entire view is selected. The threshold selection extends the selection of the view in both directions (into and out of) the zero-disparity plane. Thus, based on the threshold selection, the application can determine a disparity value range and select regions in the view that fall within the disparity value range.

[0081] After selecting a region of view, the application applies shader operations (e.g., post-processing operations) only to the selected region. The shaders may be configured to perform transparency or depth-of-field operations, or potentially other post-processing operations. A transparency operation varies the degree to which other objects behind an object are visible. This degree may be user-specified using a user interface. For example, as shown in FIGS. 7A and 7B, a user may specify a transparency intensity to control the transparency of pixels within a transparency threshold. The shaders that perform the transparency operations are configured according to the transparency intensity and operate on selected pixels defined by the transparency threshold.

[0082] The depth of field operation modifies the difference in depth between two objects that are considered to be in focus. For example, the depth of field operation may change the disparity values ​​of pixels within a selected pixel region. For example, if the depth of field threshold selects pixels with disparity values ​​between -30 and +30, a large depth of field intensity may specify the degree of blurring applied to the selected pixels. The depth of field operation blurs the selected pixels to correspond to the depth of field intensity.

[0083] The user interface 244 allows the user to make specific selections for threshold and post-processing operating parameters. These settings are used to configure the shader. During runtime, the shader operates according to the settings applied via the user interface 244.

[0084] Figure 8 shows an example of a computing system that applies a shear function as pixels are sampled, according to one embodiment consistent with principles described herein. Figure 8 shows a computing system that includes at least a processor and memory 303, where memory 303 stores a plurality of instructions that, when executed, cause the processor to perform various operations. Memory 303 may be similar to memory 208 of Figure 4. This example computing architecture, showing the processor and memory, is described in more detail with respect to Figure 10.

[0085] A computing system can load views of a multi-view image into memory 303. For example, as described above with respect to FIG. 4, an application (e.g., application 205) may generate one or more multi-view images 309 and load different views 312 into memory 303 in real time. The views 312 may be formatted as bitmaps defined by a pixel coordinate system. As shown in FIG. 8, the bitmap may have a horizontal (X) axis and a vertical (Y) axis. Illustratively, each pixel may be referenced by a column letter (A-G) and a row number (1-7). The top-left most pixel is referred to as pixel A1 of view 312. It should be understood that the number of pixels for each view 312 may be significantly greater than the number of pixels shown in FIG. 8.

[0086] The computing system can then send instructions (rendering instructions 317) to the graphics pipeline 315 to render the view as a shear view 320 according to a shear function applied along an axis 323 of a pixel coordinate system. The graphics pipeline 315 can be similar to the graphics pipeline 200 of FIG. 4. The rendering instructions 317 can be API function calls to render the view as a shear view 320 by invoking a shader configured to apply the shear function. The shear view 320 is part of a seamed multi-view image 326 such that each view 312 has a corresponding shear view 320. The rendering instructions 317 can identify the views to be sheared. The rendering instructions 317 can be instructions sent in real time to the graphics pipeline 315 to render the multi-view image 211 dynamically generated by an application. The shear function can be implemented by a shader, such as the shader 226 of FIG. 4. The shader can be configured by a user during a configuration mode, for example, using a user interface such as the user interface 244 of FIGS. 7A and 7B.

[0087] The shear strength of the shear function correlates to the position of the view 312 relative to other views in the multiview image 309. For example, a view index number may identify the position of the view 312 relative to other views. As described above, in some embodiments, the shear strength may be determined by a user during a configuration mode that provides user input via a user interface. The shear strength is determined from the user input and applied during runtime.

[0088] The graphics pipeline 315 is configured to implement a shear function when pixels of a bitmap are sampled by the graphics pipeline 315. For example, the shear function may include forming a shear view by sampling pixels from the view 312. Rather than uniformly sampling in a one-to-one correspondence, the shear function samples pixels along a shear line using a shear strength to create a shear effect. For example, the shear function operates according to an axis 323 that forms the shear line. Pixels in the shear view 320 are sampled from positions close to their corresponding positions in the view 312. As a pixel in the shear view 320 moves farther (vertically) from the axis 323, the amount of horizontal displacement increases relative to where the pixel is being sampled.

[0089] To illustrate, pixel D3 in shear view 320 is close to the axis near rows 3 and 4. This pixel in shear view 320 is sampled from pixel D3 in view 312. This results in no shear effect because pixel sampling is performed at the same corresponding location. However, as pixels are positioned further vertically upward, the shear effect becomes more apparent. Pixel D1 in shear view 320 is sampled from pixel C1 in view 312. In this regard, pixels north of axis 323 are skewed to the right. This is a sampling offset that applies the shear effect to the shear view. Similarly, pixel D7 in shear view 320 is sampled from pixel E7 in view 312. Pixels south of axis 323 are skewed to the left. This skew function can lead to sampling pixels at invalid locations when operating near certain edges of view 312. For example, pixel G7 in shear view 320 is sampled from a location (denoted as X) outside the view. In this case, a default pixel may be used to generate a pixel for G7 in shear view 320. The default pixel may be a pixel with a zero color value (e.g., a black pixel) or may have any other default pixel value. In some embodiments, the default pixel value may be determined by matching the closest pixel that is within the boundary.

[0090] 8 shows a shear function configured to skew view 312 only along the horizontal axis (e.g., axis 323) of the pixel coordinate system. However, any axis orientation can be applied. Additionally, as described above with respect to FIGS. 7A and 7B, post-processing operations (including tilting the convergence plane) may be configured during configuration mode using a user interface (e.g., user interface 244). The shear function can then be applied during runtime in graphics pipeline 315.

[0091] 9 illustrates a flowchart of a system and method for tilting the convergence plane of a multi-view image according to one embodiment consistent with principles described herein. The flowchart of FIG. 9 provides an example of different types of functionality that may be implemented by a computing device (e.g., a multi-view display system) executing a set of instructions. Alternatively, the flowchart of FIG. 9 may be considered to illustrate an example of elements of a method implemented in a computing device according to one or more embodiments.

[0092] In item 404, a computing device generates multiple views of a multi-view image. For example, an application (e.g., application 205 of FIG. 4) can dynamically generate views of the multi-view image in response to user input. The application can load the views into memory (e.g., memory 208 of FIG. 4, memory 303 of FIG. 8).

[0093] In item 407, the computing device identifies the distance between each view and the central viewpoint. For example, the application may identify this distance based on a view index number that indicates the position of each view relative to another view. The view index number can indicate whether the view is to the right or left of the center and how close the view is to the center when the index numbers are ordered. The distance can be calculated according to a baseline. If the baseline is predetermined, the view index can be used to calculate the distance. number may be sufficient to infer the distance between the view and the central viewpoint.

[0094] In item 410, the computing device applies a shear function to each view to generate a shear view. For example, a graphics pipeline (e.g., graphics pipeline 200 of FIG. 4, memory 303 of FIG. 8) may be instructed by an application to apply a post-processing shear function. The graphics pipeline may render a first view in the graphics pipeline as a first shear view according to a first shear strength of the shear function applied along an axis of the pixel coordinate system. The graphics pipeline may render a second view in the graphics pipeline as a second shear view according to a second shear strength of the shear function applied along an axis of the pixel coordinate system. The first shear strength and the second shear strength are different and are based on the distance between the view and the central viewpoint. For example, the first shear strength may be a negative shear strength and the second shear strength may be a positive shear strength. The sign of the shear strength controls the direction of the shear applied to the view, which depends on the position of the view relative to the central viewpoint.

[0095] In item 413, the computing device displays the rendered shear views. The shear views effectively have a slanted convergence plane controlled by the amount of shear applied to each view. The views may be rendered as a multi-view image on a multi-view display. For example, the graphics pipeline may communicate with the multi-view display, using, for example, a graphics driver and / or firmware, to cause the multi-view image to be rendered for display.

[0096] The flowchart of FIG. 9 described above may illustrate a system or method for tilting a convergence surface in real time, having the functionality and operation of an instruction set implementation. When embodied in software, each box may represent a module, segment, or portion of code including instructions for implementing a specified logical function(s). The instructions may be embodied in the form of source code including human-readable statements written in a programming language, object code compiled from source code, or machine code including numerical instructions recognizable by a suitable execution system such as a processor or computing device. The machine code may be translated from source code or the like. When embodied in hardware, each block may represent a circuit or multiple interconnected circuits for implementing the specified logical function(s).

[0097] 9 shows a particular order of execution, it is understood that the order of execution may differ from that depicted. For example, the order of execution of two or more boxes may be scrambled relative to the order shown. Also, two or more boxes shown may be executed concurrently or with partial concurrence. Furthermore, in some embodiments, one or more of the boxes may be skipped or omitted.

[0098] FIG. 10 illustrates a multiview display according to one embodiment consistent with principles described herein. I10 is a schematic block diagram illustrating an exemplary diagram of a provided multi-view display system 1000. The multi-view display system 1000 may include a system of components that perform various computing operations for a user of the multi-view display system 1000. The multi-view display system 1000 may be a laptop, tablet, smartphone, touchscreen system, intelligent display system, or other client device. The multi-view display system 1000 may include various components, such as, for example, processor(s) 1003, memory 1006, input / output (I / O) component(s) 1009, a display 1012, and potentially other components. These components may be coupled to a bus 1015 that functions as a local interface allowing the components of the multi-view display system 1000 to communicate with each other. While the components of the multi-view display system 1000 are shown as housed within the multi-view display system 1000, it should be understood that at least some of the components may be coupled to the multi-view display system 1000 via external connections. For example, components may be externally plugged into or otherwise connected to the multi-view display system 1000 via external ports, sockets, plugs, or connectors.

[0099] The processor(s) 1003 may be a central processing unit (CPU), a graphics processing unit (GPU), any other integrated circuit that performs computing operations, or any combination thereof. The processor(s) 1003 may include one or more processing cores. The processor(s) 1003 comprise circuitry that executes instructions. The instructions include, for example, computer code, programs, logic, or other machine-readable instructions that are received and executed by the processor(s) 1003 to perform the computing function embodied in the instructions. The processor(s) 1003 may execute instructions to operate on data. For example, the processor(s) 1003 may receive input data (e.g., an image), process the input data according to a set of instructions, and generate output data (e.g., a processed image). As another example, the processor(s) 1003 may receive instructions and generate new instructions for subsequent execution. The processor 1003 may include hardware for implementing a graphics pipeline (e.g., graphics pipeline 200 of FIG. 4, graphics pipeline 315 of FIG. 8). For example, the processor(s) 1003 may include one or more GPU cores, vector processors, scalar processes, or hardware accelerators.

[0100] Memory 1006 may include one or more memory components. Memory 1006 is defined herein to include either or both volatile and nonvolatile memory. Volatile memory components are those that do not retain information upon loss of power. Volatile memory may include, for example, random access memory (RAM), static random access memory (SRAM), dynamic random access memory (DRAM), magnetic random access memory (MRAM), or other volatile memory structures. System memory (e.g., main memory, cache, etc.) may be implemented using volatile memory. System memory refers to high-speed memory that can temporarily store data or instructions for rapid read and write access to support processor(s) 1003. Memory 1006 may include memory 208 of FIG. 4 or memory 303 of FIG. 8, or one or more other memory devices.

[0101] Nonvolatile memory components are those that retain information upon loss of power. Nonvolatile memory includes read-only memory (ROM), hard disk drives, solid-state drives, USB flash drives, memory cards accessed via memory card readers, floppy disks accessed via associated floppy disk drives, optical disks accessed via optical disk drives, and magnetic tapes accessed via appropriate tape drives. ROM may include, for example, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or other similar memory devices. Storage memory may be implemented using nonvolatile memory to provide long-term retention of data and instructions.

[0102] Memory 1006 may refer to a combination of volatile and non-volatile memory used to store instructions as well as data. For example, data and instructions may be stored in non-volatile memory and loaded into volatile memory for processing by processor(s) 1003. Execution of instructions may include, for example, a compiled program that is loaded from non-volatile memory into volatile memory and then converted into machine code in a format that can be executed by processor(s) 1003; source code that is converted into a suitable format such as object code that can be loaded into volatile memory for execution by processor 1003; or source code that is interpreted by another executable program to generate instructions in volatile memory and executed by processor 1003. Instructions may be stored in or loaded into any portion or component of memory 1006, including, for example, RAM, ROM, system memory, storage, or any combination thereof.

[0103] Although memory 1006 is shown as separate from other components of multi-view display system 1000, it should be understood that memory 1006 may be at least partially embedded in or otherwise integrated with one or more components. For example, processor(s) 1003 may include on-board memory registers or cache for performing processing operations.

[0104] I / O component(s) 1009 include, for example, a touchscreen, speaker, microphone, buttons, switches, dials, cameras, sensors, accelerometers, or other components that receive user input or generate output to a user. I / O component(s) 1009 can receive user input and convert it into data for storage in memory 1006 or for processing by processor(s) 1003. I / O component(s) 1009 can receive data output by memory 1006 or processor(s) 1003 and convert them into a format that is perceivable by the user (e.g., sound, tactile response, visual information, etc.).

[0105] A particular type of I / O component 1009 is a display 1012. The display 1012 may include a multi-view display (e.g., multi-view display 112), a multi-view display combined with a 2D display, or any other display that presents images. A capacitive touchscreen layer, functioning as the I / O component 1009, may be layered within the display to allow a user to provide input while simultaneously perceiving visual output. The processor(s) 1003 may generate data that is formatted as an image for presentation on the display 1012. The processor(s) 1003 may execute instructions to render the image on the display for perception by the user.

[0106] The bus 1015 facilitates the communication of instructions and data between the processor(s) 1003, the memory 1006, the I / O component(s) 1009, the display 1012, and any other components of the multiview display system 1000. The bus 1015 may include address translators, address decoders, fabric, conductive traces, conductive wires, ports, plugs, sockets, and other connectors to enable the communication of data and instructions.

[0107] The instructions in memory 1006 may be embodied in various forms to implement at least a portion of a software stack. For example, the instructions may be embodied as an operating system 1031, application(s) 1034, device drivers (e.g., display driver 1037), firmware (e.g., display firmware 1040), or other software components. The operating system 1031 is a software platform that supports basic functions of the multi-view display system 1000, such as scheduling tasks, controlling the I / O components 1009, providing access to hardware resources, managing power, and supporting the applications 1034.

[0108] The application(s) 1034 run on the operating system 1031 and can gain access to the hardware resources of the multi-view display system 1000 through the operating system 1031. In this regard, the execution of the application(s) 1034 is controlled at least in part by the operating system 1031. The application(s) 1034 may be user-level software programs that provide high-level features, services, and other functionality to the user. In some embodiments, the application(s) 1034 may be dedicated "apps" downloadable or otherwise accessible to the user on the multi-view display system 1000. The user can launch the application(s) 1034 through a user interface provided by the operating system 1031. The application(s) 1034 are developed by developers and may be defined in various source code formats. The application 1034 may be developed using some programming or scripting language, such as, for example, C, C++, C#, Objective C, Java, Swift, JavaScript, Perl, PHP, Visual Basic, Python, Ruby, Go, or other programming language. The application(s) 1034 may be compiled into object code by a compiler or interpreted by an interpreter for execution by the processor(s) 1003. The application 1034 may be application 205 of FIG. 4. The application may also be another application that provides a user interface (e.g., user interface 244) as part of a configuration mode for a developer creating the application 205 of FIG. 4.

[0109] For example, device drivers, such as display driver 1037, contain instructions that allow operating system 1031 to communicate with various I / O components 1009. Each I / O component 1009 can have its own device driver. Device drivers can be installed such that they are stored in storage and loaded into system memory. For example, upon installation, display driver 1037 translates high-level display instructions received from operating system 1031 into low-level instructions implemented by display 1012 to display images.

[0110] For example, firmware such as display firmware 1040 may include machine code or assembly code that enables I / O component 1009 or display 1012 to perform low-level operations. Firmware can translate the electrical signals of a particular component into higher-level instructions or data. For example, display firmware 1040 may control how display 1012 activates individual pixels at a low level by adjusting voltage or current signals. Firmware may be stored in and executed directly from non-volatile memory. For example, display firmware 1040 may be embodied in a ROM chip coupled to display 1012 such that the ROM chip is isolated from other storage and system memory of multi-view display system 1000. Display 1012 may include processing circuitry for executing display firmware 1040.

[0111] The operating system 1031, application(s) 1034, drivers (e.g., display driver 1037), firmware (e.g., display firmware 1040), and possibly other instruction sets may each include instructions executable by the processor(s) 1003 or other processing circuitry of the multiview display system 1000 to perform the functions and operations described above. The instructions described herein may be embodied in software or code executed by the processor(s) 1003 as described above, although alternatively, the instructions may also be embodied in dedicated hardware or a combination of software and dedicated hardware. For example, the functions and operations performed by the instructions described above may be implemented as circuits or state machines employing any one or a combination of several technologies. These technologies may include, but are not limited to, discrete logic circuits having logic gates for implementing various logical functions upon the application of one or more data signals, application specific integrated circuits (ASICs) having appropriate logic gates, field programmable gate arrays (FPGAs), or other components, etc.

[0112] In some embodiments, instructions for performing the functions and operations described above may be embodied in a non-transitory computer-readable storage medium. The computer-readable storage medium may or may not be part of multi-view display system 1000. The instructions may include, for example, statements, code, or declarations that may be fetched from a computer-readable medium and executed by a processing circuit (e.g., processor(s) 1003). In the context discussed herein, a "non-transitory computer-readable medium" may be any medium that can contain, store, or maintain the instructions described herein for use by or in connection with an instruction execution system such as, for example, multi-view display system 1000.

[0113] The non-transitory computer-readable medium may comprise any one of many physical media, such as, for example, magnetic, optical, or semiconductor media. More specific examples of suitable computer-readable media may include, but are not limited to, magnetic tape, magnetic floppy diskettes, magnetic hard drives, memory cards, solid-state drives, USB flash drives, or optical disks. The computer-readable medium may also be, for example, random access memory (RAM), including static random access memory (SRAM) and dynamic random access memory (DRAM), or magnetic random access memory (MRAM). In addition, the computer-readable medium may be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or other types of memory devices.

[0114] The multi-view display system 1000 may perform any of the operations or implement the functionality described above. For example, the flowcharts and process flows described above may be performed by the multi-view display system 1000 executing instructions and processing data. Although the multi-view display system 1000 is shown as a single device, embodiments are not so limited. In some embodiments, the multi-view display system 1000 may offload processing of instructions in a distributed manner, such that multiple multi-view display systems 1000 or other computing devices operate together to execute instructions that may be stored or loaded in a distributed arrangement. For example, at least some instructions or data may be stored, loaded, or executed on a cloud-based system operating in conjunction with the multi-view display system 1000.

[0115] The foregoing describes examples and embodiments for tilting the convergence plane of a multi-view image. For example, the convergence plane may be tilted in a real-time graphics pipeline as the multi-view image is rendered for display. In this regard, the convergence plane may be tilted by applying a shear function to different views of the multi-view image based on the relative positions of each view. It should be understood that the above examples are merely illustrative of some of many specific examples illustrating the principles described herein. Clearly, those skilled in the art can readily devise numerous other configurations without departing from the scope defined by the following claims. [Explanation of symbols]

[0116] 1~4 Shear view 103 Multi-view images 106 Views 109 View direction, main maximum angle direction 112 Multi-view display 115 multi-view images 118 Thu 120 Ground 121 Camera 127 Convergence Surface 130 View frustum 133 Parallax Map 135a Lower area 135b Intermediate area 135c upper area 138 Inclined Converging Surface 141 Incline amount 150 rotation axis 200 Real-time Graphics Pipeline 202 CPU 205 User-Level Applications 208 memory 211 multi-view images 214a~d views 220 View Index Number 221 Rendering Commands 226 shaders 232 Shear Multi-View Images 235 Central Viewpoint 238 horizontal shear line 241a Shear Effect 241b Shear effect 241d Shear effect 244 User Interface 247 First Part 250 Second Part 303 Memory 309 Multi-view Images 312 views 315 Graphics Pipeline 317 Rendering Order 320 Shear View 323 axes 326 multi-view images 1000 Multi-view Display System 1003 processor 1006 memory 1009 Input / Output (I / O) Components 1012 display 1015 Bus 1031 Operating Systems 1034 Applications 1037 Display Driver 1040 Display Firmware

Claims

1. 1. A computer-implemented method for tilting a convergence plane of a multi-view image, the method comprising: loading views of the multiview image into memory, the views being formatted as bitmaps defined by a pixel coordinate system; identifying a distance between the view and a central viewpoint; Rendering the view in a graphics pipeline as a shear view according to a shear function applied along an axis of the pixel coordinate system, the shear strength of the shear function being determined relative to the distance; A method for tilting the convergence plane of a multi-view image, comprising:

2. The method of claim 1 , wherein the shear function is configured to skew the views only along the horizontal axis of the pixel coordinate system.

3. The method of claim 2 , wherein the multi-view image comprises a map generated by a navigation application.

4. 2. The method of claim 1, wherein the distance between the view and the central viewpoint is identified by determining an ordered view number of the view of the multiview image.

5. receiving user input from a user interface; determining the shear strength based on the user input; The method of claim 1 further comprising:

6. The method comprises:

2. The method of claim 1, further comprising automatically determining the shear strength by calculating a disparity value at a common point between the view and another view of the multiview image.

7. receiving user input from a user interface; determining a disparity value range based on the user input; configuring a shader to operate on pixels of the view in response to pixels having a disparity value within the disparity value range; The method of claim 1 further comprising:

8. The method of claim 7 , wherein the shader is configured to perform at least one of a transparency operation and a depth of field operation.

9. 1. A multi-view display system, comprising: a processor; a memory storing a plurality of instructions, the plurality of instructions, when executed, causing the processor to: loading views of a multi-view image into the memory, the views being formatted as bitmaps defined by a pixel coordinate system; sending instructions to a graphics pipeline to render the view as a shear view according to a shear function applied along an axis of the pixel coordinate system, the shear strength of the shear function being determined relative to the position of the view relative to other views in the multiview image; the graphics pipeline is configured to implement the shear function as pixels of the bitmap are sampled by the graphics pipeline; The multiview display system is configured to tilt a convergence plane in the graphics pipeline.

10. 10. A multiple view display system as claimed in claim 9, wherein the shear function is configured to skew the views only along the horizontal axis of the pixel coordinate system.

11. The multi-view display system of claim 9 , wherein the multi-view image comprises a map generated by a navigation application.

12. The instructions, when executed, cause the processor to: receiving user input from a user interface; determining the shear strength based on the user input; 10. The multi-view display system of claim 9, further comprising:

13. 10. The multiview display system of claim 9, wherein the instructions, when executed, further cause the processor to automatically determine the shear strength by calculating a disparity value at a common point between the view and another view of the multiview image.

14. The instructions, when executed, cause the processor to: receiving user input from a user interface; determining a disparity value range based on the user input; configuring a shader to operate on pixels of the view in response to pixels having a disparity value within the disparity value range; 10. The multi-view display system of claim 9, further comprising:

15. The multi-view display system of claim 14 , wherein the shader is configured to perform at least one of a transparency operation and a depth of field operation.

16. the multi-view display system is configured to provide wide-angle emitted light in 2D mode using a wide-angle backlight; the multi-view display system is configured to provide directional emitted light in a multi-view mode using a multi-view backlight having an array of multi-beam elements, the directional emitted light including a plurality of directional light beams provided by each multi-beam element of the array of multi-beam elements; the multi-view display system is configured to time-multiplex the 2D mode and the multi-view mode using a mode controller to sequentially activate the wide-angle backlight during first sequential time intervals corresponding to the 2D mode and the multi-view backlight during second sequential time intervals corresponding to the multi-view mode; The multi-view display system of claim 9 , wherein directional light beam directions of the plurality of directional light beams correspond to different view directions of a multi-view image.

17. the multi-view display system is configured to guide light within a light guide as guided light; 17. The multi-view display system of claim 16, wherein the multi-view display system is configured to scatter a portion of the guided light as the directional radiation using multi-beam elements of the multi-beam element array, each multi-beam element of the multi-beam element array comprising one or more of a diffraction grating, a micro-refractive element, and a micro-reflective element.

18. 1. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor of a computing system, implement tilting a convergence surface in a graphics pipeline, the instructions comprising: generating a plurality of views of a multiview image, each view formatted as a bitmap defined by a pixel coordinate system, the plurality of views comprising a first view and a second view; Rendering the first view in the graphics pipeline as a first shear view according to a first shear strength of a shear function applied along an axis of the pixel coordinate system; rendering the second view in the graphics pipeline as a second shear view according to a second shear strength of the shear function applied along the axis of the pixel coordinate system; 1. A non-transitory computer-readable storage medium comprising:

19. 20. The non-transitory computer-readable storage medium of claim 18, wherein the shear function is applied only along the horizontal axis of the pixel coordinate system.

20. 20. The non-transitory computer-readable storage medium of claim 18, wherein the shear function is configured to skew the first view and the second view along a vertical axis of the pixel coordinate system.

21. 20. The non-transitory computer-readable storage medium of claim 18, wherein the first shear strength is a negative shear strength and the second shear strength is a positive shear strength.

22. 20. The non-transitory computer-readable storage medium of claim 18, wherein the graphics pipeline is configured to implement the shearing function as pixels of the bitmap of the multi-view image are sampled by the graphics pipeline.

Citation Information

Patent Citations

  • Computer graphics processor and method for rendering 3D scenes on a 3D image display screen

    EP1542167A1

  • Computer graphics processor and method for rendering 3D scenes on a 3D image display screen

    JP2007514230A

  • Vehicle drive support device

    JP2012175314A

  • Graphics processing systems and graphics processors

    JP2018049603A

  • System and method for generating stereoscopic image with configurable background offset within a system and method for N Shooting devices (N> 1)

    US20120086786A1