IP Library › Granted Patent US 11,212,527
Granted Patent B2
US 11,212,527 · App. 16/858,802 · Granted Dec 28, 2021

Entropy-inspired directional filtering for image coding

Inventors: Jyrki Alakuijala (Wollerau, CH); Lode Vandevenne (Rüschlikon, CH); Thomas Fischbacher (Gattikon, CH)
Assignee: GOOGLE LLC
H04N19/117H04N19/137H04N19/176H04N19/182H04N19/86
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 11,212,527
App. No.
16/858,802
Granted
Dec 28, 2021
Kind
B2
Abstract

An image block is coded using entropy-inspired directional filtering. During encoding, intensity differences are determined for at least some pixels of an image block based on neighboring pixels of respective ones of the at least some pixels. Angles are estimated for each of those pixels based on the intensity differences. A main filtering direction of the image block is then determined based on the estimated angles. The image block is filtered according to the main filtering direction to remove artifacts along oblique edges associated with the image block. The filtered image block is then encoded to an encoded image. During decoding, an angular map indicating angles estimated for pixels of an encoded image block is received and used to determine the main filtering direction of the image block. The image block can then be filtered according to the main filtering direction and then output for display or storage.

Claims (73)

1. A method for decoding an encoded image block, the method comprising:

receiving an angular map indicating angle candidates for pixels of the encoded image block;

decoding the encoded image block to produce an unfiltered image block;

initializing values at indices of an array of angle candidates to zero, wherein a number of the indices of the array is equal to a number of the angle candidates indicated by the angular map, wherein each of the indices corresponds to one of the angle candidates;

for each current pixel of a plurality of pixels of the unfiltered image block:

identifying, based on the angular map, an angle candidate of the angle candidates which corresponds to the current pixel; and

increasing a value at an index within the array of the angle candidate that corresponds to the identified angle candidate;

determining a main filtering direction of the unfiltered image block based on the angle candidate having the largest value in the array;

filtering the unfiltered image block according to the main filtering direction to remove one or more artifacts along an oblique edge associated with the unfiltered image block; and

outputting the filtered image block for display or storage.

2. The method of claim 1 , wherein increasing the value at the index within the array of the angle candidate that corresponds to the identified angle candidate comprises:

calculating a function of an edge strength of the current pixel along an angle of the identified angle candidate to determine a floating point value for the current pixel; and

increasing the value at the index of the angle candidate based on the floating point value.

3. The method of claim 2 , wherein the function calculated for the edge strength of the current pixel is one of a logarithmic function or an exponential function.

4. The method of claim 1 , wherein increasing the value at the index within the array of the angle candidate that corresponds to the identified angle candidate comprises:

increasing the value at the index of the angle candidate in the array by a first increase value; and

increasing values at neighboring indices of the index of the angle candidate in the array by a second increase value which is less than the first increase value.

5. The method of claim 1 , wherein filtering the unfiltered image block according to the main filtering direction to remove the one or more artifacts along the oblique edge associated with the image block comprises:

determining an average of the values at one or more of the indices of the array; and

selecting a filter type based on a ratio of the largest value to the average,

wherein the unfiltered image block is filtered using a filter of the selected filter type.

6. The method of claim 1 , wherein the angular map is generated by an encoder used to encode the encoded image block.

7. The method of claim 1 , wherein receiving the angular map indicating the angle candidates for the pixels of the encoded image block comprises:

decoding the angular map from a header of an encoded image which includes the encoded image block.

8. An apparatus for decoding an encoded image block, the apparatus comprising:

a memory; and

a processor configured to execute instructions stored in the memory to:

receive an angular map indicating angle candidates for pixels of the encoded image block;

decode the encoded image block to produce an unfiltered image block;

initialize values at indices of an angle candidate structure to zero, wherein a number of the indices of the angle candidate structure is equal to a number of the angle candidates indicated by the angular map, wherein each of the indices corresponds to one of the angle candidates;

for each current pixel of a plurality of pixels of the unfiltered image block:

identify, based on the angular map, an angle candidate of the angle candidates which corresponds to the current pixel; and

