IP Library Granted Patent US 10,536,608
Granted Patent B1
US 10,536,608 · App. 16/051,313 · Granted Jan 14, 2020

Dithering in sRGB space

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 10,536,608
App. No.
16/051,313
Granted
Jan 14, 2020
Kind
B1
Abstract

The disclosed computer-implemented method for performing dithering in non-linear space may include receiving, as an input, a non-linear sRGB-encoded data stream that includes pixel data that is to be displayed on a display screen. The disclosed method may next include generating a dithering mask for the non-linear sRGB-encoded data stream. Still further, the method may include dithering the non-linear sRGB-encoded data stream using the generated dithering mask according to a scalar dithering algorithm or a vector dithering algorithm. The method may also include linearizing the dithered non-linear sRGB-encoded data stream for display on the display screen, and may include providing the linearized RGB-encoded data stream to the display screen for display. Various other methods, systems, and computer-readable media are also disclosed.

Claims (57)

1. A computer-implemented method comprising:

receiving, as an input, a non-linear sRGB-encoded data stream that includes pixel data that is to be displayed on a display screen;

generating a dithering mask for at least one of the non-linear sRGB-encoded data stream or a linear-encoded data stream;

dithering the non-linear sRGB-encoded data stream using the generated dithering mask according to at least one of a scalar dithering algorithm or a vector dithering algorithm;

linearizing the dithered non-linear sRGB-encoded data stream for display on the display screen; and

providing the linearized RGB-encoded data stream to the display screen for display.

2. The computer-implemented method of claim 1 , wherein generating the dithering mask for the non-linear sRGB-encoded data stream comprises creating one or more noise patterns and comparing pixel values in the non-linear sRGB-encoded data stream to one or more noise values in the noise patterns, the comparison resulting in a dither value for each pixel.

3. The computer-implemented method of claim 2 , wherein generating the dithering mask for the non-linear sRGB-encoded data stream comprises implementing a mask pattern with a specified density.

4. The computer-implemented method of claim 1 , wherein dithering the non-linear sRGB-encoded data stream using the generated dithering mask is performed using a scalar dithering algorithm, and wherein input values for the dither mask are provided such that a specified input value results in an expected optical density.

5. The computer-implemented method of claim 4 , wherein the expected optical density comprises a specified value between 0 and 1, and wherein different values are identified for non-linear sRGB-encoded data to reach the specified optical density.

6. The computer-implemented method of claim 1 , further comprising linearizing the non-linear sRGB-encoded data stream into a linear RGB-encoded data stream, the linearizing being performed using a piecewise linearizing function, wherein dithering the non-linear sRGB-encoded data stream using the generated dithering mask is performed using a vector dithering algorithm, wherein the dithering mask is generated using the linear-encoded data stream, and wherein the generated dithering mask is used to identify a color's position in a unit cube, the color position defining a tetrahedral which defines a dither pattern.

7. The computer-implemented method of claim 1 , wherein dithering the non-linear sRGB-encoded data stream using the generated dithering mask includes the following:

linearizing the non-linear sRGB-encoded data stream into a linear RGB-encoded data stream, the linearizing being performed using a piecewise linearizing function;

determining, for each pixel, which tetrahedral encloses the pixel, the tetrahedral defining a dither pattern;

dithering the linear RGB-encoded data steam using the defined dither pattern;

non-linearly quantizing the linear RGB-encoded data stream into non-linear sRGB-encoded format; and

scaling the dithered non-linear sRGB-encoded data steam according to a specified scaling factor.

8. The computer-implemented method of claim 7 , wherein the piecewise linearizing function approximates one or more linear segments which are combined using a specified function, the combination of linear segments resulting in the linear RGB-encoded data stream.

9. The computer-implemented method of claim 1 , wherein dithering the non-linear sRGB-encoded data stream using the generated dithering mask includes the following:

linearizing the non-linear sRGB-encoded data stream into a linear RGB-encoded data stream, the linearizing being performed using a piecewise linearizing function;

determining, for each pixel, which tetrahedral encloses the pixel, the tetrahedral defining a dither pattern;

