IP Library Granted Patent US 11,727,621
Granted Patent B2
US 11,727,621 · App. 17/553,692 · Granted Aug 15, 2023

Spatio-temporal noise masks and sampling using vectors for image processing and light transport simulation systems and applications

Inventor: Alan Robert Wolfe (San Clemente, CA)
Assignee: NVIDIA Corporation
G06T15/04G06T5/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,727,621
App. No.
17/553,692
Filed
Dec 16, 2021
Granted
Aug 15, 2023
Kind
B2
Art Unit
2611
USPC
345/419
Abstract

Apparatuses, systems, and techniques to generate blue noise masks for real-time image rendering and enhancement. In at least one embodiment, a vector-valued noise mask is generated and applied to one or more images to generate one or more enhanced images for image processing (e.g., real-time image rendering). In at least one embodiment, the noise mask includes vector values per pixel and is able to handle the temporal domain (e.g., add time to the spatial domain) to improve image quality when rendering images over multiple frames.

Claims (67)

1. A computer-implemented method for generating a texture, the method comprising:

receiving a texture including two or more pixels;

computing a texture energy value for the texture based on an energy function,

wherein the energy function is based on a distance between a pair of pixels of the two or more pixels, and one or more configurable parameters,

wherein the texture energy value is based on a summation of pixel energy values for pixels in the texture, and

wherein a pixel energy value for each pixel in the pair of pixels comprises a non-zero value as a result of at least one of: the pair of pixels being in a same multi-dimensional layer, or the pair of pixels having identical coordinates at different temporal slices;

swapping positions of pixels from pairs of pixels in the texture until the texture energy value reaches a minimum energy value based on the energy function; and

generating an output texture including output pixels based on the texture with minimum energy value to be applied to image data.

2. The computer-implemented method of claim 1 , wherein the texture is a white noise texture.

3. The computer-implemented method of claim 1 , wherein the energy function is further based on one or more sample values associated with the pair of pixels.

4. The computer-implemented method of claim 1 , wherein at least one pixel of the two or more pixels corresponds to at least one of: one or more vectors, one or more points on a mesh, or one or more objects with more than three dimensions, and wherein the output texture is to be applied to image data that includes vectors, points on a mesh, or objects with more than three dimensions.

5. The computer-implemented method of claim 1 , wherein prior to computing the energy value for the texture, the method further comprising:

sampling one or more pixels corresponding to the image data, wherein each pixel corresponds to a random variable, wherein the sampling one or more pixels corresponds to determining a value for a probability density function for a pixel, and wherein the sampling includes reducing a variance of samples by skewing samples towards regions of higher energy based on the energy function.

6. The computer-implemented method of claim 1 , wherein the one or more configurable parameters comprise a first configurable parameter and a second configurable parameter, the first configurable parameter comprising a Gaussian value, and the second configurable parameter comprising a different Gaussian value from the first configurable parameter.

7. The computer-implemented method of claim 1 , the method further comprising:

prior to computing the energy value for the texture, sampling one or more pixels corresponding to the image data, wherein each pixel corresponds to a random variable, wherein the sampling one or more pixels comprises at least one of: determining a value for a probability density function for a pixel, or performing non-uniform sampling.

8. The computer-implemented method of claim 1 , further comprising:

applying a low discrepancy sequence to the output texture to add an additional dimension to each output pixel.

9. The computer-implemented method of claim 1 , further comprising:

inputting one or more scalar output pixel values into a space-filling curve function to output one or more pixel values that are vectors.

10. The computer-implemented method of claim 1 , further comprising:

stratifying the texture into strata over time;

calculating a stratification score based on a number of pixel values in each stratum in which a pixel of the pair of pixels is located; and

rejecting a swap of pixels if the swap increases the stratification score.

11. The computer-implemented method of claim 1 , further comprising:

applying a low pass filter to the image data.

12. The computer-implemented method of claim 1 , wherein swapping further comprises selecting two or more random pairs of pixels to swap.

13. A processor comprising:

one or more processing units to perform a plurality of operations including:

receiving a texture including two or more pixels;

computing a texture energy value for the texture based on an energy function,

wherein the energy function is based on a distance between a pair of pixels of the two or more pixels, and one or more configurable parameters,

wherein the texture energy value is based on a summation of pixel energy values for pixels in the texture, and

wherein a pixel energy value for each pixel in the pair of pixels comprises a non-zero value as a result of at least one of: the pair of pixels being in a same multi-dimensional layer, or the pair of pixels having identical coordinates at different temporal slices;

