# US 12,190,847 B2 · Reducing 3D lookup table interpolation error while minimizing on-chip storage

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

- Number: US 12,190,847 B2
- Document ID: US12190847B2
- Status: Granted
- Kind: B2
- Application number: 17/407,981
- Filed: 2021-08-20
- Published: 2021-12-09
- Granted: 2025-01-07
- Earliest claimed: 2019-02-28
- Assignees: ATI Technologies ULC
- Applicants: ATI Technologies ULC
- Inventors: Keith Lee; David I. J. Glen; Jie Zhou; Yuxin Chen
- Web page: https://patentgrep.com/patent/US12190847B2

## CPC

- G09G 5/06: using colour palettes, e.g. look-up tables
- G09G 5/02: characterised by the way in which colour is displayed {(details of colour display specific for CRTs G09G1/28; specific for flat matrix panels other than liquid crystal displays G09G3/2003; specific for liquid crystal displays G09G3/3607)}
- G09G 2320/0242: Compensation of deficiencies in the appearance of colours
- G09G 2320/0666: for control of colour parameters, e.g. colour temperature
- G09G 2340/06: Colour space transformation
- G09G: ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION (arrangements for transferring data between digital computers and displays G06F3/14; static indicating arrangements comprising an association of a number of separate sources or light control cells G09F9/00; static indicating arrangements comprising integral associations of a number of light sources H01J, H01K, H10H, H05B33/12; scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission, details thereof H04N1/00)

## Abstract

Systems, apparatuses, and methods for reducing three dimensional (3D) lookup table (LUT) interpolation error while minimizing on-chip storage are disclosed. A processor generates a plurality of mappings from a first gamut to a second gamut at locations interspersed throughout a 3D representation of the pixel component space. For example, in one implementation, the processor calculates mappings for 17×17×17 vertices within the 3D representation. Other implementations can include other numbers of vertices. Rather than increasing the number of vertices to reduce interpolation error, the processor calculates mappings for centroids of the sub-cubes defined by the vertices within the 3D representation of the first gamut. This results in a smaller increase to the LUT size as compared to increasing the number of vertices. The centroid mappings are used for performing tetrahedral interpolation to map source pixels in the first gamut into the second gamut with a reduced amount of interpolation error.

## Claims

### Claim 1

A method comprising:
partitioning a three dimensional (3D) representation of a gamut mapping space into a plurality of sub-cubes;
calculating centroid mappings for N sub-cubes of the plurality of sub-cubes, in response to determining that the N sub-cubes have an interpolation error that exceeds a threshold, wherein a centroid mapping for a given sub-cube corresponds to a geometric center of the given sub-cube; and
providing a target pixel to a display, based at least in part on the centroid mappings.

### Claim 2 (depends on 1)

The method of claim 1, comprising:
receiving a first source pixel from a source image, wherein the source image is represented in a first gamut; and
converting the first source pixel to the target pixel in a second gamut, wherein the second gamut is different from the first gamut.

### Claim 3 (depends on 2)

The method of claim 2, comprising storing the centroid mappings in a table.

### Claim 4 (depends on 3)

The method as recited in claim 3, accessing the table to find mappings for vertices of a geometric shape that bounds pixel components of the first source pixel in a 3D representation of a pixel component space.

### Claim 5 (depends on 4)

The method as recited in claim 4, comprising:
in response to determining an interior point of the geometric shape is stored in the table, retrieving mappings of the interior point and three corresponding vertices of the geometric shape from the table;
in response to determining an interior point of the geometric shape is not stored in the table, retrieving mappings of four corresponding vertices of the geometric shape from the table; and
performing interpolation on mappings retrieved from the table to convert the first source pixel to the target pixel.

### Claim 6 (depends on 5)

The method as recited in claim 5, wherein the interpolation is tetrahedral interpolation.

### Claim 7 (depends on 1)

The method as recited in claim 1, comprising:
using a first resolution setting for a number of mapping points when calculating the centroid mappings, in response to determining the interpolation error is greater than a first threshold; and
using a second resolution setting for a number of mapping points when calculating the centroid mappings, in response to determining the interpolation error is not greater than the first threshold, wherein the second resolution setting is lower than the first resolution setting.