dithering the non-linear sRGB-encoded data steam using the defined dither pattern;

linearly quantizing the linear RGB-encoded data stream into linear sRGB-encoded format using a lookup table; and

scaling the dithered non-linear sRGB-encoded data steam according to a specified scaling factor.

10. The computer-implemented method of claim 1 , wherein linearly quantizing the linear RGB-encoded data stream into non-linear sRGB-encoded format using a lookup table is performed on a programmable hardware microprocessor.

11. A system comprising:

a display screen;

a receiving module that receives, as an input, a non-linear sRGB-encoded data stream that includes pixel data that is to be displayed on the display screen;

a mask generating module that generates a dithering mask for at least one of the non-linear sRGB-encoded data stream or a linear-encoded data stream;

a dithering module that dithers the non-linear sRGB-encoded data stream using the generated dithering mask according to at least one of a scalar dithering algorithm or a vector dithering algorithm;

a linearizing module that linearizes the dithered non-linear sRGB-encoded data stream for display on the display screen; and

a data transmission module that sends the linearized RGB-encoded data stream to the display screen for display.

12. The system of claim 11 , wherein dithering the non-linear sRGB-encoded data stream using the generated dithering mask includes the following:

linearizing the non-linear sRGB-encoded data stream into a linear RGB-encoded data stream, the linearizing being performed using a piecewise linearizing function;

determining, for each pixel, which tetrahedral encloses the pixel, the tetrahedral defining a dither pattern;

dithering the linear RGB-encoded data steam using the defined dither pattern;

non-linearly quantizing the linear RGB-encoded data stream into non-linear sRGB-encoded format; and

scaling the dithered non-linear sRGB-encoded data steam according to a specified scaling factor.

13. The system of claim 12 , wherein non-linearly quantizing provides non-linear sRGB-encoded pixel values along a specified sRGB curve.

14. The system of claim 13 , wherein bit depth for the linearized RGB-encoded data stream is reduced without reducing image quality.

15. The system of claim 13 , wherein dithering the non-linear sRGB-encoded data stream adds two mathematical operations over dithering linear RGB-encoded data.

16. The system of claim 12 , wherein dithering the non-linear sRGB-encoded data stream using the generated dithering mask includes the following:

linearizing the non-linear sRGB-encoded data stream into a linear RGB-encoded data stream, the linearizing being performed using a piecewise linearizing function;

determining, for each pixel, which tetrahedral encloses the pixel, the tetrahedral defining a dither pattern;

dithering the linear RGB-encoded data steam using the defined dither pattern;

linearly quantizing the linear RGB-encoded data stream into non-linear sRGB-encoded format using a lookup table; and

scaling the dithered non-linear sRGB-encoded data steam according to a specified scaling factor.

17. The system of claim 16 , wherein the piecewise linearizing function approximates one or more linear segments which are combined using a specified function, the combination of linear segments resulting in the linear RGB-encoded data stream.

18. The system of claim 12 , wherein generating the dithering mask for the non-linear sRGB-encoded data stream comprises creating one or more noise patterns and comparing pixel values in the non-linear sRGB-encoded data stream to one or more noise values in the noise patterns, the comparison resulting in a dither value for each pixel.

19. The system of claim 18 , wherein generating the dithering mask for the non-linear sRGB-encoded data stream comprises implementing a mask pattern with a specified density.

20. A computer-readable medium comprising:

computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

receive, as an input, a non-linear sRGB-encoded data stream that includes pixel data that is to be displayed on a display screen;

generate a dithering mask for at least one of the non-linear sRGB-encoded data stream or a linear-encoded data stream;

dither the non-linear sRGB-encoded data stream using the generated dithering mask according to at least one of a scalar dithering algorithm or a vector dithering algorithm;

linearize the dithered non-linear sRGB-encoded data stream for display on the display screen; and

send the linearized RGB-encoded data stream to the display screen for display.

Assignments (2)
CHANGE OF NAME Recorded May 26, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060199/0876 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2022
From: BUCKLEY, EDWARD; SEILER, LARRY
To: OCULUS VR, LLC
Reel/Frame 059939/0355 →