IP Library › Granted Patent US 10,638,130
Granted Patent B1
US 10,638,130 · App. 16/378,843 · Granted Apr 28, 2020

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 10,638,130
App. No.
16/378,843
Granted
Apr 28, 2020
Kind
B1
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 (77)

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

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 angle candidates available for encoding the image block, wherein each of the indices corresponds to one of the angle candidates;

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

determining an intensity difference based on a difference in intensity values of neighboring pixels of the current pixel;

estimating an angle for the current pixel by calculating a function of the intensity difference of the current pixel; and

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

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

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

encoding the filtered image block to an encoded image.

2. The method of claim 1 , wherein determining an intensity difference based on a difference in intensity values of neighboring pixels of the current pixel comprises:

determining a first delta value representing a difference in intensity values between a left neighboring pixel of the current pixel and a right neighboring pixel of the current pixel;

determining a second delta value representing a difference in intensity values between an above neighboring pixel of the current pixel and a below neighboring pixel of the current pixel; and

determining the intensity difference for the current pixel based on the first delta value and the second delta value.

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

calculating a function of an edge strength of the current pixel along the estimated angle 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.

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

5. The method of claim 1 , wherein increasing a value at an index of the angle candidate within the array for a current pixel 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.

6. The method of claim 1 , wherein filtering the image block according to the main filtering direction to remove the one or more oblique edges 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 image block is filtered using a filter of the selected filter type.

7. The method of claim 1 , further comprising:

generating an angular map used to indicate the main filtering direction of the image block to a decoder for decoding the encoded image.

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

a memory storing instructions and an array of angle candidates having a number of indices based on a number of angle candidates available for encoding the image block; and

a processor configured to execute the instructions to:

initialize values at the indices of the array of angle candidates to zero;

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

determine an intensity difference based on a difference in intensity values of neighboring pixels of the current pixel;

estimate an angle for the current pixel by calculating a function of the intensity difference of the current pixel; and

increase a value at an index within the array of the angle candidate that corresponds to the estimated angle;

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

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

encode the filtered image block to an encoded image.

9. The apparatus of claim 8 , wherein the instructions to determine the intensity difference based on the difference in intensity values of the neighboring pixels of the current pixel include instructions to:

determine a first delta value representing a difference in intensity values between a left neighboring pixel of the current pixel and a right neighboring pixel of the current pixel;

determine a second delta value representing a difference in intensity values between an above neighboring pixel of the current pixel and a below neighboring pixel of the current pixel; and

determine the intensity difference for the current pixel based on the first delta value and the second delta value.

10. The apparatus of claim 9 , wherein the instructions to increase the value at the index within the array of the angle candidate that corresponds to the estimated angle instructions to:

calculate a function of an edge strength of the current pixel along the estimated angle 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.

11. The apparatus of claim 10 , wherein the function calculated for the edge strength of the current pixel is one of a logarithmic function or an exponential function.

12. The apparatus of claim 8 , wherein the instructions to increase a value at an index of the angle candidate within the array for a current pixel include instructions to:

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

increase 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.

13. The apparatus of claim 8 , wherein the instructions to filter the image block according to the main filtering direction to remove the one or more oblique edges associated with the image block include instructions to:

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

select 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.

14. The apparatus of claim 8 , wherein the instructions include instructions to:

generate an angular map used to indicate the main filtering direction of the image block to a decoder for decoding the encoded image.

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

determining respective intensity differences for at least some pixels of the image block based on neighboring pixels of respective ones of the at least some pixels;

estimating respective angles for each of the at least some pixels based on the respective intensity differences;

determining a main filtering direction of the image block based on the estimated angles;

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

encoding the filtered image block to an encoded image.

16. The method of claim 15 , wherein determining an intensity difference for a current pixel of the at least some pixels based on neighboring pixels of the current pixel comprises:

determining a first delta value representing a difference in intensities between a left neighboring pixel of the current pixel and a right neighboring pixel of the current pixel;

determining a second delta value representing a difference in intensities between an above neighboring pixel of the current pixel and a below neighboring pixel of the current pixel; and

determining the intensity difference for the current pixel based on the first delta value and the second delta value.

17. The method of claim 15 , wherein an array of angle candidates used for encoding the image block has a number of indices based on a number of angle candidates available for encoding the image block, wherein each of the indices corresponds to one of the angle candidates, wherein the method further comprises:

for a current estimated angle of the estimated angles:

determining a current angle candidate of the number of angle candidates which corresponds to the current estimated angle; and

increasing a value at an index of the current angle candidate within the array.

18. The method of claim 17 , wherein determining a main filtering direction of the image block based on the estimated angles comprises:

selecting, as the main filtering direction, an angle candidate of number of angle candidates corresponding to an index of the array having a largest value.

19. The method of claim 17 , further comprising:

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

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

20. The method of claim 17 , wherein filtering the image block according to the main filtering direction to remove the one or more oblique edges 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.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2019
From: ALAKUIJALA, JYRKI; VANDEVENNE, LODE; FISCHBACHER, THOMAS
To: GOOGLE LLC
Reel/Frame 049004/0010 →
Cited By (3)
US 12,271,192 US 12,556,599 US 12,689,744