### Claim 8

An apparatus comprising:
a processing unit comprising circuitry configured to:
partition a three dimensional (3D) representation of a gamut mapping space into a plurality of sub-cubes;
calculate centroid mappings for N sub-cubes of the plurality of sub-cubes, in response to determining that the N sub-cubes have an interpolation error that exceeds a threshold, wherein a centroid mapping for a given sub-cube corresponds to a geometric center of the given sub-cube; and
provide a target pixel to a display, based at least in part on the centroid mappings.

### Claim 9 (depends on 8)

The apparatus of claim 8, wherein the processing unit is configured to:
receive a first source pixel from a source image, wherein the source image is represented in a first gamut; and
convert the first source pixel to the target pixel in a second gamut, wherein the second gamut is different from the first gamut.

### Claim 10 (depends on 9)

The apparatus of claim 9, wherein the processing unit is configured to store the centroid mappings in a table.

### Claim 11 (depends on 10)

The apparatus as recited in claim 10, wherein the processing unit is configured to access the table to find mappings for vertices of a geometric shape that bounds pixel components of the first source pixel in a 3D representation of a pixel component space.

### Claim 12 (depends on 11)

The apparatus as recited in claim 11, wherein the processing unit is configured to:
in response to a determination that an interior point of the geometric shape is stored in the table, retrieve mappings of the interior point and three corresponding vertices of the geometric shape from the table;
in response to a determination that an interior point of the geometric shape is not stored in the table, retrieve mappings of four corresponding vertices of the geometric shape from the table; and
perform interpolation on values retrieved from the table to convert the first source pixel to the target pixel.

### Claim 13 (depends on 12)

The apparatus as recited in claim 12, wherein the interpolation is tetrahedral interpolation.

### Claim 14 (depends on 8)

The apparatus as recited in claim 8, wherein the processing unit is configured to:
use a first resolution setting for a number of mapping points when calculating the centroid mappings, in response to determining the interpolation error is greater than a first threshold; and
use a second resolution setting for a number of mapping points when calculating the centroid mappings, in response to determining the interpolation error is not greater than the first threshold, wherein the second resolution setting is lower than the first resolution setting.

### Claim 15

A system comprising:
a processor comprising circuitry configured to calculate centroid mappings for N sub-cubes corresponding to a three dimensional (3D) representation of a gamut mapping space, wherein a centroid mapping for a given sub-cube corresponds to a geometric center of the given sub-cube; and
a display controller comprising circuitry configured to:
receive a first source pixel from a source image, wherein the source image is represented in a first gamut;
identify vertices of a geometric shape that bounds pixel components of the first source pixel in a 3D representation of a pixel component space;
convert the first source pixel to a target pixel in a second gamut, wherein the second gamut is different from the first gamut; and
provide the target pixel to a display.

### Claim 16 (depends on 15)

The system as recited in claim 15, wherein the processor is configured to access the centroid mappings to identify vertices of a geometric shape that bounds pixel components of the first source pixel in a 3D representation of a pixel component space.

### Claim 17 (depends on 16)

The system as recited in claim 16, wherein the processor is configured to partition a three dimensional (3D) representation of the gamut mapping space into a plurality of sub-cubes.

### Claim 18 (depends on 17)

The system as recited in claim 17, wherein the display controller comprises a table configured to store the mappings.

### Claim 19 (depends on 18)

The system as recited in claim 18, wherein the display controller is configured to perform interpolation on mappings retrieved from the table to generate the target pixel.

### Claim 20 (depends on 19)

The system as recited in claim 19, wherein the display controller is configured to:
in response to determining an interior point of the geometric shape is stored in the table, retrieve mappings of the interior point and three corresponding vertices of the geometric shape from the table;
in response to determining an interior point of the geometric shape is not stored in the table, retrieve mappings of four corresponding vertices of the geometric shape from the table; and
perform interpolation on values retrieved from the table to convert the first source pixel to the target pixel.
