# US 11,445,211 B1 · Psychovisually optimized dithering for image and video encoding

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

- Number: US 11,445,211 B1
- Document ID: US11445211B1
- Status: Granted
- Kind: B1
- Application number: 17/118,342
- Filed: 2020-12-10
- Granted: 2022-09-13
- Earliest claimed: 2020-12-10
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Charles Benjamin Waggoner
- Web page: https://patentgrep.com/patent/US11445211B1

## CPC

- H04N 19/517: by encoding
- H04N 19/85: using pre-processing or post-processing specially adapted for video compression
- H04N 19/117: Filters, e.g. for pre-processing or post-processing (sub-band filter banks H04N19/635)
- H04N 19/136: Incoming video signal characteristics or properties
- H04N 19/14: Coding unit complexity, e.g. amount of activity or edge presence estimation (H04N19/146 takes precedence)
- H04N 19/17: the unit being an image region, e.g. an object
- H04N 19/172: the region being a picture, frame or field
- H04N 19/182: the unit being a pixel
- H04N 19/186: the unit being a colour or a chrominance component
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Techniques for psychovisually optimized dithering for image and video (e.g., frame) encoding are described. According to some embodiments, a computer-implemented method includes receiving a request to encode a video from a first depth of pixel values to a second, different depth of pixel values at a content delivery service, detecting a flat region without texturing and a non-flat region with texturing in a first frame of the video having the first depth of pixel values, dithering pixel values in the non-flat region and flattening pixel values in the flat region, encoding the dithered pixel values and the flattened pixel values of the frame into a first encoded frame having the second, different depth of pixel values by the content delivery service, and transmitting the first encoded frame from the content delivery service to a viewer device.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving a request to encode a video from a first depth of pixel values to a second, different depth of pixel values at a content delivery service;
detecting a flat region without texturing and a non-flat region with texturing in a first frame of the video having the first depth of pixel values;
dithering pixel values in the non-flat region and flattening, without dithering, pixel values in the flat region, wherein the flattening comprises converting each same pixel value of the flat region without texturing of the first depth of pixel values to a same, non-integer pixel value of the second, different depth of pixel values; and modifying the same, non-integer pixel values of the second, different depth of pixel values to a same, integer pixel value of the second, different depth of pixel values;
encoding the dithered pixel values and the flattened pixel values of the frame into a first encoded frame having the second, different depth of pixel values by the content delivery service; and
transmitting the first encoded frame from the content delivery service to a viewer device.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising:
detecting a similar flat region without texturing in a second frame of the video having the first depth of pixel values;
outputting a same, integer pixel value of the second, different depth of pixel values of the flat region in the first frame for each pixel in the similar flat region in the second frame; and
encoding the same, integer pixel value of the second, different depth of pixel values for each pixel in the similar flat region in the second frame into a second encoded frame having the second, different depth of pixel values by the content delivery service.

### Claim 3

A computer-implemented method comprising:
receiving a request to encode an image from a first depth of pixel values to a second, different depth of pixel values at a content delivery service;
detecting a flat region without texturing and a non-flat region with texturing in the image having the first depth of pixel values;
dithering pixel values in the non-flat region and flattening pixel values in the flat region, wherein the flattening comprises converting each same pixel value of the flat region without texturing of the first depth of pixel values to a same, non-integer pixel value of the second, different depth of pixel values; and modifying the same, non-integer pixel values of the second, different depth of pixel values to a same, integer pixel value of the second, different depth of pixel values;
encoding the dithered pixel values and the flattened pixel values of the image into an encoded image having the second, different depth of pixel values by the content delivery service; and
transmitting the encoded image from the content delivery service to a viewer device.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, further comprising, when the same, non-integer pixel value is within a first range at a first end of the second, different depth of pixel values, the modifying biases the same, non-integer pixel value to the same, integer pixel value nearer to the first end.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, further comprising, when the same, integer pixel value is within a second range at a second, different end of the second, different depth of pixel values, the modifying biases the same, non-integer pixel value to the same, integer pixel value nearer to the second, different end.

### Claim 6 (depends on 3)

The computer-implemented method of claim 3, wherein the encoding is performed according to an encoding standard that does not support encoding non-integer pixel values.

### Claim 7 (depends on 3)

The computer-implemented method of claim 3, wherein the same, integer pixel value is a nearest integer value to the same, non-integer pixel value.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, wherein the image is a first frame of a video having the first depth of pixel values.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, further comprising:
detecting a similar flat region without texturing in a second frame of the video having the first depth of pixel values;
outputting a same, integer pixel value of the second, different depth of pixel values of the flat region in the first frame for each pixel in the similar flat region in the second frame; and
encoding the same, integer pixel value of the second, different depth of pixel values for each pixel in the similar flat region in the second frame into a second encoded frame having the second, different depth of pixel values by the content delivery service.

### Claim 10 (depends on 3)

The computer-implemented method of claim 3, wherein the second, different depth of pixel values is smaller than the first depth of pixel values.

### Claim 11 (depends on 10)

The computer-implemented method of claim 10, wherein the first depth of pixel values is ten bits and the second, different depth of pixel values is eight bits.

### Claim 12 (depends on 3)

The computer-implemented method of claim 3, wherein the first depth of pixel values and the second, different depth of pixel values are luminance pixel values.

### Claim 13

A system comprising:
a content data store to store an image; and
one or more electronic devices to implement a content delivery service, the content delivery service including instructions that upon execution cause the content delivery service to perform operations comprising:
receiving a request to encode the image from a first depth of pixel values to a second, different depth of pixel values at the content delivery service,
detecting a flat region without texturing and a non-flat region with texturing in the image having the first depth of pixel values,
dithering pixel values in the non-flat region and flattening pixel values in the flat region, wherein the flattening comprises converting each same pixel value of the flat region without texturing of the first depth of pixel values to a same, non-integer pixel value of the second, different depth of pixel values; and modifying the same, non-integer pixel values of the second, different depth of pixel values to a same, integer pixel value of the second, different depth of pixel values,
encoding the dithered pixel values and the flattened pixel values of the image into an encoded image having the second, different depth of pixel values by the content delivery service, and
transmitting the encoded image from the content delivery service to a viewer device.

### Claim 14 (depends on 13)

The system of claim 13, wherein the instructions upon execution cause the content delivery service to perform operations further comprising, when the same, non-integer pixel value is within a first range at a first end of the second, different depth of pixel values, the modifying biases the same, non-integer pixel value to the same, integer pixel value nearer to the first end.

### Claim 15 (depends on 14)

The system of claim 14, wherein the instructions upon execution cause the content delivery service to perform operations further comprising, when the same, integer pixel value is within a second range at a second, different end of the second, different depth of pixel values, the modifying biases the same, non-integer pixel value to the same, integer pixel value nearer to the second, different end.

### Claim 16 (depends on 13)

The system of claim 13, wherein the instructions upon execution cause the content delivery service to perform operations wherein the encoding is performed according to an encoding standard that does not support encoding non-integer pixel values.

### Claim 17 (depends on 13)

The system of claim 13, wherein the first depth of pixel values and the second, different depth of pixel values are luminance pixel values.
