# US 10,771,817 B2 · Method for decoding a digital image, coding method, devices, and associated computer programs

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

- Number: US 10,771,817 B2
- Document ID: US10771817B2
- Status: Granted
- Kind: B2
- Application number: 16/092,359
- Filed: 2017-04-05
- Published: 2019-05-23
- Granted: 2020-09-08
- Earliest claimed: 2016-04-26
- Assignees: B<>Com
- Applicants: B<>Com
- Inventors: Pierrick Philippe; Victorien Lorcy; Pierre Castel
- Web page: https://patentgrep.com/patent/US10771817B2

## CPC

- H04N 19/625: using discrete cosine transform [DCT]
- H04N 19/119: Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
- H04N 19/122: Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
- H04N 19/147: according to rate distortion criteria (rate-distortion as a criterion for motion estimation H04N19/567)
- H04N 19/176: the region being a block, e.g. a macroblock
- H04N 19/184: the unit being bits, e.g. of the compressed video stream
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

A method for decoding a current block of a digital image. The method includes: decoding coefficients of the current block; and transforming the current block into a decoded block, by implementing a first sub step to produce an intermediate block, that applies to the column and row vectors of the current block, and a second substep to produce a block of pixels that applies to the row and column vectors of the intermediate block, resulting from the first substep; and rebuilding the image from the decoded block. At least one of the first and second substeps includes, for an input row or column vector: forming a first subvector of size K<N or N respectively from adjacent elements of the input vector; transforming the first subvector into a first transformed subvector by applying a partial subtransform of size K×K; and building the transformed vector by inserting the first transformed subvector.

## Claims

### Claim 1

A method comprising the following acts performed by a decoding device:
receiving from a communication network a bit stream comprising coded data representative of at least one digital image; and
decoding the at least one digital image, said image being divided into a plurality of blocks processed in a defined order, said decoding comprising the following steps, implemented for a current block:
decoding coefficients of the current block from the coded data read in the bit stream;
transforming the current block into a transformed decoded block, said current block comprising M row vectors and N column vectors, with M and N being non-zero integers, said transforming step implementing a first sub step to produce an intermediate block, that applies to the column vectors respectively row vectors of the current block, and a second substep to produce a block of pixels that applies to the row vectors respectively column vectors of the intermediate block, resulting from the first substep;
rebuilding the image from the transformed decoded block;
wherein:
at least one of said first and second transformation substeps comprises, for a row vector respectively a column vector, called an input vector of the current block:
forming a first subvector of size K<N respectively M from adjacent elements of the input vector and at least one second subvector of size equal to N−K or M−K respectively from adjacent elements of the input vector, not included in the first sub-vector, such that the sum of the sizes of the formed subvectors is equal to the size of the input vector;
transforming the first subvector into a first transformed subvector by applying a first partial subtransform of size K×K and transforming the second subvector into a second transformed subvector by applying a second subtransform of size (N−K)×(N−K); and
building a transformed input vector of the intermediate block for the first transformation substep, respectively of the transformed decoded block for the second transformation step, by inserting the first transformed subvector and the at least one second transformed subvector.

### Claim 2 (depends on 1)

The method according to claim 1, wherein the first and second subtransforms are of different types.

### Claim 3 (depends on 1)

The method according to claim 1, wherein one of the at least two partial subtransforms is an identity transform.

### Claim 4 (depends on 1)

The method according to claim 1, wherein said at least two subvectors are of different sizes.

### Claim 5 (depends on 1)

The method according to claim 1, wherein at least one of the subvectors of the input vector is odd in number.

### Claim 6