increase a value at an index within the angle candidate structure of the angle candidate that corresponds to the identified angle candidate;

determine a main filtering direction of the unfiltered image block based on the angle candidate having the largest value in the angle candidate structure;

filter the unfiltered image block according to the main filtering direction to remove one or more artifacts along an oblique edge associated with the unfiltered image block; and

output the filtered image block for display or storage.

9. The apparatus of claim 8 , wherein the instructions to increase the value at the index within the angle candidate structure that corresponds to the identified angle candidate include instructions to:

calculate a function of an edge strength of the current pixel along an angle of the identified angle candidate to determine a floating point value for the current pixel; and

increase the value at the index of the angle candidate based on the floating point value.

10. The apparatus of claim 8 , wherein the instructions to increase the value at the index within the angle candidate structure that corresponds to the identified angle candidate include instructions to:

increase the value at the index of the angle candidate in the angle candidate structure by a first increase value; and

increase values at neighboring indices of the index of the angle candidate in the angle candidate structure by a second increase value which is less than the first increase value.

11. The apparatus of claim 8 , wherein the instructions to filter the unfiltered image block according to the main filtering direction to remove the one or more artifacts along the oblique edge associated with the image block include instructions to:

determine an average of the values at one or more of the indices of the angle candidate structure; and

select a filter type based on a ratio of the largest value to the average,

wherein the unfiltered image block is filtered using a filter of the selected filter type.

12. The apparatus of claim 8 , wherein the angle candidate structure is an array of angle candidates.

13. The apparatus of claim 8 , wherein the angle candidate structure is a matrix of angle candidates.

14. The apparatus of claim 8 , wherein the angle candidate structure is a table of angle candidates.

15. A method for decoding an encoded image block, the method comprising:

receiving an angular map indicating angle candidates for pixels of the encoded image block;

decoding the encoded image block to produce an unfiltered image block;

determining a main filtering direction of the unfiltered image block based on the angle candidates;

filtering the unfiltered image block according to the main filtering direction to remove one or more artifacts along an oblique edge associated with the image block; and

outputting the filtered image block for display or storage.

16. The method of claim 15 , wherein determining a main filtering direction of the unfiltered image block based on the angle candidates comprises:

for each current pixel of a plurality of pixels of the unfiltered image block:

identifying, based on the angular map, an angle candidate of the angle candidates which corresponds to the current pixel; and

increasing a value at an index within an array of angle candidate that corresponds to the identified angle candidate; and

determining a main filtering direction of the unfiltered image block based on the angle candidate having the largest value in the array.

17. The method of claim 16 , further comprising:

initializing values at the indices of the array of angle candidates to zero before decoding the image block; and

resetting the values at the indices of the array of angle candidates to zero after decoding the image block.

18. The method of claim 16 , wherein filtering the unfiltered image block according to the main filtering direction to remove the one or more artifacts along the oblique edge associated with the image block comprises:

determining an average of values at one or more of the indices of the array of angle candidates; and

selecting a filter type based on a ratio of the largest value to the average,

wherein the image block is filtered using a filter of the selected filter type.

19. The method of claim 16 , wherein increasing the value at the index within the array of the angle candidate that corresponds to the identified angle candidate comprises:

calculating a function of an edge strength of the current pixel along an angle of the identified angle candidate to determine a floating point value for the current pixel; and

increasing the value at the index of the angle candidate based on the floating point value.

20. The method of claim 16 , wherein increasing the value at the index within the array of the angle candidate that corresponds to the identified angle candidate comprises:

increasing the value at the index of the angle candidate in the array by a first increase value; and

increasing values at neighboring indices of the index of the angle candidate in the array by a second increase value which is less than the first increase value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2020
From: ALAKUIJALA, JYRKI; VANDEVENNE, LODE; FISCHBACHER, THOMAS
To: GOOGLE LLC
Reel/Frame 052509/0162 →
Continuity (2)
Continuation 16378843 · Apr 9, 2019
Related Publication 20200329240A1 · Oct 15, 2020