IP Library › Granted Patent US 10,778,989
Granted Patent B2
US 10,778,989 · App. 15/016,887 · Granted Sep 15, 2020

Rolling intra prediction for image and video coding

Inventor: Dake He (Waterloo, CA)
Assignee: BLACKBERRY LIMITED
H04N19/176H04N19/105H04N19/11H04N19/147H04N19/182H04N19/503H04N19/61
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,778,989
App. No.
15/016,887
Granted
Sep 15, 2020
Kind
B2
Abstract

Methods and devices for image and video coding using rolling intra prediction. The encoder selects a mode for a current block, the current block having a plurality of neighboring reference samples from an adjacent block, wherein the mode is associated with a prediction function. A predicted block of predicted pixels is constructed by initially determining at least some of the predicted pixels based on the prediction function with one or more of the neighboring reference samples as inputs to the prediction function, and by determining at least some other of the predicted pixels based on the prediction function with the at least some of the predicted pixels as inputs. The process proceeds to build the predicted block in a traversing order using predicted pixels of the same predicted block as inputs to the prediction function for determining other predicted pixels of the predicted block. The decoder performs the same prediction process.

Claims (66)

1. A method of decoding an image in a video or image decoder from a bitstream, the method comprising:

decoding a mode from the bitstream for a current block, the current block having a plurality of neighboring reference samples from an adjacent block, wherein the mode is associated with a prediction function;

selecting a template from among a plurality of templates based on a traversing order, wherein the template specifies relative locations of three or more nearby pixels to be used as inputs to the prediction function for a particular pixel;

constructing a predicted block of predicted pixels for the current block, wherein constructing includes selecting the traversing order according to the mode decoded from the bitstream and, in the traversing order,

determining at least some of the predicted pixels based on the prediction function and the template with one or more of the neighboring reference samples as inputs to the prediction function, and

determining at least some other of the predicted pixels based on the prediction function and the template with the at least some of the predicted pixels as inputs;

decoding residual data to create a reconstructed residual block for the current block; and

reconstructing the current block as the sum of the predicted block and the reconstructed residual block.

2. The method claimed in claim 1 , wherein the determining at least some other of the predicted pixels is based on the prediction function excluding any neighboring reference samples as inputs.

3. The method claimed in claim 1 , wherein the neighboring reference samples comprise previously-reconstructed pixels neighboring the current block.

4. The method claimed in claim 1 , wherein the prediction function comprises a linear function of two or more pixels near the particular pixel.

5. The method claimed in claim 1 , wherein the traversing order is a horizontal raster scan order.

6. The method claimed in claim 1 , wherein constructing comprises defining a work block in memory, populating a first column and a first row of work block samples of the work block with the neighboring reference samples, and determining, in a traversing order, additional work block samples of the work block based on the prediction function and the template, and wherein a portion of the additional work block samples comprise the predicted pixels.

7. The method claimed in claim 6 , wherein constructing further comprises determining a work block size based on a size of the predicted block and based on the mode.

8. A decoder for decoding an image from a bitstream, the image being partitioned into blocks and having a current block, the decoder comprising:

a processor;

memory storing a plurality of neighboring reference samples from an adjacent block; and

a decoding application containing instructions executable by the processor that, when executed, cause the processor to

decode a mode from the bitstream for the current block, wherein the mode is associated with a prediction function,

select a template from among a plurality of templates based on traversing order, wherein the template specifies relative locations of three or more nearby pixels to be used as inputs to the prediction function for a particular pixel;

construct a predicted block of predicted pixels for the current block, wherein constructing includes selecting the traversing order according to the mode decoded from the bitstream and, in the traversing order,

determining at least some of the predicted pixels based on the prediction function and the template with one or more of the neighboring reference samples as inputs to the prediction function, and

determining at least some other of the predicted pixels based on the prediction function and the template with the at least some of the predicted pixels as inputs, and

decode residual data to create a reconstructed residual block for the current block; and

reconstruct the current block as the sum of the predicted block and the reconstructed residual block.

9. A non-transitory processor-readable medium storing processor-executable instructions for decoding an image in a video or image decoder from a bitstream, wherein the processor-executable instructions, when executed by a processor in the video or image decoder, cause the processor to perform the method of:

decoding a mode from the bitstream for a current block, the current block having a plurality of neighboring reference samples from an adjacent block, wherein the mode is associated with a prediction function;

selecting a template from among a plurality of templates based on a traversing order, wherein the template specifies relative locations of three or more nearby pixels to be used as inputs to the prediction function for a particular pixel;

constructing a predicted block of predicted pixels for the current block, wherein constructing includes selecting the traversing order according to the mode decoded from the bitstream and, in the traversing order,

determining at least some of the predicted pixels based on the prediction function and the template with one or more of the neighboring reference samples as inputs to the prediction function, and

determining at least some other of the predicted pixels based on the prediction function and the template with the at least some of the predicted pixels as inputs;

decoding residual data to create a reconstructed residual block for the current block; and

reconstructing the current block as the sum of the predicted block and the reconstructed residual block.

10. A method of encoding an image in a video or image encoder to produce a bitstream, the method comprising:

selecting a mode for a current block, the current block having a plurality of neighboring reference samples from an adjacent block, wherein the mode is associated with a prediction function;

selecting a template from among a plurality of templates based on a traversing order, wherein the template specifies relative locations of three or more nearby pixels to be used as inputs to the prediction function for a particular pixel;

constructing a predicted block of predicted pixels for the current block, wherein constructing includes selecting the traversing order according to the mode selected for the current block and, in the traversing order,

determining at least some of the predicted pixels based on the prediction function and the template with one or more of the neighboring reference samples as inputs to the prediction function, and

determining at least some other of the predicted pixels based on the prediction function and the template with the at least some of the predicted pixels as inputs;

determining residual data as the difference between the current block and the predicted block; and

encoding the residual data and the selected mode for output as a portion of the bitstream.

11. The method claimed in claim 10 , wherein the determining at least some other of the predicted pixels is based on the prediction function excluding any neighboring reference samples as inputs.

12. The method claimed in claim 10 , wherein the neighboring reference samples comprise previously-reconstructed pixels neighboring the current block.

13. The method claimed in claim 10 , wherein the prediction function comprises a linear function of two or more pixels near the particular pixel.

14. The method claimed in claim 10 , wherein the traversing order is a horizontal raster scan order.

15. The method claimed in claim 10 , wherein constructing comprises defining a work block in memory, populating a first column and a first row of work block samples of the work block with the neighboring reference samples, and determining, in a traversing order, additional work block samples of the work block based on the prediction function and the template, and wherein a portion of the additional work block samples comprise the predicted pixels.

16. The method claimed in claim 15 , wherein constructing further comprises determining a work block size based on a size of the predicted block and based on the mode.

17. An encoder for encoding an image to produce a bitstream of encoded data, the image being partitioned into blocks and having a current block, the encoder comprising:

a processor;

memory storing a plurality of neighboring reference samples from an adjacent block; and

an encoding application containing instructions executable by the processor that, when executed, cause the processor to

select a mode for the current block, wherein the mode is associated with a prediction function,

select a template from among a plurality of templates based on a traversing order, wherein the template specifies relative locations of three or more nearby pixels to be used as inputs to the prediction function for a particular pixel;

construct a predicted block of predicted pixels for the current block, wherein to construct includes to select the traversing order according to the mode selected for the current block and, in the traversing order,

to determine at least some of the predicted pixels based on the prediction function and the template with one or more of the neighboring reference samples as inputs to the prediction function, and

to determine at least some other of the predicted pixels based on the prediction function and the template with the at least some of the predicted pixels as inputs, and

determine residual data as the difference between the current block and the predicted block; and

encode the residual data and the selected mode for output as a portion of the bitstream.

18. A non-transitory processor-readable medium storing processor-executable instructions for encoding an image in a video or image encoder to produce a bitstream, wherein the processor-executable instructions, when executed by a processor in the video or image encoder, cause the processor to perform the method of:

selecting a mode for a current block, the current block having a plurality of neighboring reference samples from an adjacent block, wherein the mode is associated with a prediction function;

selecting a template from among a plurality of templates based on a traversing order, wherein the template specifies relative locations of three or more nearby pixels to be used as inputs to the prediction function for a particular pixel;

constructing a predicted block of predicted pixels for the current block, wherein constructing includes selecting the traversing order according to the mode selected for the current block and, in the traversing order,

determining at least some of the predicted pixels based on the prediction function and the template with one or more of the neighboring reference samples as inputs to the prediction function, and

determining at least some other of the predicted pixels based on the prediction function and the template with the at least some of the predicted pixels as inputs;

determining residual data as the difference between the current block and the predicted block; and

encoding the residual data and the selected mode for output as a portion of the bitstream.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE ADDED PATENT NUMBER TO REMOVE PATENT NO. 8,873,407 AT PREVIOUSLY RECORDED ON REEL 64066 FRAME 1. ASSIGNOR(S) HEREBY CONFIRMS THE NUNC PRO TUNC ASSIGNMENT EFFECTIVE DATE MARCH 20, 2023. Recorded Feb 2, 2026
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 074921/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE COVER SHEET AT PAGE 50 TO REMOVE 12817157 PREVIOUSLY RECORDED ON REEL 063471 FRAME 0474. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 064806/0669 →
CORRECTIVE ASSIGNMENT TO CORRECT 12817157 APPLICATION NUMBER PREVIOUSLY RECORDED AT REEL: 064015 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 5, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064807/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 19, 2023
From: BLACKBERRY LIMITED
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064066/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Jun 16, 2023
From: OT PATENT ESCROW, LLC
To: MALIKIE INNOVATIONS LIMITED
Reel/Frame 064015/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2023
From: BLACKBERRY LIMITED
To: OT PATENT ESCROW, LLC
Reel/Frame 063471/0474 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2016
From: HE, DAKE
To: BLACKBERRY LIMITED
Reel/Frame 037732/0629 →
Continuity (1)
Related Publication 20170230673A1 · Aug 10, 2017
Cited By (1)
US 12,407,860