A decoding device comprising:
a processor; and
a non-transitory computer-readable medium comprising instructions stored thereon, which when executed by the processor configure the decoding device to perform acts comprising:
receiving from a communication network a bit stream comprising coded data representative of at least one digital image; and
decoding the at least one digital image, said image being divided into a plurality of blocks processed in a defined order, wherein the decoding implements, for a current block block:
decoding coefficients of the current block from the coded data read in the bit stream;
transforming the current block into a decoded block, said current block comprising M row vectors and N columns vectors, with M and N being non-zero integers, said transforming implementing a first transforming producing an intermediate block, applying to the column vectors respectively row vectors of the current block, and a second transforming producing a block of pixels applying to the row vectors respectively column vectors of the intermediate block, resulting from the first transforming;
rebuilding the image from the decoded block;
wherein:
at least one of said first and second transforming comprises, for a row vector respectively a column vector, called an input vector:
forming a first subvector of size K<N respectively M from adjacent elements of the input vector and at least one second subvector of size equal to N−K or M−K respectively from adjacent elements of the input vector, not included in the first subvector, such that the sum of the sizes of the formed subvectors is equal to the size of the input vector;
transforming the first subvector into a first transformed subvector by applying a first partial subtransform of size K×K and transforming the second subvector into a second transformed subvector by applying a second subtransform of size (N−K)×(N−K); and
building the transformed vector of the intermediate block for the first transforming, respectively of the transformed decoded block for the second transforming, by inserting the first transformed subvector and the at least one second transformed subvector.

### Claim 7 (depends on 6)

The decoding device according to claim 6, wherein the decoding device is implemented in a user terminal.

### Claim 8

A non-transitory computer-readable medium comprising a computer program stored thereon, which comprises instructions for implementing a decoding method when executed by a processor of a decoding device, wherein the method comprises:
receiving from a communication network a bit stream comprising coded data representative of at least one digital image; and
decoding the at least one digital image, said image being divided into a plurality of blocks processed in a defined order, said decoding comprising the following steps, implemented for a current block:
decoding coefficients of the current block from the coded data read in the bit stream;
transforming the current block into a transformed decoded block, said current block comprising M row vectors and N column vectors, with M and N being non-zero integers, said transforming step implementing a first sub step to produce an intermediate block, that applies to the column vectors respectively row vectors of the current block, and a second substep to produce a block of pixels that applies to the row vectors respectively column vectors of the intermediate block, resulting from the first substep;
rebuilding the image from the transformed decoded block;
wherein:
at least one of said first and second transformation substeps comprises, for a row vector respectively a column vector, called an input vector of the current block:
forming a first subvector of size K<N respectively M from adjacent elements of the input vector and at least one second subvector of size equal to N−K or M−K respectively from adjacent elements of the input vector, not included in the first sub-vector, such that the sum of the sizes of the formed subvectors is equal to the size of the input vector;
transforming the first subvector into a first transformed subvector by applying a first partial subtransform of size K×K and transforming the second subvector into a second transformed subvector by applying a second subtransform of size (N−K)×(N−K); and
building a transformed input vector of the intermediate block for the first transformation substep, respectively of the transformed decoded block for the second transformation step, by inserting the first transformed subvector and the at least one second transformed subvector.

### Claim 9

A method comprising the following acts performed by an encoding device:
encoding at least one digital image, said image being divided into a plurality of blocks of pixels processed in a defined order, said encoding comprising the following steps, implemented for a current block of predetermined dimensions:
transforming the current block into a transformed block, said current block comprising M row vectors and N column vectors, with M and N being non-zero integers, said transforming comprising a first substep of transformation of the M row vectors, respectively column vectors, to provide an intermediate block formed from the transformed row vectors, respectively column vectors, and a second substep of transformation of the N column vectors, respectively row vectors of the intermediate block;
encoding the transformed block to produce coded data representative of the transformed block;
inserting the coded data into a bit stream representative of the coded image; and
transmitting the bit stream over a communication network;
wherein
at least one of said first and second transformation sub-steps comprises, for a row vector respectively a column vector, called an input vector:
forming a first subvector of size K<N respectively N from adjacent elements of the input vector and at least one second subvector of size equal to N−K respectively M−K respectively from adjacent elements of the input vector, not included in the first sub-vector, such that the sum of the sizes of the formed subvectors is equal to the size of the input vector;
transforming the first subvector into a first transformed subvector by applying a first partial subtransform of size K×K and transforming the second subvector into a second transformed subvector by applying a second subtransform of size (N−K)×(N−K); and
building a transformed row vector respectively a transformed column vector of the intermediate block for the first transformation substep, respectively of the decoded block transformed for the second transformation step, by inserting the first transformed subvector and the at least one second transformed subvector.

