IP Library Granted Patent US 9,172,972
Granted Patent B2
US 9,172,972 · App. 13/342,901 · Granted Oct 27, 2015

Low complexity interpolation filtering with adaptive tap size

Inventors: In Suk Chong (San Diego, CA); Liwei Guo (San Diego, CA); Marta Karczewicz (San Diego, CA)
Assignee: QUALCOMM Incorporated
H04N19/523H04N19/117H04N19/129H04N19/134H04N19/136H04N19/159H04N19/174H04N19/176H04N19/177H04N19/179H04N19/182H04N19/184H04N19/188H04N19/433H04N19/44H04N19/46H04N19/50H04N19/51H04N19/513H04N19/52H04N19/587H04N19/59H04N19/593H04N19/80
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 9,172,972
App. No.
13/342,901
Granted
Oct 27, 2015
Kind
B2
Abstract

During a prediction stage of video coding, a video coder may use relatively longer interpolation filters to generate predictive sub-pixel values using values of reference integer pixels of a reference block of video data positioned in parallel relative to a scanning order associated with the block and may use relatively shorter interpolation filters to generate predictive sub-pixel values using values of reference integer pixels of the block positioned perpendicular relative to the scanning order, wherein a longer interpolation filter generally refers to a filter with relatively more filter coefficients, or “taps,” and a shorter filter generally refers to a filter with relatively fewer taps.

Claims (160)

1. A method of coding blocks of video data, the method comprising:

obtaining a square block of pixels comprising integer pixel values corresponding to integer pixel positions within the square block of pixels;

computing sub-pixel values corresponding to sub-pixel positions associated with the square block of pixels, computing the sub-pixel values comprises:

computing a first sub-pixel value by applying a first interpolation filter defining a first one-dimensional array of filter coefficients corresponding to a first set of filter support positions within the square block of pixels; and

computing a second sub-pixel value by applying a second interpolation filter defining a second one-dimensional array of filter coefficients corresponding to a second set of filter support positions within the square block of pixels, the first one-dimensional array comprising more filter coefficients than the second one-dimensional array, and

computing a third sub-pixel value by applying a third interpolation filter defining two or more arrays of filter coefficients corresponding to a two-dimensional set of filter support positions within the square block of pixels, one of a horizontal dimension or a vertical dimension of the two or more arrays of filter coefficients selected to comprise more filter coefficients than another one of the horizontal dimension and the vertical dimension of the two or more arrays of filter coefficients based on a scanning order for the square block of pixels; and

generating a prediction block of pixels based on one or more of the computed sub-pixel values.

2. The method of claim 1 , wherein the first set of filter support positions comprises filter support positions arranged in parallel relative to the scanning order for the square block of pixels, and wherein the second set of filter support positions comprise filter support positions arranged perpendicular relative to the scanning order for the square block of pixels.

3. The method of claim 1 , wherein one of the first set of filter support positions and the second set of filter support positions comprises a set of horizontal filter support positions arranged in a common row within the square block of pixels, and another one of the first set of filter support positions and the second set of filter support positions comprises a set of vertical filter support positions arranged in a common column within the square block of pixels.

4. The method of claim 1 , wherein:

the first one-dimensional array of filter coefficients comprises 8 coefficients;

and the second one-dimensional array of filter coefficients comprises 6 coefficients.

5. The method of claim 1 , wherein:

the first one-dimensional array of filter coefficients comprises 8 coefficients;

and the second one-dimensional array of filter coefficients comprises 7 coefficients.

6. The method of claim 1 , wherein at least one of the first set of filter support positions and the second set of filter support positions corresponds to a set of integer pixel positions within the square block of pixels.

7. The method of claim 1 , wherein at least one of the first sub-pixel and the second sub-pixel is located on one of a common horizontal axis with integer pixel positions within the square block of pixels, and a common vertical axis with integer pixel positions within the square block of pixels.

8. The method of claim 1 , wherein one of the following conditions is met:

one of the filter support positions of the first set of filter support positions corresponds to a sub-pixel position within the square block of pixels corresponding to the second sub-pixel value; and

one of the filter support positions of the second set of filter support positions corresponds to a sub-pixel position within the square block of pixels corresponding to the first sub-pixel value.

