# US 10,536,608 B1 · Dithering in sRGB space

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,536,608 B1
- Document ID: US10536608B1
- Status: Granted
- Kind: B1
- Application number: 16/051,313
- Filed: 2018-07-31
- Granted: 2020-01-14
- Earliest claimed: 2018-07-31
- Assignees: Facebook Technologies, LLC
- Applicants: Oculus VR, LLC
- Inventors: Edward Buckley; Larry Seiler
- Web page: https://patentgrep.com/patent/US10536608B1

## CPC

- H04N 1/4051: {producing a dispersed dots halftone pattern, the dots having substantially the same size (different sizes H04N1/4057)}
- H04N 1/4057: {the pattern being a mixture of differently sized sub-patterns, e.g. spots having only a few different diameters (multi-toning H04N1/40087)}
- H04N 1/40012: {Conversion of colour to monochrome}
- H04N 1/40081: {Soft dot halftoning, i.e. producing halftone dots with gradual edges}
- H04N 1/40087: {Multi-toning, i.e. converting a continuous-tone signal for reproduction with more than two discrete brightnesses or optical densities, e.g. dots of grey and black inks on white paper}
- H04N 1/6008: {with primary colour signals, e.g. RGB or CMY(K)}
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 2)

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.

### Claim 4 (depends on 1)

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.

### Claim 5 (depends on 4)

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.

### Claim 6 (depends on 1)

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.

### Claim 7 (depends on 1)

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.

### Claim 8 (depends on 7)

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.

### Claim 9 (depends on 1)

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.

### Claim 10 (depends on 1)

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.

### Claim 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.

### Claim 12 (depends on 11)

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.

### Claim 13 (depends on 12)

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

### Claim 14 (depends on 13)

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

### Claim 15 (depends on 13)

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

### Claim 16 (depends on 12)

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.

### Claim 17 (depends on 16)

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.

### Claim 18 (depends on 12)

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.

### Claim 19 (depends on 18)

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.

### Claim 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.