### Claim 10

An encoding device comprising:
a processor; and
a non-transitory computer-readable medium comprising instructions stored thereon, which when executed by the processor configure the encoding device to perform acts comprising:
encoding at least one digital image, said image being divided into a plurality of blocks of pixels processed in a defined order, said encoding comprising the following steps, implemented for a current block of predetermined dimensions:
transforming the current block into a transformed block, said current block comprising M row vectors and N column vectors, with M and N being non-zero integers, said transforming comprising a first transformation of the M row vectors, respectively column vectors, to provide an intermediate block formed from the transformed row vectors, respectively transformed column vectors, and a second transformation of the M column vectors, respectively row vectors of the intermediate block;
encoding the transformed block to produce coded data representative of the transformed block;
building a bit stream representative of the coded image configured to insert said coded data in the bit stream; and
transmitting the bit stream over a communication network;
wherein
at least one of said first and second transformations comprises, for a row vector respectively a column vector, called input vector:
forming a first subvector of size K<N respectively M from adjacent elements of the input vector and at least one second subvector of size equal to N−K respectively M−K respectively from adjacent elements of the input vector, not included in the first sub-vector, such that the sum of the sizes of the formed subvectors is equal to the size of the input vector;
transforming the first subvector into a first transformed subvector by applying a first partial subtransform of size K×K and transforming the second subvector into a second transformed subvector by applying a second subtransform of size (N−K)×(N−K); and
building a transformed row vector, respectively a transformed column vector, of the intermediate block for the first transformation, respectively of the transformed decoded block for the second transformation, by inserting the at least one first transformed subvector and the at least one second transformed subvector.

### Claim 11

A non-transitory computer-readable medium comprising a computer program stored thereon, which comprises instructions for implementing an encoding method when executed by a processor of an encoding device, wherein the method comprises:
encoding at least one digital image, said image being divided into a plurality of blocks of pixels processed in a defined order, said encoding comprising the following steps, implemented for a current block of predetermined dimensions:
transforming the current block into a transformed block, said current block comprising M row vectors and N column vectors, with M and N being non-zero integers, said transforming comprising a first substep of transformation of the M row vectors, respectively column vectors, to provide an intermediate block formed from the transformed row vectors, respectively column vectors, and a second sub step of transformation of the N column vectors, respectively row vectors of the intermediate block;
encoding the transformed block to produce coded data representative of the transformed block;
inserting the coded data into a bit stream representative of the coded image; and
transmitting the bit stream over a communication network;
wherein
at least one of said first and second transformation sub-steps comprises, for a row vector respectively a column vector, called an input vector:
forming a first subvector of size K<N respectively N from adjacent elements of the input vector and at least one second subvector of size equal to N−K respectively M−K respectively from adjacent elements of the input vector, not included in the first sub-vector, such that the sum of the sizes of the formed subvectors is equal to the size of the input vector;
transforming the first subvector into a first transformed subvector by applying a first partial subtransform of size K×K and transforming the second subvector into a second transformed subvector by applying a second subtransform of size (N−K)×(N−K); and
building a transformed row vector respectively a transformed column vector of the intermediate block for the first transformation substep, respectively of the decoded block transformed for the second transformation step, by inserting the first transformed subvector and the at least one second transformed subvector.

### Claim 12 (depends on 10)

The encoding device according to claim 10, wherein the encoding device is implemented in a user terminal.