9. The method of claim 1 , further comprising:

coding one or more signaling bits that identify one or more of a number of the filter coefficients included within each of the first and second one-dimensional arrays, and a value of each of the filter coefficients.

10. The method of claim 1 , wherein the one of the horizontal dimension and the vertical dimension selected to comprise more filter coefficients is parallel relative to the scanning order for the square block of pixels.

11. The method of claim 1 , wherein:

the one of the horizontal dimension and the vertical dimension of the two or more arrays of filter coefficients comprises 8 coefficients; and

the other one of the horizontal dimension and the vertical dimension of the two or more arrays comprises 6 coefficients.

12. The method of claim 1 , wherein:

the one of the horizontal dimension and the vertical dimension of the two or more arrays of filter coefficients comprises 8 coefficients; and

the other one of the horizontal dimension and the vertical dimension of the two or more arrays comprises 7 coefficients.

13. The method of claim 1 , further comprising:

coding one or more signaling bits that identify one or more of a number of the filter coefficients included within the two or more arrays and a value of each of the filter coefficients.

14. The method of claim 1 , wherein the method forms part of a video encoding process, wherein the square block of pixels comprises a reference block of pixels, and wherein the method further comprises:

receiving a block of pixels to be encoded, wherein the block of pixels to be encoded is different than the reference block of pixels;

subtracting the prediction block from the block of pixels to be encoded to generate a residual block of pixels; and

encoding the residual block.

15. The method of claim 1 , wherein the method forms part of a video decoding process, wherein the square block of pixels comprises a reference block of pixels, and wherein the method further comprises: receiving an encoded residual block of pixels; decoding the residual block; and

adding the decoded residual block to the prediction block to generate a decoded block of pixels, wherein the decoded block of pixels is different than the reference block of pixels.

16. An apparatus for coding blocks of video data, the apparatus comprising:

a memory configured to store the blocks of video data; and

a video coder comprising one or more processors configured to:

obtain a square block of pixels from the blocks of video data stored in the memory, the square block of pixels comprising integer pixel values corresponding to integer pixel positions within the square block of pixels;

compute sub-pixel values corresponding to sub-pixel positions associated with the square block of pixels, to compute the sub-pixel values, the video coder is configured to:

compute a first sub-pixel value by applying a first interpolation filter defining a first one-dimensional array of filter coefficients corresponding to a first set of filter support positions within the square block of pixels; and

compute a second sub-pixel value by applying a second interpolation filter defining a second one-dimensional array of filter coefficients corresponding to a second set of filter support positions within the square block of pixels, the first one-dimensional array comprising more filter coefficients than the second one-dimensional array, and

compute a third sub-pixel value by applying a third interpolation filter defining two or more arrays of filter coefficients corresponding to a two-dimensional set of filter support positions within the square block of pixels, one of a horizontal dimension and a vertical dimension of the two or more arrays of filter coefficients selected to comprise more filter coefficients than the other of the horizontal dimension and the vertical dimension of the two or more arrays based on a scanning order for the square block of pixels; and

generate a prediction block of pixels based on one or more of the computed sub-pixel values.

17. The method of claim 16 , wherein the first set of filter support positions comprises filter support positions arranged in parallel relative to the scanning order for the square block of pixels, and the second set of filter support positions comprises filter support positions arranged perpendicular relative to the scanning order for the square block of pixels.

18. The apparatus of claim 16 , wherein one of the first set of filter support positions and the second set of filter support positions comprises a set of horizontal filter support positions arranged in a common row within the square block of pixels, and another one of the first set of filter support positions and the second set of filter support positions comprises a set of vertical filter support positions arranged in a common column within the square block of pixels.

19. The apparatus of claim 16 , wherein:

the first one-dimensional array of filter coefficients comprises 8 coefficients;

and the second one-dimensional array of filter coefficients comprises 6 coefficients.

20. The apparatus of claim 16 , wherein:

the first one-dimensional array of filter coefficients comprises 8 coefficients;

and the second one-dimensional array of filter coefficients comprises 7 coefficients.

21. The apparatus of claim 16 , wherein at least one of the first set of filter support positions and the second set of filter support positions corresponds to a set of integer pixel positions within the square block of pixels.

