Video compression across continuous frame edges
First Claim
1. A method for compressing video, the method comprising:
- receiving, by an image processor, a panoramic video file, wherein receiving the panoramic video file comprises receiving frame data describing a plurality of frames;
selecting a subject frame from the panoramic video file, wherein the subject frame comprises a first plurality of pixel values corresponding to positions on a two-dimensional grid, wherein the first plurality of pixel values depict a cylindrical projection of a 360°
field-of-view;
dividing, by the image processor, the subject frame into a first plurality of macroblocks, wherein each macroblock of the first plurality of macroblocks comprises a set of pixel values that are selected from the first plurality of pixel values and that correspond to contiguous positions in the two-dimensional grid, and wherein the first plurality of macroblocks comprises a subject frame left column of macroblocks positioned adjacent to a left edge of the subject frame and a subject frame right column of macroblocks positioned adjacent a right edge of the subject frame;
identifying, by the image processor, cross-edge spatial continuity between a first macroblock in the subject frame left column of macroblocks and a second macroblock in the subject frame right column of macroblocks, wherein identifying the cross-edge spatial continuity comprises identifying a similarity between first pixel values of the first macroblock and second pixel values of the second macroblock;
receiving a subsequent frame of the panoramic video file, wherein the subsequent frame comprises a second plurality of pixel values corresponding to positions on the two-dimensional grid, and wherein the subsequent frame is positioned immediately after the subject frame according to a temporal sequence of frames of the panoramic video file;
dividing, by the image processor, the subsequent frame into a second plurality of macroblocks, wherein the second plurality of macroblocks comprises a subsequent frame left column of macroblocks positioned on a left side of the subsequent frame and a subsequent frame right column of macroblocks positioned on a right side of the subsequent frame;
identifying, by the image processor, a first motion vector between a first initial position including a portion of a subject frame right column macroblock to a first next position including a portion of a subsequent frame left column macroblock; and
generating a compressed copy of the panoramic video file, wherein generating the compressed copy of the panoramic video file comprises;
writing the second macroblock in the subject frame right column of macroblocks to the compressed copy of the panoramic video file; and
for the first macroblock in the subject frame left column of macroblocks, writing a cross-edge reference to the second macroblock in the subject frame right column of macroblocks, wherein the cross-edge reference comprises a first pointer to the second macroblock and difference data describing a difference between the first macroblock and the second macroblock; and
replacing, by the image processor, the subject frame right column macroblock with a second reference to the subsequent frame left column macroblock, wherein the second reference comprises a second pointer to the subsequent frame left column macroblock and second difference data describing a second difference between the subject frame right column macroblock and the subsequent frame left column macroblock.
1 Assignment
0 Petitions
Accused Products
Abstract
Various examples are directed to methods and systems for compressing panoramic video. An image processor may receive a frame comprising a plurality of pixel values arranged according to a two-dimensional grid and divide the frame into a plurality of pixel blocks comprising a first pixel block and a second pixel block. The first pixel block may be positioned in a first edge column adjacent a first edge of the frame and the second pixel block may be positioned in a second edge column adjacent a second edge of the frame opposite the first edge. The image processor may identify a spatial continuity between the first pixel block and the second pixel block and replace the first pixel block with a reference to the second pixel block.
30 Citations
17 Claims
-
1. A method for compressing video, the method comprising:
-
receiving, by an image processor, a panoramic video file, wherein receiving the panoramic video file comprises receiving frame data describing a plurality of frames; selecting a subject frame from the panoramic video file, wherein the subject frame comprises a first plurality of pixel values corresponding to positions on a two-dimensional grid, wherein the first plurality of pixel values depict a cylindrical projection of a 360°
field-of-view;dividing, by the image processor, the subject frame into a first plurality of macroblocks, wherein each macroblock of the first plurality of macroblocks comprises a set of pixel values that are selected from the first plurality of pixel values and that correspond to contiguous positions in the two-dimensional grid, and wherein the first plurality of macroblocks comprises a subject frame left column of macroblocks positioned adjacent to a left edge of the subject frame and a subject frame right column of macroblocks positioned adjacent a right edge of the subject frame; identifying, by the image processor, cross-edge spatial continuity between a first macroblock in the subject frame left column of macroblocks and a second macroblock in the subject frame right column of macroblocks, wherein identifying the cross-edge spatial continuity comprises identifying a similarity between first pixel values of the first macroblock and second pixel values of the second macroblock; receiving a subsequent frame of the panoramic video file, wherein the subsequent frame comprises a second plurality of pixel values corresponding to positions on the two-dimensional grid, and wherein the subsequent frame is positioned immediately after the subject frame according to a temporal sequence of frames of the panoramic video file; dividing, by the image processor, the subsequent frame into a second plurality of macroblocks, wherein the second plurality of macroblocks comprises a subsequent frame left column of macroblocks positioned on a left side of the subsequent frame and a subsequent frame right column of macroblocks positioned on a right side of the subsequent frame; identifying, by the image processor, a first motion vector between a first initial position including a portion of a subject frame right column macroblock to a first next position including a portion of a subsequent frame left column macroblock; and generating a compressed copy of the panoramic video file, wherein generating the compressed copy of the panoramic video file comprises; writing the second macroblock in the subject frame right column of macroblocks to the compressed copy of the panoramic video file; and for the first macroblock in the subject frame left column of macroblocks, writing a cross-edge reference to the second macroblock in the subject frame right column of macroblocks, wherein the cross-edge reference comprises a first pointer to the second macroblock and difference data describing a difference between the first macroblock and the second macroblock; and replacing, by the image processor, the subject frame right column macroblock with a second reference to the subsequent frame left column macroblock, wherein the second reference comprises a second pointer to the subsequent frame left column macroblock and second difference data describing a second difference between the subject frame right column macroblock and the subsequent frame left column macroblock. - View Dependent Claims (2)
-
-
3. A system for compressing video, the system comprising:
an image processor, the image processor comprising at least one processor and operatively associated non-transitory memory, wherein the image processor is programmed to; receive a first frame comprising a plurality of pixel values arranged according to a two-dimensional grid; determine a first pixel block positioned in a first edge column adjacent a first edge of the first frame; determine a second pixel block positioned in a second edge column adjacent a second edge of the first frame opposite the first edge; identify a spatial continuity between the first pixel block and the second pixel block; replace the first pixel block positioned in the first edge column adjacent the first edge of the first frame with a first cross-edge reference to the second pixel block positioned in the second edge column adjacent the second edge of the first frame opposite the first edge; receive a second frame, wherein the second frame is after the first frame according to a first temporal sequence of a video comprising the first frame and the second frame; determine a third pixel block positioned in a third edge column adjacent a first edge of the second frame, wherein the first edge of the second frame and the first edge of the first frame have equivalent positions on the two-dimensional grid; identify a first motion vector between the third pixel block and a fourth pixel block selected from the second edge column of the first frame; and replace the fourth pixel block with a second cross-edge reference to the third pixel block. - View Dependent Claims (4, 5, 6, 7, 8, 9)
-
10. A method comprising:
-
receiving a first frame comprising a plurality of pixel values arranged according to a two-dimensional grid; determining a first pixel block positioned in a first edge column adjacent a first edge of the first frame; determining a second pixel block positioned in a second edge column adjacent a second edge of the first frame opposite the first edge; identifying a spatial continuity between the first pixel block and the second pixel block; replacing the first pixel block positioned in the first edge column adjacent the first edge of the first frame with a first cross-edge reference to the second pixel block positioned in the second edge column adjacent the second edge of the first frame opposite the first edge; receiving a second frame, wherein the second frame is after the first frame according to a first temporal sequence of a video comprising the first frame and the second frame; determining a third pixel block positioned in a third edge column adjacent a first edge of the second frame, wherein the first edge of the second frame and the first edge of the first frame have equivalent positions on the two-dimensional grid; identifying a first motion vector between the third pixel block and a fourth pixel block selected from the second edge column of the first frame; and replacing the fourth pixel block with a second cross-edge reference to the third pixel block. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
Specification