swapping positions of pixels from pairs of pixels in the texture until the texture energy value reaches a minimum energy value based on the energy function;

generating an output texture including output pixels based on the texture with minimum energy value to be applied to image data; and

rendering an output image over multiple frames based on applying the texture to the one or more images.

14. The processor of claim 13 , wherein sampling one or more pixels corresponding to the image data, wherein each pixel corresponds to a random variable, wherein the sampling one or more pixels corresponds to determining a value for a probability density function for a pixel, and wherein the sampling includes reducing a variance of samples by skewing the samples towards regions of higher energy based on the energy function.

15. The processor of claim 13 , wherein the texture is a white noise texture.

16. The processor of claim 13 , wherein at least one pixel of the two or more pixels corresponds to at least one of: one or more vectors, one or more points on a mesh, or one or more objects with more than three dimensions, and wherein the output texture is to be applied to image data that includes vectors, points on a mesh, or objects with more than three dimensions.

17. The processor of claim 13 , wherein the operations further comprise:

sampling one or more pixels corresponding to the image data, wherein each pixel corresponds to a random variable, wherein the sampling one or more pixels corresponds to determining a value for a probability density function for a pixel, and wherein the sampling includes reducing a variance of the samples by skewing cosine-weighted samples towards regions of higher energy based on the energy function.

18. The processor of claim 13 , wherein the operations further comprise:

applying a rank-1 lattice to add an additional dimension to the output texture.

19. The processor of claim 13 , wherein the operations further comprise:

inputting one or more scalar output pixel values into a space-filling curve function to output one or more pixel values that are vectors.

20. A non-transitory computer-readable storage medium having stored thereon one or more instructions, which if performed by one or more processors, cause one or more processors to perform operations comprising:

receiving a texture including two or more pixels;

computing a texture energy value for the texture based on an energy function,

wherein the energy function is based on a distance between a pair of pixels of the two or more pixels, and one or more configurable parameters,

wherein the texture energy value is based on a summation of pixel energy values for pixels in the texture, and

wherein a pixel energy value for each pixel in the pair of pixels comprises a non-zero value as a result of at least one of: the pair of pixels being in a same multi-dimensional layer, or the pair of pixels having identical coordinates at different temporal slices;

swapping positions of pixels within pairs of pixels in the texture until the texture reaches a minimum energy value based on the energy function; and

generating an output texture including output pixels based on the texture with minimum energy value to be applied to image data.

21. The non-transitory computer-readable storage medium of claim 20 , wherein a texture is stratified through time, and further comprising rejecting a pixel swap based on a number of pixel values found in strata of the texture.

22. The non-transitory computer-readable storage medium of claim 20 , wherein the texture includes a temporal dimension.

23. The non-transitory computer-readable storage medium of claim 20 , further comprising:

sampling one or more pixels corresponding to the image data, wherein each pixel corresponds to a random variable, wherein the sampling one or more pixels corresponds to determining a value for a probability density function for a pixel, and wherein the sampling includes reducing a variance of samples by skewing the samples towards regions of greater light reflection based on the energy function.

24. The non-transitory computer-readable storage medium of claim 20 , wherein the operations further comprise:

setting the energy value of a pixel to a zero value if the pixel and another pixel are not in a same multi-dimensional layer or do not have identical coordinates.

25. The non-transitory computer-readable storage medium of claim 20 , wherein the one or more configurable parameters comprise a first configurable parameter and a second configurable parameter, the first configurable parameter comprising an energy falloff parameter corresponding to how energy dissipates from a pixel, and the second configurable parameter corresponding to a normal distribution of energy.

26. The non-transitory computer-readable storage medium of claim 20 , further comprising:

inputting one or more scalar output pixel values into a space-filling curve function to output one or more pixel values that are vectors.

27. The non-transitory computer-readable storage medium of claim 20 , wherein the operations further comprise:

applying a low pass filter to the image data.

28. The non-transitory computer-readable storage medium of claim 20 , wherein a number of swaps corresponds to a width, height, and depth of the texture.

29. The non-transitory computer-readable storage medium of claim 20 , wherein the energy function has a non-zero value as a result of the pair of pixels having identical z coordinates.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2021
From: WOLFE, ALAN ROBERT
To: NVIDIA CORPORATION
Reel/Frame 058533/0176 →
Continuity (2)
Provisional Application 63196116 · Jun 2, 2021
Related Publication 20220392142A1 · Dec 8, 2022
Cited By (1)
US 12,633,031