22. The apparatus of claim 16 , wherein at least one of the first sub-pixel and the second sub-pixel is located on one of a common horizontal axis with integer pixel positions within the square block of pixels, and a common vertical axis with integer pixel positions within the square block of pixels.

23. the apparatus of claim 16 , wherein one of the following conditions is met:

one of the filter support positions of the first set of filter support positions corresponds to a sub-pixel position within the square block of pixels corresponding to the second sub-pixel value; and

one of the filter support positions of the second set of filter support positions corresponds to a sub-pixel position within the square block of pixels corresponding to the first sub-pixel value.

24. The apparatus of claim 16 , wherein the video coder is further configured to:

code one or more signaling bits that identify one or more of a number of the filter coefficients included within each of the first and second one-dimensional arrays, and a value of each of the filter coefficients.

25. The apparatus of claim 16 , wherein the one of the horizontal dimension and the vertical dimension selected to comprise more filter coefficients is parallel relative to the scanning order for the square block of pixels.

26. The apparatus of claim 16 , wherein:

the one of the horizontal dimension and the vertical dimension of the two or more arrays of filter coefficients comprises 8 coefficients; and

the other one of the horizontal dimension and the vertical dimension of the two-dimensional array comprises 6 coefficients.

27. The apparatus of claim 16 , wherein:

the one of the horizontal dimension and the vertical dimension of the two or more arrays of filter coefficients comprises 8 coefficients; and

the other one of the horizontal dimension and the vertical dimension of the two or more arrays comprises 7 coefficients.

28. The apparatus of claim 16 , wherein the video coder is further configured to:

code one or more signaling bits that identify one or more of a number of the filter coefficients included within the two or more arrays and a value of each of the filter coefficients.

29. The apparatus of claim 16 , wherein the video coder comprises a video encoder, wherein the square block of pixels comprises a reference block of pixels, and wherein the video encoder is further configured to:

receive a block of pixels to be encoded, wherein the block of pixels to be encoded is different than the reference block of pixels;

subtract the prediction block from the block of pixels to be encoded to generate a residual block of pixels; and

encode the residual block.

30. The apparatus of claim 16 , wherein the video coder comprises a video decoder, wherein the square block of pixels comprises a reference block of pixels, and wherein the video decoder is further configured to:

receive an encoded residual block of pixels;

decode the residual block; and

add the decoded residual block to the prediction block to generate a decoded block of pixels, wherein the decoded block of pixels is different than the reference block of pixels.

31. The apparatus of claim 16 , wherein the apparatus comprises at least one of:

an integrated circuit;

a microprocessor; or

a wireless communication device that includes the video coder.

32. A device for coding blocks of video data, the device comprising:

means for obtaining a square block of pixels comprising integer pixel values corresponding to integer pixel positions within the square block of pixels;

means for computing sub-pixel values corresponding to sub-pixel positions associated with the square block of pixels, the means for computing the sub-pixel values comprises:

means for computing a first sub-pixel value by applying a first interpolation filter defining a first one-dimensional array of filter coefficients corresponding to a first set of filter support positions within the square block of pixels; and

means for computing a second sub-pixel value by applying a second interpolation filter defining a second one-dimensional array of filter coefficients corresponding to a second set of filter support positions within the square block of pixels, the first one-dimensional array comprising more filter coefficients than the second one-dimensional, and

means for computing a third sub-pixel value by applying a third interpolation filter defining two or more arrays of filter coefficients corresponding to a two-dimensional set of filter support positions within the square block of pixels, one of a horizontal dimension and a vertical dimension of the two or more arrays of filter coefficients selected to comprise more filter coefficients than another one of the horizontal dimension and the vertical dimension of the two or more arrays based on a scanning order associated with the square block of pixels;

means for generating a prediction block of pixels based on one or more of the computed sub-pixel values.

33. The device of claim 32 , wherein the first set of filter support positions comprises filter support positions arranged in parallel relative to the scanning order for the square block of pixels, and wherein the second set of filter support positions comprises filter support positions arranged perpendicular relative to the scanning order for the square block of pixels.

34. The device of claim 32 , wherein one of the first set of filter support positions and the second set of filter support positions comprises a set of horizontal filter support positions arranged in a common row within the square block of pixels, and another one of the first set of filter support positions and the second set of filter support positions comprises a set of vertical filter support positions arranged in a common column within the square block of pixels.

35. The device of claim 32 , wherein:

the first one-dimensional array of filter coefficients comprises 8 coefficients;

and the second one-dimensional array of filter coefficients comprises 6 coefficients.

36. The device of claim 32 , wherein:

the first one-dimensional array of filter coefficients comprises 8 coefficients;

and the second one-dimensional array of filter coefficients comprises 7 coefficients.

37. The device of claim 32 , wherein at least one of the first set of filter support positions and the second set of filter support positions corresponds to a set of integer pixel positions within the square block of pixels.

38. The device of claim 32 , wherein at least one of the first sub-pixel and the second sub-pixel is located on one of a common horizontal axis with integer pixel positions within the square block of pixels, and a common vertical axis with integer pixel positions within the square block of pixels.

39. The device of claim 32 , wherein one of the following conditions is met:

one of the filter support positions of the first set of filter support positions corresponds to a sub-pixel position within the square block of pixels corresponding to the second sub-pixel value; and

one of the filter support positions of the second set of filter support positions corresponds to a sub-pixel position within the square block of pixels corresponding to the first sub-pixel value.

40. The device of claim 32 , further comprising:

means for coding one or more signaling bits that identify one or more of a number of the filter coefficients included within each of the first and second one-dimensional arrays, and a value of each of the filter coefficients.

41. The device of claim 32 , wherein the one of the horizontal dimension and the vertical dimension selected to comprise more filter coefficients is parallel relative to the scanning order for the square block of pixels.

42. The device of claim 32 , wherein:

the one of the horizontal dimension and the vertical dimension of the two or more arrays of filter coefficients comprises 8 coefficients; and

the other one of the horizontal dimension and the vertical dimension of the two or more arrays comprises 6 coefficients.

43. The device of claim 32 , wherein:

the one of the horizontal dimension and the vertical dimension of the two or more arrays of filter coefficients comprises 8 coefficients; and

the other one of the horizontal dimension and the vertical dimension of the two or more arrays comprises 7 coefficients.

44. The device of claim 32 , further comprising:

means for coding one or more signaling bits that identify one or more of a number of the filter coefficients included within the two or more arrays and a value of each of the filter coefficients.

45. The device of claim 32 , wherein the device is used as part of a video encoding process, wherein the square block of pixels comprises a reference block of pixels, and wherein the device further comprises:

means for receiving a block of pixels to be encoded, wherein the block of pixels to be encoded is different than the reference block of pixels;

means for subtracting the prediction block from the block of pixels to be encoded to generate a residual block of pixels; and

means for encoding the residual block.

46. The device of claim 32 , wherein the device is used as part of a video decoding process, wherein the square block of pixels comprises a reference block of pixels, and wherein the device further comprises:

means for receiving an encoded residual block of pixels;

means for decoding the residual block; and

means for adding the decoded residual block to the prediction block to generate a decoded block of pixels, wherein the decoded block of pixels is different than the reference block of pixels.

47. A computer-readable storage medium comprising instructions that, when executed, cause one or more processors of a video coding device to:

obtain a square block of pixels comprising integer pixel values corresponding to integer pixel positions within the square block of pixels;

compute sub-pixel values corresponding to sub-pixel positions associated with the square block of pixels, wherein the instructions cause the one or more processors to:

compute a first sub-pixel value by applying a first interpolation filter defining a first one-dimensional array of filter coefficients corresponding to a first set of filter support positions within the square block of pixels; and

compute a second sub-pixel value by applying a second interpolation filter defining a second one-dimensional array of filter coefficients corresponding to a second set of filter support positions within the square block of pixels, the first one-dimensional array comprising more filter coefficients than the second one-dimensional array, and

compute a third sub-pixel value by applying a third interpolation filter defining two or more arrays of filter coefficients corresponding to a two-dimensional set of filter support positions within the square block of pixels, one of a horizontal dimension and a vertical dimension of the two or more arrays selected to comprise more filter coefficients than another one of the horizontal dimension and the vertical dimension of the two or more arrays based on a scanning order for the square block of pixels; and

generate a prediction block of pixels based on one or more of the computed sub-pixel values.

48. The computer-readable storage medium of claim 47 , wherein the first set of filter support positions comprises filter support positions arranged in parallel relative to the scanning order for the square block of pixels, and the second set of filter support positions comprises filter support positions arranged perpendicular relative to the scanning order for the square block of pixels.

49. The computer-readable storage medium of claim 47 , wherein one of the first set of filter support positions and the second set of filter support positions comprises a set of horizontal filter support positions arranged in a common row within the square block of pixels, and another one of the first set of filter support positions and the second set of filter support positions comprises a set of vertical filter support positions arranged in a common column within the square block of pixels.

50. The computer-readable storage medium of claim 47 , wherein:

the first one-dimensional array of filter coefficients comprises 8 coefficients;

and the second one-dimensional array of filter coefficients comprises 6 coefficients.

51. The computer-readable storage medium of claim 47 , wherein:

the first one-dimensional array of filter coefficients comprises 8 coefficients;

and the second one-dimensional array of filter coefficients comprises 7 coefficients.

52. The computer-readable storage medium of claim 47 , wherein at least one of the first set of filter support positions and the second set of filter support positions corresponds to a set of integer pixel positions within the square block of pixels.

53. The computer-readable storage medium of claim 47 , wherein at least one of the first sub-pixel and the second sub-pixel is located on one of a common horizontal axis with integer pixel positions within the square block of pixels, and a common vertical axis with integer pixel positions within the square block of pixels.

54. The computer-readable storage medium of claim 47 , wherein one of the following conditions is met:

one of the filter support positions of the first set of filter support positions corresponds to a sub-pixel position within the square block of pixels corresponding to the second sub-pixel value; and

one of the filter support positions of the second set of filter support positions corresponds to a sub-pixel position within the square block of pixels corresponding to the first sub-pixel value.

55. The computer-readable storage medium of claim 47 , further comprising instructions that cause the one or more processors to:

code one or more signaling bits that identify one or more of a number of the filter coefficients included within each of the first and second one-dimensional arrays, and a value of each of the filter coefficients.

56. The computer-readable storage medium of claim 47 , wherein the one of the horizontal dimension and the vertical dimension selected to comprise more filter coefficients is parallel relative to the scanning order for the square block of pixels.

57. The computer-readable storage medium of claim 47 , wherein:

the one of the horizontal dimension and the vertical dimension of the two or more arrays of filter coefficients comprises 8 coefficients; and

the other one of the horizontal dimension and the vertical dimension of the two or more arrays comprises 6 coefficients.

58. The computer-readable storage medium of claim 47 , wherein:

the one of the horizontal dimension and the vertical dimension of the two or more arrays of filter coefficients comprises 8 coefficients; and

the other one of the horizontal dimension and the vertical dimension of the two or more arrays comprises 7 coefficients.

59. The computer-readable storage medium of claim 47 , further comprising instructions that cause the one or more processors to:

code one or more signaling bits that identify one or more of a number of the filter coefficients included within the two or more arrays and a value of each of the filter coefficients.

60. The computer-readable storage medium of claim 47 , wherein the computer-readable storage medium is used as part of a video encoding process, and wherein the square block of pixels comprises a reference block of pixels, further comprising instructions that cause the one or more processors to:

receive a block of pixels to be encoded, wherein the block of pixels to be encoded is different than the reference block of pixels;

subtract the prediction block from the block of pixels to be encoded to generate a residual block of pixels; and

encode the residual block.

61. The computer-readable storage medium of claim 47 , wherein the computer-readable storage medium is used as part of a video decoding process, and wherein the square block of pixels comprises a reference block of pixels, further comprising instructions that cause the one or more processors to:

receive an encoded residual block of pixels;

decode the residual block; and

add the decoded residual block to the prediction block to generate a decoded block of pixels, wherein the decoded block of pixels is different than the reference block of pixels.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2012
From: CHONG, IN SUK; GUO, LIWEI; KARCZEWICZ, MARTA
To: QUALCOMM INCORPORATED
Reel/Frame 027473/0505 →
Continuity (2)
Provisional Application 61430101 · Jan 5, 2011
Related Publication 20120170650A1 · Jul 5, 2012