US20180302643A1 - Video coding with degradation of residuals - Google Patents
Video coding with degradation of residuals Download PDFInfo
- Publication number
- US20180302643A1 US20180302643A1 US16/010,833 US201816010833A US2018302643A1 US 20180302643 A1 US20180302643 A1 US 20180302643A1 US 201816010833 A US201816010833 A US 201816010833A US 2018302643 A1 US2018302643 A1 US 2018302643A1
- Authority
- US
- United States
- Prior art keywords
- block
- encoded
- filter
- residual block
- encoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/59—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Definitions
- This disclosure relates to encoding and decoding visual data, such as video stream data, for transmission or storage and subsequent display.
- Digital video streams typically represent video using a sequence of frames or still images. Each frame can include a number of blocks, which in turn may contain information describing the value of color, brightness or other attributes for pixels.
- the amount of data in a typical video stream is large, and transmission and storage of video can use significant computing or communications resources.
- Various approaches have been proposed to reduce the amount of data in video streams, including compression and other encoding techniques.
- video data can be transmitted or stored at varying spatial resolutions in order to save transmission or storage bandwidth.
- Prediction methods exploit spatial and temporal similarities between blocks to achieve high compression ratios. These prediction methods include inter-prediction methods that exploit temporal redundancies in the data by utilizing information from other frames to generate a prediction, and intra-prediction methods that exploit spatial redundancies to generate a prediction using information only from the current frame.
- To encode a block in a video frame a prediction for a current block is created by identifying a best matching block from a reference frame and calculating a prediction residual by subtracting the reference block from the current block. The residual is then encoded and written to the bitstream. The decoder decodes the bitstream and gets the residual, adds it to the prediction to generate a reconstruction of the block. The reconstruction is used for further blocks in current or future frames as reference, which forms a closed-loop scheme.
- a video frame is first divided into basic encoding units called super blocks.
- the super blocks are further divided into rectangular or square partitions. For 64 ⁇ 64 super blocks, the partition sizes can range from 4 ⁇ 4 to 64 ⁇ 64.
- Prediction is then performed at the partition level. For each partition, the prediction residuals are generated, are transformed, and then the transform coefficients are quantized and coded before they are written to the bitstream.
- One aspect of the disclosed implementations is a method for encoding a block of a video frame.
- the method comprises generating a prediction residual block for the block.
- the method further comprises removing high-frequency information from the prediction residual block to produce a degraded residual block.
- the method further comprises encoding the degraded residual block to produce an encoded block.
- a header of the encoded block includes data indicative of a block-based post filter available for recovering at least some of the high frequency information.
- Another aspect of the disclosed implementations is a method for encoding a block of a video frame.
- the method comprises selecting a block-based post filter for recovering high frequency information removed from a prediction residual block.
- the method further comprises encoding data indicative of the block-based post filter to a header of an encoded block produced using the prediction residual block.
- Another aspect of the disclosed implementations is a method for decoding an encoded block of an encoded video frame.
- the method comprises applying a block-based post filter to a reconstructed block to recover high-frequency information removed from a prediction residual.
- the prediction residual is used to produce the encoded block and the reconstructed block is produced using the encoded block.
- FIG. 1 is a schematic of a video encoding and decoding system
- FIG. 2 is a block diagram of an exemplary computing device that can implement a transmitting station or a receiving station;
- FIG. 3 is a diagram of a typical video stream to be encoded and subsequently decoded
- FIG. 4 is a block diagram of a video compression system in accordance with an aspect of this disclosure.
- FIG. 5 is a block diagram of a video decompression system in accordance with another aspect of this disclosure.
- FIG. 6 is a block diagram showing encoding applied to an original block of a video signal according to a first example
- FIG. 7 is a block diagram showing decoding applied to an encoded block of a video bitstream according to the first example
- FIG. 8 is a flowchart showing an encoding process according to the first example
- FIG. 9 is a flowchart showing a decoding process according to the first example.
- FIG. 10 is a block diagram showing encoding applied to an original block of a video signal according to a second example
- FIG. 11 is a block diagram showing decoding applied to an encoded block of a video bitstream according to the second example
- FIG. 12 is a flowchart showing an encoding process according to the second example.
- FIG. 13 is a flowchart showing a decoding process according to the second example.
- This disclosure is directed to video compression and decompression techniques in which the residual blocks are degraded during encoding, and block-based post filtering is utilized during decoding to recover high frequency information that is lost as a result of the degradation.
- a linear filter or a non-linear filter can be applied during final reconstruction. The newly filtered block would then be used as the final reconstruction for future reference in the coding loop.
- the post filter is applied directly to the reconstruction. In other implementations, the post filter is not utilized. Thus, information can be included in the bitstream that indicates whether or not the filter is to be used. In some implementations, the encoder may choose to use or not use the post filter based on rate distortion cost. In addition, the encoder may encode information into the bitstream regarding the filter to be used. In some implementations, this information identifies a specific filter index from a family of post filters. In other implementations, this information includes parameters for a parameterized family of filters. In some implementations, this information includes the actual filter taps at an appropriate precision.
- FIG. 1 is a schematic of a video encoding and decoding system 100 in which the systems and methods described herein can be implemented.
- An exemplary transmitting station 112 can be, for example, a computer having an internal configuration of hardware such as that described in FIG. 2 .
- the processing of transmitting station 112 can be distributed among multiple devices.
- a network 128 can connect the transmitting station 112 and a receiving station 130 for encoding and decoding of a video stream.
- the video stream can be encoded in transmitting station 112 and the encoded video stream can be decoded in receiving station 130 .
- Network 128 can be, for example, the Internet.
- Network 128 can also be a local area network (LAN), wide area network (WAN), virtual private network (VPN), cellular telephone network or any other means of transferring the video stream from transmitting station 112 to, in this example, receiving station 130 .
- LAN local area network
- WAN wide area network
- VPN virtual private network
- Receiving station 130 in one example, can be a computer having an internal configuration of hardware such as that described in FIG. 2 .
- Receiving station 130 can be a computer having an internal configuration of hardware such as that described in FIG. 2 .
- the processing of receiving station 130 can be distributed among multiple devices.
- video encoding and decoding system 100 can omit network 128 .
- a video stream can be encoded and then stored for transmission at a later time to receiving station 130 or any other device having memory.
- the receiving station 130 receives (e.g., via network 128 , a computer bus, and/or some communication pathway) the encoded video stream and stores the video stream for later decoding.
- a real-time transport protocol RTP
- a transport protocol other than RTP may be used, e.g., an HTTP-based video streaming protocol.
- the transmitting station 112 and the receiving station 130 are examples of devices that can be included in the video encoding and decoding system 100 . Additional devices can be included, such as a server that relays transmissions from the transmitting station 112 to the receiving station 130 .
- FIG. 2 is a block diagram of an exemplary computing device 200 that can implement a transmitting station or a receiving station.
- computing device 200 can implement one or both of transmitting station 112 and receiving station 130 of FIG. 1 .
- Computing device 200 can be in the form of a computing system including multiple computing devices, or in the form of a single computing device, for example, a mobile phone, a tablet computer, a laptop computer, a notebook computer, a desktop computer, and the like.
- a CPU 224 in computing device 200 can be a conventional central processing unit.
- CPU 224 can be any other type of device, or multiple devices, capable of manipulating or processing information now-existing or hereafter developed.
- the disclosed implementations can be practiced with a single processor as shown, e.g., CPU 224 , advantages in speed and efficiency can be achieved using more than one processor.
- a memory 226 in computing device 200 can be a read only memory (ROM) device or a random access memory (RAM) device in an implementation. Any other suitable type of storage device can be used as the memory 226 .
- Memory 226 can include code and data 227 that is accessed by CPU 224 using a bus 230 .
- Memory 226 can further include an operating system 232 and application programs 234 , the application programs 234 including at least one program that permits CPU 224 to perform the methods described here. As shown, for example, application programs 234 can include applications 1 through N, which further include an application that performs one or more of the methods described herein.
- Computing device 200 can also include a secondary storage 236 that can be, for example, a memory card used with a mobile computing device 200 . Because the video communication sessions may contain a significant amount of information, they can be stored in whole or in part in secondary storage 236 and loaded into memory 226 as needed for processing.
- Computing device 200 can also include one or more output devices, such as a display 228 .
- Display 228 may be, in one example, a touch sensitive display that combines a display with a touch sensitive element that is operable to sense touch inputs.
- Display 228 can be coupled to CPU 224 via bus 230 .
- Other output devices that permit a user to program or otherwise use computing device 200 can be provided in addition to or as an alternative to display 228 .
- the output device is or includes a display, the display can be implemented in various ways, including by a liquid crystal display (LCD), a cathode-ray tube (CRT) or light emitting diode (LED) display, such as an OLED display.
- LCD liquid crystal display
- CRT cathode-ray tube
- LED light emitting diode
- Computing device 200 can also include or be in communication with an image-sensing device 238 , for example a camera, or any other image-sensing device 238 now existing or hereafter developed that can sense an image such as the image of a user operating computing device 200 .
- Image-sensing device 238 can be positioned such that it is directed toward the user operating computing device 200 .
- the position and optical axis of image-sensing device 238 can be configured such that the field of vision includes an area that is directly adjacent to display 228 and from which display 228 is visible.
- Computing device 200 can also include or be in communication with a sound-sensing device 240 , for example a microphone, or any other sound-sensing device now existing or hereafter developed that can sense sounds near computing device 200 .
- Sound-sensing device 240 can be positioned such that it is directed toward the user operating computing device 200 and can be configured to receive sounds, for example, speech or other utterances, made by the user while the user operates computing device 200 .
- FIG. 2 depicts CPU 224 and memory 226 of computing device 200 as being integrated into a single unit, other configurations can be utilized.
- the operations of CPU 224 can be distributed across multiple machines (each machine having one or more of processors) that can be coupled directly or across a local area or other network.
- Memory 226 can be distributed across multiple machines such as a network-based memory or memory in multiple machines performing the operations of computing device 200 .
- bus 230 of computing device 200 can be composed of multiple buses.
- secondary storage 236 can be directly coupled to the other components of computing device 200 or can be accessed via a network and can comprise a single integrated unit such as a memory card or multiple units such as multiple memory cards.
- Computing device 200 can thus be implemented in a wide variety of configurations.
- FIG. 3 is a diagram of an example of a video 350 to be encoded and subsequently decoded.
- Video 350 includes a video sequence 352 .
- video sequence 352 includes a number of adjacent frames 354 . While three frames are depicted as adjacent frames 354 , video sequence 352 can include any number of adjacent frames 354 .
- Adjacent frames 354 can then be further subdivided into individual frames, e.g., a single frame 356 .
- single frame 356 can be divided into a series of blocks 358 , which can contain data corresponding to, for example, 16 ⁇ 16 pixels in frame 356 . The blocks can also be arranged in planes of data.
- a corresponding block in each plane can respectively contain luminance and chrominance data for the pixels of the block.
- Blocks 58 can also be of any other suitable size such as 16 ⁇ 8 pixel groups or 8 ⁇ 16 pixel groups and can be further subdivided into smaller blocks depending on the application. Unless otherwise noted, the terms block and macroblock are used interchangeably herein.
- FIG. 4 is a block diagram of an encoder 470 in accordance with an aspect of this disclosure.
- Encoder 470 can be implemented, as described above, in transmitting station 112 such as by providing a computer software program stored in memory, for example, memory 226 .
- the computer software program can include machine instructions that, when executed by a processor such as CPU 224 , cause transmitting station 112 to encode video data in the manner described in FIG. 4 .
- Encoder 470 can also be implemented as specialized hardware included, for example, in transmitting station 112 .
- Encoder 470 has the following stages to perform the various functions in a forward path (shown by the solid connection lines) to produce an encoded or compressed bitstream 488 using input video 350 : an intra/inter prediction stage 472 , a transform stage 474 , a quantization stage 476 , and an entropy encoding stage 478 .
- Encoder 470 may also include a reconstruction path (shown by the dotted connection lines) to reconstruct a frame for encoding of future blocks.
- encoder 470 has the following stages to perform the various functions in a reconstruction path: a dequantization stage 480 , an inverse transform stage 482 , a reconstruction stage 484 , and a loop filtering stage 486 .
- Other structural variations of encoder 470 can be used to encode video 350 .
- each frame 356 within the video 350 can be processed in units of blocks 358 .
- each block can be encoded using intra-frame prediction (prediction using blocks within a single frame) or inter-frame prediction (prediction using blocks from a different frame).
- a prediction block can be formed.
- intra-prediction a prediction block can be formed from samples in the current frame that have been previously encoded and reconstructed.
- inter-prediction a prediction block can be formed from samples in one or more previously constructed reference frames.
- the prediction block can be subtracted from the current block at intra/inter prediction stage 472 to produce a residual block (also called a residual).
- Transform stage 474 transforms the residual into transform coefficients in, for example, the frequency domain.
- block-based transforms include the Karhunen-Loéve Transform (KLT), the Discrete Cosine Transform (DCT), and the Singular Value Decomposition Transform (SVD).
- KLT Karhunen-Loéve Transform
- DCT Discrete Cosine Transform
- SVD Singular Value Decomposition Transform
- the DCT transforms the block into the frequency domain.
- the transform coefficient values are based on spatial frequency, with the lowest frequency (DC) coefficient at the top-left of the matrix and the highest frequency coefficient at the bottom-right of the matrix.
- Quantization stage 476 converts the transform coefficients into discrete quantum values, which are referred to as quantized transform coefficients, using a quantizer value or a quantization level.
- the quantized transform coefficients are then entropy encoded by entropy encoding stage 478 .
- the entropy-encoded coefficients, together with other information used to decode the block, which may include for example the type of prediction used, motion vectors and quantizer value, are then output to compressed bitstream 488 .
- Compressed bitstream 488 can be formatted using various techniques, such as variable length coding (VLC) or arithmetic coding.
- VLC variable length coding
- Compressed bitstream 488 can also be referred to as an encoded video stream and the terms are used interchangeably herein.
- the reconstruction path in FIG. 4 can be used to ensure that both encoder 470 and a decoder 500 (described below) use the same reference frames to decode compressed bitstream 488 .
- the reconstruction path performs functions that are similar to functions that take place during the decoding process that are discussed in more detail below, including dequantizing the quantized transform coefficients at dequantization stage 480 and inverse transforming the dequantized transform coefficients at inverse transform stage 482 to produce a derivative residual block (also called a derivative residual).
- the prediction block that was predicted at the intra/inter prediction stage 472 can be added to the derivative residual to create a reconstructed block.
- Loop filtering stage 486 can be applied to the reconstructed block to reduce distortion such as blocking artifacts.
- encoder 470 can be used to encode compressed bitstream 488 .
- a non-transform based encoder 470 can quantize the residual signal directly without transform stage 474 .
- an encoder 470 can have quantization stage 476 and dequantization stage 480 combined into a single stage.
- FIG. 5 is a block diagram of a decoder 500 in accordance with an implementation.
- Decoder 500 can be implemented in receiving station 130 , for example, by providing a computer software program stored in memory 226 .
- the computer software program can include machine instructions that, when executed by a processor such as CPU 224 , cause receiving station 130 to decode video data in the manner described in FIG. 5 .
- Decoder 500 can also be implemented in hardware included, for example, in transmitting station 112 or receiving station 130 .
- Decoder 500 similar to the reconstruction path of encoder 470 discussed above, includes in one example the following stages to perform various functions to produce an output video stream 516 from compressed bitstream 488 : an entropy decoding stage 502 , a dequantization stage 504 , an inverse transform stage 506 , an intra/inter prediction stage 508 , a reconstruction stage 510 , a filtering stage 512 , which can include loop filtering and/or deblocking and a frame buffering stage 514 .
- Other structural variations of decoder 500 can be used to decode compressed bitstream 488 .
- the data elements within compressed bitstream 488 can be decoded by entropy decoding stage 502 (using, for example, arithmetic coding) to produce a set of quantized transform coefficients.
- Dequantization stage 504 dequantizes the quantized transform coefficients
- inverse transform stage 506 inverse transforms the dequantized transform coefficients to produce a derivative residual that can be identical to that created by inverse transform stage 482 in encoder 470 .
- decoder 500 can use intra/inter prediction stage 508 to create the same prediction block as was created in encoder 470 , e.g., at intra/inter prediction stage 472 .
- the prediction block can be added to the derivative residual to create a reconstructed block.
- Filtering stage 512 can be applied to the reconstructed block to reduce blocking artifacts.
- Information can then be held in a frame buffer at frame buffering stage 514 for subsequent use in decoding or output.
- a post-processing stage can be applied to the reconstructed block to further refine the image.
- the result of the process performed by the decoder 500 is output as output video stream 516 .
- Output video stream 516 can also be referred to as a decoded video stream and the terms are used interchangeably herein.
- decoder 500 can be used to decode compressed bitstream 488 .
- decoder 500 can produce output video stream 516 without post-processing.
- FIG. 6 is a block diagram showing video encoding 600 that incorporates degradation of residual blocks and block-based post filtering according to a first example, applied to an original block 610 from a video signal having a plurality of frames, each frame having a plurality of blocks, and each block having a plurality of pixels.
- Video encoding 600 can be implemented, for example, in the encoder 470 , and the description of the encoder 470 is applicable except as described herein.
- a prediction block 620 is identified for use in generating a residual block 630 .
- the prediction block 620 can be a block from a different frame than the current frame if an inter-prediction mode is used, or can be a block from the current frame if an intra-prediction mode is used.
- the prediction block 620 is selected in a conventional manner according to the prediction mode used, such that the prediction block 620 has a high degree of correspondence to the original block 610 .
- the prediction block 620 is subtracted from the original block 610 , and the remaining information is utilized as the residual block 630 .
- the residual block 630 is intentionally degraded to generate a degraded residual block 640 .
- Degrading the residual block 630 can be performed in any manner that reduces the quality and the bit cost required to transmit the degraded residual block 640 .
- One example of a degradation that can be applied to the residual block 630 is modification of the step size used for quantization of the residual block 630 .
- quantization can be performed during encoding of the residual in the manner described with regard to the quantization stage 476 of the encoder 470 , but using a larger quantization step size than otherwise would be used. This results in a decrease in the bit cost to encode the residual.
- degrading the residual can include selecting a larger quantization step size for the current block, as compared to the normal quantization step size.
- the larger quantization step size can be selected by setting the quantization step size can be larger than that used for other coding modes that are applied to the current frame.
- the degraded residual block 640 is encoded to define an encoded residual block 650 .
- Encoding can be performed as described with respect to the video encoder 470 , including transform stage 474 , quantization stage 476 , and entropy encoding in stage 478 .
- the encoded residual block 650 can be stored or transmitted.
- filter information is stored or transmitted along with the encoded residual block 160 .
- the filter information can indicate whether a filter is to be applied during decoding, can include information such as an identifier that corresponds to a predefined filter to be used for filtering, and/or can include a plurality of filter parameters that can be utilized during decoding.
- the encoded residual block 650 is decoded to generate a decoded residual block 660 , such as in the manner described with respect to empty decoding stage 502 , de-quantization stage 504 , and inverse transform stage 506 of the decoder 500 .
- the decoded residual block 660 is then added to the prediction block 620 that was previously utilized to generate the residual block 630 from the original block 610 .
- the result of adding the decoded residual block 660 to the prediction block 620 is a reconstructed block 670 .
- a block-based post-filter is applied to the reconstructed block 670 .
- the filter is a block-based loop filter.
- the block-based loop filter that is utilized for filtering the reconstructed block 670 can be designed in various ways.
- the block-based loop filter is a Weiner filter, which minimizes the mean square area between the reconstructed block 670 and the original block 610 .
- the filter can be designed as a two-dimensional Weiner filter using linear estimation theory.
- the two-dimensional Weiner filter is then decomposed into two one-dimensional filters.
- the two-dimensional filter can be decomposed into two one-dimensional filters using decomposition techniques such as singular value decomposition and iterative optimization.
- the block-based loop filters can be generated in advance of encoding or can be generated during the encoding process.
- Predefined filters can be defined in advance of encoding by training a plurality of filters using a variety of sample video input filters. The trained filters are then clustered, and the filter at the center of each cluster can be utilized to form a filter family. The filter family is then made available at both the end coder and the decoder. During encoding, a particular family can be selected. As one example, the filter can be selected by comparing the rate distortion performance for a plurality of the filters from the filter family as applied to at least a portion of the video signals being encoded. The selected filter can then be applied to other portions of the video signal. Selection of the filter can be made at any level of granularity.
- the same filter could be selected for a series of frames, a single frame, a macroblock, or the filter could be selected on a block-by-block basis.
- the filter to be used for filtering the reconstructed block 670 is designed during encoding, with the result of filtered selection being a plurality of filter parameters that can be transmitted to the decoded for use in decoding the video bit stream.
- information identifying the filter selected for filtering the reconstructed block 670 can be stored in association with the video bit stream.
- information identifying the filter to be utilized can be encoded within the block header for each block.
- information identifying the predefined filter is transmitted or stored with the video bit stream.
- the parameters describing the filter can be transmitted or stored with the video bit stream.
- the result of filtering the reconstructed block 670 utilizing the block-based post filter is the filtered reconstructed block 680 .
- the filtered reconstructed block can be stored at the encoder for use in subsequent prediction operations.
- FIG. 7 is a block diagram showing video decoding 700 that incorporates recovery of information lost as a result of intentional degradation of residual blocks by using block-based post filtering.
- Video decoding 700 is applied to an encoded residual block 710 from a video bit stream having a plurality of frames, each frame having a plurality of blocks, and each block having a plurality of pixels.
- the encoded residual block 710 can be formed in the manner described with respect to video encoding 600 .
- the encoded residual block 710 is decoded into a decoded residual block 720 .
- Decoding of the encoded residual block 720 can be performed in the manner described with respect to the entropy decoding stage 502 , the dequantization stage 504 , and the inverse transform stage 506 of the decoder 500 .
- Decoding the encoded residual block 710 can include decoding filter information from the video bitstream regarding the block-based post filter for the decoded residual block 720 .
- the decoded residual block 720 is combined with a prediction block 730 by adding the decoded residual block 720 to the prediction block 730 .
- the result is a reconstructed block 740 .
- the reconstructed block 740 is of reduced quality relative to the original block 610 owing to degradation of a residual block 630 when generating the degraded residual block 640 during video encoding 600 .
- a block-based filter is applied to the reconstructed block 740 , which results in a filtered reconstructed block 750 .
- the filter applied to generate the filtered reconstructed block 750 can be identified from information in the video bit stream, such as filter information regarding the block-based post filter to be utilized in filtering the reconstructed block 740 .
- the filter information can be received from the video bit stream, such as by decoding the filter information from the header of the encoded residual block 710 .
- the filter information can include, for example, an identifier that corresponds to a predefined filter or a plurality of filter parameters that define the filter.
- the filtered reconstructed block 750 can be output as a video signal.
- the filtered reconstructed block 750 could be output for display.
- the filtered reconstructed block is also stored for use in decoding of other blocks by storing the filtered reconstructed block 750 as the prediction block 730 .
- FIG. 8 shows an example of an encoding process 800 .
- the encoding process 800 can be implemented, for example, as a software program that is executed by computing devices such as the transmitting station 112 or the receiving station 130 .
- the software program can include machine-readable instructions that are stored in a memory such as memory 226 that, when executed by a processor such as CPU 224 , cause the computing device to perform the encoding process 800 .
- the encoding process 800 can also be implemented using hardware. As explained above, some computing devices may have multiple memories and multiple processors, and the steps of the encoding process 800 may in such cases be distributed using different processors and memories.
- Use of the terms “processor” and “memory” in the singular encompasses computing devices that have only one processor or one memory as well as devices having multiple processors or memories that may each be used in the performance of some but not necessarily all of the recited steps.
- Operation 810 includes generating the residual block 630 from the original block 610 and the prediction block 620 .
- This can be performed in a conventional manner as previously described.
- This operation can further include obtaining the original block 610 .
- the original block 610 can be obtained in any manner such as by receiving it in a video signal or accessing it from a storage device.
- This operation can also include identifying the prediction block 620 that will be used with the original block 610 to define the residual block 630 . This can be performed using any of a number of well-known algorithms that search for matching reference blocks in the current frame or in other frames of the video signal.
- the prediction block 620 can be identified by comparing the contents of the original block 610 with the contents of a plurality of blocks from the video signal and choosing the best matching block as the prediction block 620 .
- Operation 820 includes degrading the residual block 630 , which can be performed in the manner described with respect to the degraded residual block 640 . Subsequent to degrading the degraded residual block 640 , it is then encoded at operation 830 .
- Operation 840 includes selecting a block-based post filter that will be utilized to recover some of the high frequency information that was removed from the residual block 630 in order to reduce the bit cost for encoding it to define the degraded residual block 640 .
- This information can be encoded with the encoded residual block 650 , such as by placing it in the header of the encoded residual block 650 .
- the remainder of the process 800 is directed to decoding and reconstruction of the encoded residual block such that it can be used as a prediction block in further encoding operations.
- the encoded residual block 650 is decoded.
- the result of operation 850 is the decoded residual block 660 .
- the decoded residual block 660 is combined with the prediction block 620 that was previously utilized at operation 810 to generate the residual block 630 .
- the result of this operation is the reconstructed block 670 .
- the block-based post filter is applied to the reconstructed block 670 to recover some of the high frequency information that was previously discarded in the process of generating the degraded residual block 640 at operation 820 .
- the filtered reconstructed block 680 is stored at operation 880 for subsequent use as the prediction block 620 in a subsequent encoding operation for a different block.
- FIG. 9 shows an example of a decoding process 900 .
- the decoding process 900 can be implemented, for example, as a software program that is executed by computing devices such as the transmitting station 112 or the receiving station 130 .
- the software program can include machine-readable instructions that are stored in a memory such as memory 226 that, when executed by a processor such as CPU 224 , cause the computing device to perform the decoding process 900 .
- the decoding process 900 can also be implemented using hardware. As explained above, some computing devices may have multiple memories and multiple processors, and the steps of the decoding process 900 may in such cases be distributed using different processors and memories.
- Use of the terms “processor” and “memory” in the singular encompasses computing devices that have only one processor or one memory as well as devices having multiple processors or memories that may each be used in the performance of some but not necessarily all of the recited steps.
- Operation 910 includes decoding the encoded residual block 710 into the decoded residual block 720 as previously described.
- filter information is decoded from the video bit stream, such as from the header of the encoded residual block 710 .
- the reconstructed block 740 is generated by adding the decoded residual block 720 to the prediction block 730 .
- a block-based post filter is applied to the reconstructed block 740 to recover information lost during degradation.
- the filtered reconstructed block 750 can then be output for display and can also be stored at operation 950 , as the prediction block 730 for use in a subsequent decoding operation.
- FIG. 10 is a block diagram showing video encoding 1000 that incorporates downscaling of residual blocks and block-based post filtering according to a first example, applied to an original block 1010 from a video signal having a plurality of frames, each frame having a plurality of blocks, and each block having a plurality of pixels.
- Video encoding 1000 can be implemented, for example, in the encoder 470 , and the description of the encoder 470 is applicable except as described herein.
- the original block 1010 has a first resolution, which can be, but is not necessarily, a maximum resolution for the video signal.
- a prediction block 1020 is identified for use in generating a residual block 1030 .
- the resolutions of the prediction block 1020 can be the same as the resolution of the original block 1010 .
- the prediction block 1020 can be a block from a different frame than the current frame if an inter-prediction mode is used, or can be a block from the current frame if an intra-prediction mode is used.
- the prediction block 1020 is selected in a conventional manner according to the prediction mode used, such that the prediction block 1020 has a high degree of correspondence to the original block 1010 .
- the prediction block 1020 is subtracted from the original block 1010 , and the remaining information is utilized as the residual block 1030 .
- the residual block 1030 is downscaled to generate a downscaled residual block 1040 .
- Downscaling the residual block 1030 can be performed in any manner that reduces the resolution of the residual block 1030 .
- one common method of downscaling takes the average of multiple adjacent pixel values and sets a corresponding value in the downscaled image to the average value.
- Suitable downscaling operations may reduce the resolution of the encoded residual block 1030 to a second resolution that is, as examples, half or one-quarter the first resolution at which the residual block 1030 was calculated. Any other suitable magnitude of downscaling can be utilized.
- the downscaling is performed in the context of a coding mode that applies a predetermined magnitude of downscaling to the residual block 1030 in order to generate the downscaled residual block 1040 .
- the magnitude of the downscaling is selected based on the content of the video signal, the plurality of frames, the current frame, or the block. This selection can be made, for example, by comparing the rate-distortion performance of multiple alternatives.
- the downscaled residual block 1040 is encoded to define an encoded residual block 1050 .
- Encoding can be performed as described with respect to the encoder 470 , including transform stage 474 , quantization stage 476 , and entropy encoding in stage 478 .
- the encoded residual block 1050 can be stored or transmitted.
- filter information is stored or transmitted along with the encoded residual block 1050 .
- the filter information can indicate whether a filter is to be applied to the during decoding, can include information such as an identifier that corresponds to a predefined filter to be used for filtering during decoding, and/or can include a plurality of filter parameters that can be utilized during decoding.
- the encoded residual block 1050 is decoded to generate a decoded residual block 1060 , such as in the manner described with respect to entropy decoding stage 502 , de-quantization stage 504 , and inverse transform stage 506 of the decoder 500 .
- the decoded residual block 1060 is at the second resolution, which is the same resolution as the downscaled residual block 1050 prior to encoding.
- the decoded residual block 1060 is then upscaled to define an upscaled decoded residual block 1065 . Upscaling can be performed by any one of numerous well known methods.
- the upscaled decoded residual block 1065 is then added to the prediction block 1020 that was previously utilized to generate the residual block 1030 from the original block 1010 .
- the result of adding the upscaled decoded residual block 1065 to the prediction block 1020 is a reconstructed block 1070 .
- a block-based post-filter is applied to the reconstructed block 1070 .
- the filter is a block-based loop filter.
- the block-based loop filter that is utilized for filtering the reconstructed block 1070 can be designed in various ways.
- the block-based loop filter is a Weiner filter, which minimizes the mean square area between the reconstructed block 1070 and the original block 1010 .
- the filter can be designed as a two-dimensional Weiner filter using linear estimation theory.
- the two-dimensional Weiner filter is then decomposed into two one-dimensional filters.
- the two-dimensional filter can be decomposed into two one-dimensional filters using decomposition techniques such as singular value decomposition and iterative optimization.
- the block-based loop filters can be generated in advance of encoding or can be generated during the encoding process.
- Predefined filters can be defined in advance of encoding by training a plurality of filters using a variety of sample video input filters. The trained filters are then clustered, and the filter at the center of each cluster can be utilized to form a filter family. The filter family is then made available at both the end coder and the decoder. During encoding, a particular family can be selected. As one example, the filter can be selected by comparing the rate distortion performance for a plurality of the filters from the filter family as applied to at least a portion of the video signals being encoded. The selected filter can then be applied to other portions of the video signal. Selection of the filter can be made at any level of granularity.
- the same filter could be selected for a series of frames, a single frame, a macroblock, or the filter could be selected on a block-by-block basis.
- the filter to be used for filtering the reconstructed block 1070 is designed during encoding, with the result of filtered selection being a plurality of filter parameters that can be transmitted to the decoded for use in decoding the video bit stream.
- information identifying the filter selected for filtering the reconstructed block 1070 can be stored in association with the video bit stream.
- information identifying the filter to be utilized can be encoded within the block header for each block.
- information identifying the predefined filter is transmitted or stored with the video bit stream.
- the parameters describing the filter can be transmitted or stored with the video bit stream.
- the result of filtering the reconstructed block 1070 utilizing the block-based post filter is the filtered reconstructed block 1080 .
- the filtered reconstructed block can be stored at the encoder for use in subsequent prediction operations.
- FIG. 11 is a block diagram showing video decoding 1100 that incorporates upscaling of residual blocks and block-based post filtering.
- Video decoding 1100 is applied to an encoded residual block 1110 from a video bit stream having a plurality of frames, each frame having a plurality of blocks, and each block having a plurality of pixels.
- the encoded residual block 1110 can be generated in the manner described with respect to video encoding 1000 .
- the encoded residual block 1110 is decoded into a decoded residual block 1120 .
- Decoding of the encoded residual block 1120 can be performed in the manner described with respect to the entropy decoding stage 502 , the dequantization stage 504 , and the inverse transform stage 506 of the decoder 500 .
- the encoded residual block 1110 is upscaled in order to generate an upscaled decoded residual block 1125 .
- the decoded residual block 1110 has a first resolution and the upscaled decoded residual block 1125 has a second resolution that is greater than the first resolution. As examples, the second resolution can be double or quadruple the first resolution.
- the upscaled decoded residual block 1125 is combined with a prediction block 1130 by adding the upscaled decoded residual block 1125 to the prediction block 1130 .
- the result is a reconstructed block 1140 .
- the reconstructed block 1140 is of reduced quality relative to the original block 1010 owing to loss of information in from the residual block 1030 as a result of downscaling during video encoding 1000 and upscaling the residual generating during video decoding 1100 .
- a block-based filter is applied to the reconstructed block 1140 , which results in a filtered reconstructed block 1150 .
- the filter applied to generate the filtered reconstructed block 1150 can be identified from information in the video bit stream, such as filter information regarding the block-based post filter to be utilized in filtering the reconstructed block 1140 .
- the filter information can be received from the video bit stream, such as by decoding the filter information from the header of the encoded residual block 1110 .
- the filter information can include, for example, an identifier that corresponds to a predefined filter or a plurality of filter parameters that define the filter.
- the filtered reconstructed block 1150 can be output as a video signal.
- the filtered reconstructed block 1150 could be output for display.
- the filtered reconstructed block is also stored for use in decoding of other blocks by storing the filtered reconstructed block 1150 as the prediction block 1130 .
- FIG. 12 shows an example of an encoding process 1200 .
- the encoding process 1200 can be implemented, for example, as a software program that is executed by computing devices such as the transmitting station 112 or the receiving station 130 .
- the software program can include machine-readable instructions that are stored in a memory such as memory 226 that, when executed by a processor such as CPU 224 , cause the computing device to perform the encoding process 1200 .
- the encoding process 1200 can also be implemented using hardware. As explained above, some computing devices may have multiple memories and multiple processors, and the steps of the encoding process 1200 may in such cases be distributed using different processors and memories.
- Use of the terms “processor” and “memory” in the singular encompasses computing devices that have only one processor or one memory as well as devices having multiple processors or memories that may each be used in the performance of some but not necessarily all of the recited steps.
- Operation 1210 includes generating the residual block 1030 from the original block 1010 and the prediction block 1020 . This can be performed in a conventional manner as previously described. This operation can further include obtaining the original block 1010 .
- the original block 1010 can be obtained in any manner such as by receiving it in a video signal or accessing it from a storage device.
- This operation can also include identifying the prediction block 1020 that will be used with the original block 1010 to define the residual block 1030 . This can be performed using any of a number of well-known algorithms that search for matching reference blocks in the current frame or in other frames of the video signal.
- the prediction block 1020 can be identified by comparing the contents of the original block 1010 with the contents of a plurality of blocks from the video signal and choosing the best matching block as the prediction block 1020 .
- Operation 1220 includes downscaling the residual block 1030 , which can be performed in the manner described with respect to the downscaled residual block 1040 .
- the downscaled residual block 1040 is then encoded at operation 1230 .
- Operation 1240 includes selecting a block-based post filter that will be utilized to recover some of the high frequency information that was removed from the residual block 1030 in order to reduce the bit cost for encoding it to define the downscaled residual block 1040 .
- This information can be encoded with the encoded residual block 1050 , such as by placing it in the header of the encoded residual block 1050 .
- the remainder of the process 1200 is directed to decoding and reconstruction of the encoded residual block such that it can be used as a prediction block in further encoding operations.
- the encoded residual block 1050 is decoded.
- the result of operation 1250 is the decoded residual block 1060 .
- the decoded residual block 1060 is upscaled, which results in generation of the upscaled decoded residual block 1065
- the upscaled decoded residual block 1065 is combined with the prediction block 1020 that was previously utilized at operation 1210 to generate the residual block 1030 .
- the result of this operation is the reconstructed block 1070 .
- the block-based post filter is applied to the reconstructed block 1070 to recover some of the high frequency information that was previously discarded in the process of generating the downscaled residual block 1040 at operation 1220 .
- the filtered reconstructed block 1080 is stored at operation 1280 for subsequent use as the prediction block 1020 in a subsequent encoding operation for a different block.
- FIG. 13 shows an example of a decoding process 1300 .
- the decoding process 1300 can be implemented, for example, as a software program that is executed by computing devices such as the transmitting station 112 or the receiving station 130 .
- the software program can include machine-readable instructions that are stored in a memory such as memory 226 that, when executed by a processor such as CPU 224 , cause the computing device to perform the decoding process 1300 .
- the decoding process 1300 can also be implemented using hardware. As explained above, some computing devices may have multiple memories and multiple processors, and the steps of the decoding process 1300 may in such cases be distributed using different processors and memories.
- Use of the terms “processor” and “memory” in the singular encompasses computing devices that have only one processor or one memory as well as devices having multiple processors or memories that may each be used in the performance of some but not necessarily all of the recited steps.
- Operation 1310 includes decoding the encoded residual block 1110 into the decoded residual block 1120 as previously described.
- filter information is decoded from the video bit stream, such as from the header of the encoded residual block 1110 .
- the decoded residual block in upscaled, which results in the upscaled decoded residual block 1125 .
- the reconstructed block 1140 is generated by adding the upscaled decoded residual block 1125 to the prediction block 1130 .
- a block-based post filter is applied to the reconstructed block 1140 to recover information lost as a result of downscaling and subsequent upscaling.
- the filtered reconstructed block 1150 can then be output for display and can also be stored at operation 1350 , as the prediction block 1130 for use in a subsequent decoding operation.
- encoding and decoding illustrate some exemplary encoding and decoding techniques. However, it is to be understood that encoding and decoding, as those terms are used in the claims, could mean compression, decompression, transformation, or any other processing or change of data.
- example or “exemplary” are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example” or “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the words “example” or “exemplary” is intended to present concepts in a concrete fashion.
- the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X includes A or B” is intended to mean any of the natural inclusive permutations.
- Implementations of transmitting station 112 and/or receiving station 130 can be realized in hardware, software, or any combination thereof.
- the hardware can include, for example, computers, intellectual property (IP) cores, application-specific integrated circuits (ASICs), programmable logic arrays, optical processors, programmable logic controllers, microcode, microcontrollers, servers, microprocessors, digital signal processors or any other suitable circuit.
- IP intellectual property
- ASICs application-specific integrated circuits
- programmable logic arrays optical processors
- programmable logic controllers programmable logic controllers
- microcode microcontrollers
- servers microprocessors, digital signal processors or any other suitable circuit.
- signal processors should be understood as encompassing any of the foregoing hardware, either singly or in combination.
- signals and “data” are used interchangeably. Further, portions of transmitting station 112 and receiving station 130 do not necessarily have to be implemented in the same manner.
- transmitting station 112 or receiving station 130 can be implemented using a general purpose computer or general purpose processor with a computer program that, when executed, carries out any of the respective methods, algorithms and/or instructions described herein.
- a special purpose computer/processor can be utilized which can contain other hardware for carrying out any of the methods, algorithms, or instructions described herein.
- Transmitting station 112 and receiving station 130 can, for example, be implemented on computing devices of any type.
- the transmitting station 112 can be a personal computer that includes a video capture device for obtain raw video to be encoded and the receiving station 130 can be a personal computer that includes a video display device for displaying decoded video.
- transmitting station 112 can be implemented on a server and receiving station 130 can be implemented on a device separate from the server, such as a hand-held communications device.
- transmitting station 112 can encode content using an encoder 470 into an encoded video signal and transmit the encoded video signal to the communications device.
- the communications device can then decode the encoded video signal using a decoder 500 .
- the communications device can decode content stored locally on the communications device, for example, content that was not transmitted by transmitting station 112 .
- Other suitable transmitting station 112 and receiving station 130 implementation schemes are available.
- receiving station 130 can be a generally stationary personal computer rather than a portable communications device.
- a device that includes the encoder 470 may also include the decoder 500 .
- implementations of the present invention can take the form of a computer program product accessible from, for example, a tangible computer-usable or computer-readable medium.
- a computer-usable or computer-readable medium can be any device that can, for example, tangibly contain, store, communicate, or transport the program for use by or in connection with any processor.
- the medium can be, for example, an electronic, magnetic, optical, electromagnetic, or a semiconductor device. Other suitable mediums are also available.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
- This disclosure is a continuation of U.S. patent application Ser. No. 14/969,675, filed Dec. 15, 2015, the disclosure of which is incorporated by reference herein in its entirety.
- This disclosure relates to encoding and decoding visual data, such as video stream data, for transmission or storage and subsequent display.
- Digital video streams typically represent video using a sequence of frames or still images. Each frame can include a number of blocks, which in turn may contain information describing the value of color, brightness or other attributes for pixels. The amount of data in a typical video stream is large, and transmission and storage of video can use significant computing or communications resources. Various approaches have been proposed to reduce the amount of data in video streams, including compression and other encoding techniques. In addition, video data can be transmitted or stored at varying spatial resolutions in order to save transmission or storage bandwidth.
- Modern video codecs use block-based coding. Each frame is divided into different sizes of blocks. Prediction methods exploit spatial and temporal similarities between blocks to achieve high compression ratios. These prediction methods include inter-prediction methods that exploit temporal redundancies in the data by utilizing information from other frames to generate a prediction, and intra-prediction methods that exploit spatial redundancies to generate a prediction using information only from the current frame. To encode a block in a video frame, a prediction for a current block is created by identifying a best matching block from a reference frame and calculating a prediction residual by subtracting the reference block from the current block. The residual is then encoded and written to the bitstream. The decoder decodes the bitstream and gets the residual, adds it to the prediction to generate a reconstruction of the block. The reconstruction is used for further blocks in current or future frames as reference, which forms a closed-loop scheme.
- For example, in certain video compression schemes, a video frame is first divided into basic encoding units called super blocks. The super blocks are further divided into rectangular or square partitions. For 64×64 super blocks, the partition sizes can range from 4×4 to 64×64. Prediction is then performed at the partition level. For each partition, the prediction residuals are generated, are transformed, and then the transform coefficients are quantized and coded before they are written to the bitstream.
- One aspect of the disclosed implementations is a method for encoding a block of a video frame. The method comprises generating a prediction residual block for the block. The method further comprises removing high-frequency information from the prediction residual block to produce a degraded residual block. The method further comprises encoding the degraded residual block to produce an encoded block. A header of the encoded block includes data indicative of a block-based post filter available for recovering at least some of the high frequency information.
- Another aspect of the disclosed implementations is a method for encoding a block of a video frame. The method comprises selecting a block-based post filter for recovering high frequency information removed from a prediction residual block. The method further comprises encoding data indicative of the block-based post filter to a header of an encoded block produced using the prediction residual block.
- Another aspect of the disclosed implementations is a method for decoding an encoded block of an encoded video frame. The method comprises applying a block-based post filter to a reconstructed block to recover high-frequency information removed from a prediction residual. The prediction residual is used to produce the encoded block and the reconstructed block is produced using the encoded block.
- The description herein makes reference to the accompanying drawings wherein like reference numerals refer to like parts throughout the several views, and wherein:
-
FIG. 1 is a schematic of a video encoding and decoding system; -
FIG. 2 is a block diagram of an exemplary computing device that can implement a transmitting station or a receiving station; -
FIG. 3 is a diagram of a typical video stream to be encoded and subsequently decoded; -
FIG. 4 is a block diagram of a video compression system in accordance with an aspect of this disclosure; -
FIG. 5 is a block diagram of a video decompression system in accordance with another aspect of this disclosure; -
FIG. 6 is a block diagram showing encoding applied to an original block of a video signal according to a first example; -
FIG. 7 is a block diagram showing decoding applied to an encoded block of a video bitstream according to the first example; -
FIG. 8 is a flowchart showing an encoding process according to the first example; -
FIG. 9 is a flowchart showing a decoding process according to the first example; -
FIG. 10 is a block diagram showing encoding applied to an original block of a video signal according to a second example; -
FIG. 11 is a block diagram showing decoding applied to an encoded block of a video bitstream according to the second example; -
FIG. 12 is a flowchart showing an encoding process according to the second example; and -
FIG. 13 is a flowchart showing a decoding process according to the second example. - This disclosure is directed to video compression and decompression techniques in which the residual blocks are degraded during encoding, and block-based post filtering is utilized during decoding to recover high frequency information that is lost as a result of the degradation. For example, a linear filter or a non-linear filter can be applied during final reconstruction. The newly filtered block would then be used as the final reconstruction for future reference in the coding loop.
- In some implementations, the post filter is applied directly to the reconstruction. In other implementations, the post filter is not utilized. Thus, information can be included in the bitstream that indicates whether or not the filter is to be used. In some implementations, the encoder may choose to use or not use the post filter based on rate distortion cost. In addition, the encoder may encode information into the bitstream regarding the filter to be used. In some implementations, this information identifies a specific filter index from a family of post filters. In other implementations, this information includes parameters for a parameterized family of filters. In some implementations, this information includes the actual filter taps at an appropriate precision.
-
FIG. 1 is a schematic of a video encoding anddecoding system 100 in which the systems and methods described herein can be implemented. Anexemplary transmitting station 112 can be, for example, a computer having an internal configuration of hardware such as that described inFIG. 2 . However, other suitable implementations of the transmittingstation 112 are possible. For example, the processing of transmittingstation 112 can be distributed among multiple devices. - A
network 128 can connect the transmittingstation 112 and a receivingstation 130 for encoding and decoding of a video stream. Specifically, the video stream can be encoded in transmittingstation 112 and the encoded video stream can be decoded in receivingstation 130.Network 128 can be, for example, the Internet.Network 128 can also be a local area network (LAN), wide area network (WAN), virtual private network (VPN), cellular telephone network or any other means of transferring the video stream from transmittingstation 112 to, in this example, receivingstation 130. - Receiving
station 130, in one example, can be a computer having an internal configuration of hardware such as that described inFIG. 2 . However, other suitable implementations of receivingstation 130 are possible. For example, the processing of receivingstation 130 can be distributed among multiple devices. - Other implementations of video encoding and
decoding system 100 are possible. For example, an implementation can omitnetwork 128. In another implementation, a video stream can be encoded and then stored for transmission at a later time to receivingstation 130 or any other device having memory. In one implementation, the receivingstation 130 receives (e.g., vianetwork 128, a computer bus, and/or some communication pathway) the encoded video stream and stores the video stream for later decoding. In an exemplary implementation, a real-time transport protocol (RTP) is used for transmission of the encoded video overnetwork 128. In another implementation, a transport protocol other than RTP may be used, e.g., an HTTP-based video streaming protocol. - As will be explained further herein, the transmitting
station 112 and the receivingstation 130 are examples of devices that can be included in the video encoding anddecoding system 100. Additional devices can be included, such as a server that relays transmissions from the transmittingstation 112 to the receivingstation 130. -
FIG. 2 is a block diagram of anexemplary computing device 200 that can implement a transmitting station or a receiving station. For example,computing device 200 can implement one or both of transmittingstation 112 and receivingstation 130 ofFIG. 1 .Computing device 200 can be in the form of a computing system including multiple computing devices, or in the form of a single computing device, for example, a mobile phone, a tablet computer, a laptop computer, a notebook computer, a desktop computer, and the like. - A
CPU 224 incomputing device 200 can be a conventional central processing unit. Alternatively,CPU 224 can be any other type of device, or multiple devices, capable of manipulating or processing information now-existing or hereafter developed. Although the disclosed implementations can be practiced with a single processor as shown, e.g.,CPU 224, advantages in speed and efficiency can be achieved using more than one processor. - A
memory 226 incomputing device 200 can be a read only memory (ROM) device or a random access memory (RAM) device in an implementation. Any other suitable type of storage device can be used as thememory 226.Memory 226 can include code anddata 227 that is accessed byCPU 224 using abus 230.Memory 226 can further include anoperating system 232 andapplication programs 234, theapplication programs 234 including at least one program that permitsCPU 224 to perform the methods described here. As shown, for example,application programs 234 can includeapplications 1 through N, which further include an application that performs one or more of the methods described herein.Computing device 200 can also include asecondary storage 236 that can be, for example, a memory card used with amobile computing device 200. Because the video communication sessions may contain a significant amount of information, they can be stored in whole or in part insecondary storage 236 and loaded intomemory 226 as needed for processing. -
Computing device 200 can also include one or more output devices, such as adisplay 228.Display 228 may be, in one example, a touch sensitive display that combines a display with a touch sensitive element that is operable to sense touch inputs.Display 228 can be coupled toCPU 224 viabus 230. Other output devices that permit a user to program or otherwise usecomputing device 200 can be provided in addition to or as an alternative to display 228. When the output device is or includes a display, the display can be implemented in various ways, including by a liquid crystal display (LCD), a cathode-ray tube (CRT) or light emitting diode (LED) display, such as an OLED display. -
Computing device 200 can also include or be in communication with an image-sensingdevice 238, for example a camera, or any other image-sensingdevice 238 now existing or hereafter developed that can sense an image such as the image of a useroperating computing device 200. Image-sensing device 238 can be positioned such that it is directed toward the useroperating computing device 200. In an example, the position and optical axis of image-sensingdevice 238 can be configured such that the field of vision includes an area that is directly adjacent to display 228 and from which display 228 is visible. -
Computing device 200 can also include or be in communication with a sound-sensing device 240, for example a microphone, or any other sound-sensing device now existing or hereafter developed that can sense sounds nearcomputing device 200. Sound-sensingdevice 240 can be positioned such that it is directed toward the useroperating computing device 200 and can be configured to receive sounds, for example, speech or other utterances, made by the user while the user operatescomputing device 200. - Although
FIG. 2 depictsCPU 224 andmemory 226 ofcomputing device 200 as being integrated into a single unit, other configurations can be utilized. The operations ofCPU 224 can be distributed across multiple machines (each machine having one or more of processors) that can be coupled directly or across a local area or other network.Memory 226 can be distributed across multiple machines such as a network-based memory or memory in multiple machines performing the operations ofcomputing device 200. Although depicted here as a single bus,bus 230 ofcomputing device 200 can be composed of multiple buses. Further,secondary storage 236 can be directly coupled to the other components ofcomputing device 200 or can be accessed via a network and can comprise a single integrated unit such as a memory card or multiple units such as multiple memory cards.Computing device 200 can thus be implemented in a wide variety of configurations. -
FIG. 3 is a diagram of an example of avideo 350 to be encoded and subsequently decoded.Video 350 includes avideo sequence 352. At the next level,video sequence 352 includes a number ofadjacent frames 354. While three frames are depicted asadjacent frames 354,video sequence 352 can include any number ofadjacent frames 354.Adjacent frames 354 can then be further subdivided into individual frames, e.g., asingle frame 356. At the next level,single frame 356 can be divided into a series ofblocks 358, which can contain data corresponding to, for example, 16×16 pixels inframe 356. The blocks can also be arranged in planes of data. For example, a corresponding block in each plane can respectively contain luminance and chrominance data for the pixels of the block. Blocks 58 can also be of any other suitable size such as 16×8 pixel groups or 8×16 pixel groups and can be further subdivided into smaller blocks depending on the application. Unless otherwise noted, the terms block and macroblock are used interchangeably herein. -
FIG. 4 is a block diagram of anencoder 470 in accordance with an aspect of this disclosure.Encoder 470 can be implemented, as described above, in transmittingstation 112 such as by providing a computer software program stored in memory, for example,memory 226. The computer software program can include machine instructions that, when executed by a processor such asCPU 224,cause transmitting station 112 to encode video data in the manner described inFIG. 4 .Encoder 470 can also be implemented as specialized hardware included, for example, in transmittingstation 112.Encoder 470 has the following stages to perform the various functions in a forward path (shown by the solid connection lines) to produce an encoded orcompressed bitstream 488 using input video 350: an intra/inter prediction stage 472, atransform stage 474, aquantization stage 476, and anentropy encoding stage 478.Encoder 470 may also include a reconstruction path (shown by the dotted connection lines) to reconstruct a frame for encoding of future blocks. InFIG. 4 ,encoder 470 has the following stages to perform the various functions in a reconstruction path: adequantization stage 480, aninverse transform stage 482, areconstruction stage 484, and aloop filtering stage 486. Other structural variations ofencoder 470 can be used to encodevideo 350. - When
video 350 is presented for encoding, eachframe 356 within thevideo 350 can be processed in units ofblocks 358. At the intra/inter prediction stage 472, each block can be encoded using intra-frame prediction (prediction using blocks within a single frame) or inter-frame prediction (prediction using blocks from a different frame). In any case, a prediction block can be formed. In the case of intra-prediction, a prediction block can be formed from samples in the current frame that have been previously encoded and reconstructed. In the case of inter-prediction, a prediction block can be formed from samples in one or more previously constructed reference frames. - Next, still referring to
FIG. 4 , the prediction block can be subtracted from the current block at intra/inter prediction stage 472 to produce a residual block (also called a residual).Transform stage 474 transforms the residual into transform coefficients in, for example, the frequency domain. Examples of block-based transforms include the Karhunen-Loéve Transform (KLT), the Discrete Cosine Transform (DCT), and the Singular Value Decomposition Transform (SVD). In one example, the DCT transforms the block into the frequency domain. In the case of DCT, the transform coefficient values are based on spatial frequency, with the lowest frequency (DC) coefficient at the top-left of the matrix and the highest frequency coefficient at the bottom-right of the matrix. -
Quantization stage 476 converts the transform coefficients into discrete quantum values, which are referred to as quantized transform coefficients, using a quantizer value or a quantization level. The quantized transform coefficients are then entropy encoded byentropy encoding stage 478. The entropy-encoded coefficients, together with other information used to decode the block, which may include for example the type of prediction used, motion vectors and quantizer value, are then output tocompressed bitstream 488.Compressed bitstream 488 can be formatted using various techniques, such as variable length coding (VLC) or arithmetic coding.Compressed bitstream 488 can also be referred to as an encoded video stream and the terms are used interchangeably herein. - The reconstruction path in
FIG. 4 (shown by the dotted connection lines) can be used to ensure that bothencoder 470 and a decoder 500 (described below) use the same reference frames to decodecompressed bitstream 488. The reconstruction path performs functions that are similar to functions that take place during the decoding process that are discussed in more detail below, including dequantizing the quantized transform coefficients atdequantization stage 480 and inverse transforming the dequantized transform coefficients atinverse transform stage 482 to produce a derivative residual block (also called a derivative residual). Atreconstruction stage 484, the prediction block that was predicted at the intra/inter prediction stage 472 can be added to the derivative residual to create a reconstructed block.Loop filtering stage 486 can be applied to the reconstructed block to reduce distortion such as blocking artifacts. - Other variations of
encoder 470 can be used to encodecompressed bitstream 488. For example, a non-transform basedencoder 470 can quantize the residual signal directly withouttransform stage 474. In another implementation, anencoder 470 can havequantization stage 476 anddequantization stage 480 combined into a single stage. -
FIG. 5 is a block diagram of adecoder 500 in accordance with an implementation.Decoder 500 can be implemented in receivingstation 130, for example, by providing a computer software program stored inmemory 226. The computer software program can include machine instructions that, when executed by a processor such asCPU 224,cause receiving station 130 to decode video data in the manner described inFIG. 5 .Decoder 500 can also be implemented in hardware included, for example, in transmittingstation 112 or receivingstation 130. -
Decoder 500, similar to the reconstruction path ofencoder 470 discussed above, includes in one example the following stages to perform various functions to produce anoutput video stream 516 from compressed bitstream 488: anentropy decoding stage 502, adequantization stage 504, aninverse transform stage 506, an intra/inter prediction stage 508, areconstruction stage 510, afiltering stage 512, which can include loop filtering and/or deblocking and aframe buffering stage 514. Other structural variations ofdecoder 500 can be used to decodecompressed bitstream 488. - When compressed
bitstream 488 is presented for decoding, the data elements withincompressed bitstream 488 can be decoded by entropy decoding stage 502 (using, for example, arithmetic coding) to produce a set of quantized transform coefficients.Dequantization stage 504 dequantizes the quantized transform coefficients, andinverse transform stage 506 inverse transforms the dequantized transform coefficients to produce a derivative residual that can be identical to that created byinverse transform stage 482 inencoder 470. Using header information decoded fromcompressed bitstream 488 such as modes and motion vectors,decoder 500 can use intra/inter prediction stage 508 to create the same prediction block as was created inencoder 470, e.g., at intra/inter prediction stage 472. Atreconstruction stage 510, the prediction block can be added to the derivative residual to create a reconstructed block.Filtering stage 512 can be applied to the reconstructed block to reduce blocking artifacts. Information can then be held in a frame buffer atframe buffering stage 514 for subsequent use in decoding or output. A post-processing stage can be applied to the reconstructed block to further refine the image. The result of the process performed by thedecoder 500 is output asoutput video stream 516.Output video stream 516 can also be referred to as a decoded video stream and the terms are used interchangeably herein. - Other variations of
decoder 500 can be used to decodecompressed bitstream 488. For example,decoder 500 can produceoutput video stream 516 without post-processing. -
FIG. 6 is a block diagram showingvideo encoding 600 that incorporates degradation of residual blocks and block-based post filtering according to a first example, applied to anoriginal block 610 from a video signal having a plurality of frames, each frame having a plurality of blocks, and each block having a plurality of pixels.Video encoding 600 can be implemented, for example, in theencoder 470, and the description of theencoder 470 is applicable except as described herein. - A
prediction block 620 is identified for use in generating aresidual block 630. Theprediction block 620 can be a block from a different frame than the current frame if an inter-prediction mode is used, or can be a block from the current frame if an intra-prediction mode is used. Theprediction block 620 is selected in a conventional manner according to the prediction mode used, such that theprediction block 620 has a high degree of correspondence to theoriginal block 610. In order to generate theresidual block 630, theprediction block 620 is subtracted from theoriginal block 610, and the remaining information is utilized as theresidual block 630. - In order to reduce the bit cost for encoding the
residual block 630, theresidual block 630 is intentionally degraded to generate a degradedresidual block 640. Degrading theresidual block 630 can be performed in any manner that reduces the quality and the bit cost required to transmit the degradedresidual block 640. One example of a degradation that can be applied to theresidual block 630 is modification of the step size used for quantization of theresidual block 630. For example, quantization can be performed during encoding of the residual in the manner described with regard to thequantization stage 476 of theencoder 470, but using a larger quantization step size than otherwise would be used. This results in a decrease in the bit cost to encode the residual. Thus, in an implementation where a nominal quantization step size is utilized for the current frame, degrading the residual can include selecting a larger quantization step size for the current block, as compared to the normal quantization step size. As another example, the larger quantization step size can be selected by setting the quantization step size can be larger than that used for other coding modes that are applied to the current frame. - The degraded
residual block 640 is encoded to define an encodedresidual block 650. Encoding can be performed as described with respect to thevideo encoder 470, includingtransform stage 474,quantization stage 476, and entropy encoding instage 478. The encodedresidual block 650 can be stored or transmitted. In some implementations, filter information is stored or transmitted along with the encoded residual block 160. The filter information can indicate whether a filter is to be applied during decoding, can include information such as an identifier that corresponds to a predefined filter to be used for filtering, and/or can include a plurality of filter parameters that can be utilized during decoding. - Subsequent to generation of the encoded
residual block 650, the information from the encodedresidual block 650 is recovered using a process analogous to that which will be applied at the decoder side in order to generate a prediction block that can be used for encoding of subsequent blocks in the current frame or a different frame. Thus, the encodedresidual block 650 is decoded to generate a decodedresidual block 660, such as in the manner described with respect toempty decoding stage 502,de-quantization stage 504, andinverse transform stage 506 of thedecoder 500. The decodedresidual block 660 is then added to theprediction block 620 that was previously utilized to generate theresidual block 630 from theoriginal block 610. The result of adding the decodedresidual block 660 to theprediction block 620 is areconstructed block 670. - In order to recover some of the high frequency information that was lost during degradation of the
residual block 630 to define the degradedresidual block 640, a block-based post-filter is applied to thereconstructed block 670. In some implementations, the filter is a block-based loop filter. The block-based loop filter that is utilized for filtering thereconstructed block 670 can be designed in various ways. In one implementation, the block-based loop filter is a Weiner filter, which minimizes the mean square area between thereconstructed block 670 and theoriginal block 610. For a given filter window size, the filter can be designed as a two-dimensional Weiner filter using linear estimation theory. The two-dimensional Weiner filter is then decomposed into two one-dimensional filters. The two-dimensional filter can be decomposed into two one-dimensional filters using decomposition techniques such as singular value decomposition and iterative optimization. - The block-based loop filters can be generated in advance of encoding or can be generated during the encoding process. Predefined filters can be defined in advance of encoding by training a plurality of filters using a variety of sample video input filters. The trained filters are then clustered, and the filter at the center of each cluster can be utilized to form a filter family. The filter family is then made available at both the end coder and the decoder. During encoding, a particular family can be selected. As one example, the filter can be selected by comparing the rate distortion performance for a plurality of the filters from the filter family as applied to at least a portion of the video signals being encoded. The selected filter can then be applied to other portions of the video signal. Selection of the filter can be made at any level of granularity. Thus, the same filter could be selected for a series of frames, a single frame, a macroblock, or the filter could be selected on a block-by-block basis. In another implementation, the filter to be used for filtering the
reconstructed block 670 is designed during encoding, with the result of filtered selection being a plurality of filter parameters that can be transmitted to the decoded for use in decoding the video bit stream. - As previously indicated, information identifying the filter selected for filtering the
reconstructed block 670 can be stored in association with the video bit stream. In one implementation, information identifying the filter to be utilized can be encoded within the block header for each block. In implementations where a predefined filter is used, information identifying the predefined filter is transmitted or stored with the video bit stream. In implementations where a filter is designed during encoding, the parameters describing the filter can be transmitted or stored with the video bit stream. - The result of filtering the
reconstructed block 670 utilizing the block-based post filter is the filteredreconstructed block 680. The filtered reconstructed block can be stored at the encoder for use in subsequent prediction operations. -
FIG. 7 is a block diagram showingvideo decoding 700 that incorporates recovery of information lost as a result of intentional degradation of residual blocks by using block-based post filtering.Video decoding 700 is applied to an encodedresidual block 710 from a video bit stream having a plurality of frames, each frame having a plurality of blocks, and each block having a plurality of pixels. The encodedresidual block 710 can be formed in the manner described with respect tovideo encoding 600. - The encoded
residual block 710 is decoded into a decodedresidual block 720. Decoding of the encodedresidual block 720. Decoding of the encodedresidual block 710 can be performed in the manner described with respect to theentropy decoding stage 502, thedequantization stage 504, and theinverse transform stage 506 of thedecoder 500. Decoding the encodedresidual block 710 can include decoding filter information from the video bitstream regarding the block-based post filter for the decodedresidual block 720. - The decoded
residual block 720 is combined with aprediction block 730 by adding the decodedresidual block 720 to theprediction block 730. The result is areconstructed block 740. Thereconstructed block 740 is of reduced quality relative to theoriginal block 610 owing to degradation of aresidual block 630 when generating the degradedresidual block 640 duringvideo encoding 600. In order to restore some of the high frequency information that was lost during degradation, a block-based filter is applied to thereconstructed block 740, which results in a filteredreconstructed block 750. The filter applied to generate the filteredreconstructed block 750 can be identified from information in the video bit stream, such as filter information regarding the block-based post filter to be utilized in filtering thereconstructed block 740. As previously discussed, the filter information can be received from the video bit stream, such as by decoding the filter information from the header of the encodedresidual block 710. The filter information can include, for example, an identifier that corresponds to a predefined filter or a plurality of filter parameters that define the filter. - The filtered
reconstructed block 750 can be output as a video signal. For example, the filteredreconstructed block 750 could be output for display. The filtered reconstructed block is also stored for use in decoding of other blocks by storing the filteredreconstructed block 750 as theprediction block 730. -
FIG. 8 shows an example of anencoding process 800. Theencoding process 800 can be implemented, for example, as a software program that is executed by computing devices such as the transmittingstation 112 or the receivingstation 130. The software program can include machine-readable instructions that are stored in a memory such asmemory 226 that, when executed by a processor such asCPU 224, cause the computing device to perform theencoding process 800. Theencoding process 800 can also be implemented using hardware. As explained above, some computing devices may have multiple memories and multiple processors, and the steps of theencoding process 800 may in such cases be distributed using different processors and memories. Use of the terms “processor” and “memory” in the singular encompasses computing devices that have only one processor or one memory as well as devices having multiple processors or memories that may each be used in the performance of some but not necessarily all of the recited steps. -
Operation 810 includes generating theresidual block 630 from theoriginal block 610 and theprediction block 620. This can be performed in a conventional manner as previously described. This operation can further include obtaining theoriginal block 610. Theoriginal block 610 can be obtained in any manner such as by receiving it in a video signal or accessing it from a storage device. This operation can also include identifying theprediction block 620 that will be used with theoriginal block 610 to define theresidual block 630. This can be performed using any of a number of well-known algorithms that search for matching reference blocks in the current frame or in other frames of the video signal. Thus, theprediction block 620 can be identified by comparing the contents of theoriginal block 610 with the contents of a plurality of blocks from the video signal and choosing the best matching block as theprediction block 620. -
Operation 820 includes degrading theresidual block 630, which can be performed in the manner described with respect to the degradedresidual block 640. Subsequent to degrading the degradedresidual block 640, it is then encoded atoperation 830. -
Operation 840 includes selecting a block-based post filter that will be utilized to recover some of the high frequency information that was removed from theresidual block 630 in order to reduce the bit cost for encoding it to define the degradedresidual block 640. This information can be encoded with the encodedresidual block 650, such as by placing it in the header of the encodedresidual block 650. - Subsequent to encoding the encoded
residual block 650 and the filter information, the remainder of theprocess 800 is directed to decoding and reconstruction of the encoded residual block such that it can be used as a prediction block in further encoding operations. Inoperation 850, the encodedresidual block 650 is decoded. The result ofoperation 850 is the decodedresidual block 660. Atoperation 860, the decodedresidual block 660 is combined with theprediction block 620 that was previously utilized atoperation 810 to generate theresidual block 630. The result of this operation is thereconstructed block 670. Inoperation 870, the block-based post filter is applied to thereconstructed block 670 to recover some of the high frequency information that was previously discarded in the process of generating the degradedresidual block 640 atoperation 820. Subsequent to filtering, the filteredreconstructed block 680 is stored atoperation 880 for subsequent use as theprediction block 620 in a subsequent encoding operation for a different block. -
FIG. 9 shows an example of adecoding process 900. Thedecoding process 900 can be implemented, for example, as a software program that is executed by computing devices such as the transmittingstation 112 or the receivingstation 130. The software program can include machine-readable instructions that are stored in a memory such asmemory 226 that, when executed by a processor such asCPU 224, cause the computing device to perform thedecoding process 900. Thedecoding process 900 can also be implemented using hardware. As explained above, some computing devices may have multiple memories and multiple processors, and the steps of thedecoding process 900 may in such cases be distributed using different processors and memories. Use of the terms “processor” and “memory” in the singular encompasses computing devices that have only one processor or one memory as well as devices having multiple processors or memories that may each be used in the performance of some but not necessarily all of the recited steps. -
Operation 910 includes decoding the encodedresidual block 710 into the decodedresidual block 720 as previously described. Inoperation 920, filter information is decoded from the video bit stream, such as from the header of the encodedresidual block 710. Inoperation 930, thereconstructed block 740 is generated by adding the decodedresidual block 720 to theprediction block 730. Inoperation 940, a block-based post filter is applied to thereconstructed block 740 to recover information lost during degradation. The filteredreconstructed block 750 can then be output for display and can also be stored atoperation 950, as theprediction block 730 for use in a subsequent decoding operation. -
FIG. 10 is a block diagram showingvideo encoding 1000 that incorporates downscaling of residual blocks and block-based post filtering according to a first example, applied to anoriginal block 1010 from a video signal having a plurality of frames, each frame having a plurality of blocks, and each block having a plurality of pixels.Video encoding 1000 can be implemented, for example, in theencoder 470, and the description of theencoder 470 is applicable except as described herein. Theoriginal block 1010 has a first resolution, which can be, but is not necessarily, a maximum resolution for the video signal. - A
prediction block 1020 is identified for use in generating aresidual block 1030. The resolutions of theprediction block 1020 can be the same as the resolution of theoriginal block 1010. Theprediction block 1020 can be a block from a different frame than the current frame if an inter-prediction mode is used, or can be a block from the current frame if an intra-prediction mode is used. Theprediction block 1020 is selected in a conventional manner according to the prediction mode used, such that theprediction block 1020 has a high degree of correspondence to theoriginal block 1010. In order to generate theresidual block 1030, theprediction block 1020 is subtracted from theoriginal block 1010, and the remaining information is utilized as theresidual block 1030. - In order to reduce the bit cost for encoding the
residual block 1030, theresidual block 1030 is downscaled to generate a downscaledresidual block 1040. Downscaling theresidual block 1030 can be performed in any manner that reduces the resolution of theresidual block 1030. As an example, one common method of downscaling takes the average of multiple adjacent pixel values and sets a corresponding value in the downscaled image to the average value. Suitable downscaling operations may reduce the resolution of the encodedresidual block 1030 to a second resolution that is, as examples, half or one-quarter the first resolution at which theresidual block 1030 was calculated. Any other suitable magnitude of downscaling can be utilized. In some implementations, the downscaling is performed in the context of a coding mode that applies a predetermined magnitude of downscaling to theresidual block 1030 in order to generate the downscaledresidual block 1040. In other implementations, the magnitude of the downscaling is selected based on the content of the video signal, the plurality of frames, the current frame, or the block. This selection can be made, for example, by comparing the rate-distortion performance of multiple alternatives. - The downscaled
residual block 1040 is encoded to define an encodedresidual block 1050. Encoding can be performed as described with respect to theencoder 470, includingtransform stage 474,quantization stage 476, and entropy encoding instage 478. The encodedresidual block 1050 can be stored or transmitted. In some implementations, filter information is stored or transmitted along with the encodedresidual block 1050. The filter information can indicate whether a filter is to be applied to the during decoding, can include information such as an identifier that corresponds to a predefined filter to be used for filtering during decoding, and/or can include a plurality of filter parameters that can be utilized during decoding. - Subsequent to generation of the encoded
residual block 1050, the information from the encodedresidual block 1050 is recovered using a process analogous to that which will be applied at the decoder side in order to generate a prediction block that can be used for encoding of subsequent blocks in the current frame or a different frame. Thus, the encodedresidual block 1050 is decoded to generate a decodedresidual block 1060, such as in the manner described with respect toentropy decoding stage 502,de-quantization stage 504, andinverse transform stage 506 of thedecoder 500. The decodedresidual block 1060 is at the second resolution, which is the same resolution as the downscaledresidual block 1050 prior to encoding. The decodedresidual block 1060 is then upscaled to define an upscaled decoded residual block 1065. Upscaling can be performed by any one of numerous well known methods. - The upscaled decoded residual block 1065 is then added to the
prediction block 1020 that was previously utilized to generate theresidual block 1030 from theoriginal block 1010. The result of adding the upscaled decoded residual block 1065 to theprediction block 1020 is areconstructed block 1070. - In order to recover some of the high frequency information that was lost as a result of downscaling and subsequently upscaling the
residual block 1030, a block-based post-filter is applied to the reconstructedblock 1070. In some implementations, the filter is a block-based loop filter. The block-based loop filter that is utilized for filtering thereconstructed block 1070 can be designed in various ways. In one implementation, the block-based loop filter is a Weiner filter, which minimizes the mean square area between thereconstructed block 1070 and theoriginal block 1010. For a given filter window size, the filter can be designed as a two-dimensional Weiner filter using linear estimation theory. The two-dimensional Weiner filter is then decomposed into two one-dimensional filters. The two-dimensional filter can be decomposed into two one-dimensional filters using decomposition techniques such as singular value decomposition and iterative optimization. - The block-based loop filters can be generated in advance of encoding or can be generated during the encoding process. Predefined filters can be defined in advance of encoding by training a plurality of filters using a variety of sample video input filters. The trained filters are then clustered, and the filter at the center of each cluster can be utilized to form a filter family. The filter family is then made available at both the end coder and the decoder. During encoding, a particular family can be selected. As one example, the filter can be selected by comparing the rate distortion performance for a plurality of the filters from the filter family as applied to at least a portion of the video signals being encoded. The selected filter can then be applied to other portions of the video signal. Selection of the filter can be made at any level of granularity. Thus, the same filter could be selected for a series of frames, a single frame, a macroblock, or the filter could be selected on a block-by-block basis. In another implementation, the filter to be used for filtering the
reconstructed block 1070 is designed during encoding, with the result of filtered selection being a plurality of filter parameters that can be transmitted to the decoded for use in decoding the video bit stream. - As previously indicated, information identifying the filter selected for filtering the
reconstructed block 1070 can be stored in association with the video bit stream. In one implementation, information identifying the filter to be utilized can be encoded within the block header for each block. In implementations where a predefined filter is used, information identifying the predefined filter is transmitted or stored with the video bit stream. In implementations where a filter is designed during encoding, the parameters describing the filter can be transmitted or stored with the video bit stream. - The result of filtering the
reconstructed block 1070 utilizing the block-based post filter is the filtered reconstructedblock 1080. The filtered reconstructed block can be stored at the encoder for use in subsequent prediction operations. -
FIG. 11 is a block diagram showingvideo decoding 1100 that incorporates upscaling of residual blocks and block-based post filtering.Video decoding 1100 is applied to an encodedresidual block 1110 from a video bit stream having a plurality of frames, each frame having a plurality of blocks, and each block having a plurality of pixels. The encodedresidual block 1110 can be generated in the manner described with respect tovideo encoding 1000. - The encoded
residual block 1110 is decoded into a decodedresidual block 1120. Decoding of the encodedresidual block 1120. Decoding of the encodedresidual block 1110 can be performed in the manner described with respect to theentropy decoding stage 502, thedequantization stage 504, and theinverse transform stage 506 of thedecoder 500. The encodedresidual block 1110 is upscaled in order to generate an upscaled decodedresidual block 1125. The decodedresidual block 1110 has a first resolution and the upscaled decodedresidual block 1125 has a second resolution that is greater than the first resolution. As examples, the second resolution can be double or quadruple the first resolution. - The upscaled decoded
residual block 1125 is combined with aprediction block 1130 by adding the upscaled decodedresidual block 1125 to theprediction block 1130. The result is areconstructed block 1140. Thereconstructed block 1140 is of reduced quality relative to theoriginal block 1010 owing to loss of information in from theresidual block 1030 as a result of downscaling duringvideo encoding 1000 and upscaling the residual generating duringvideo decoding 1100. In order to restore some of the high frequency information that was lost during downscaling, a block-based filter is applied to the reconstructedblock 1140, which results in a filteredreconstructed block 1150. The filter applied to generate the filtered reconstructedblock 1150 can be identified from information in the video bit stream, such as filter information regarding the block-based post filter to be utilized in filtering thereconstructed block 1140. As previously discussed, the filter information can be received from the video bit stream, such as by decoding the filter information from the header of the encodedresidual block 1110. The filter information can include, for example, an identifier that corresponds to a predefined filter or a plurality of filter parameters that define the filter. - The filtered
reconstructed block 1150 can be output as a video signal. For example, the filtered reconstructedblock 1150 could be output for display. The filtered reconstructed block is also stored for use in decoding of other blocks by storing the filtered reconstructedblock 1150 as theprediction block 1130. -
FIG. 12 shows an example of anencoding process 1200. Theencoding process 1200 can be implemented, for example, as a software program that is executed by computing devices such as the transmittingstation 112 or the receivingstation 130. The software program can include machine-readable instructions that are stored in a memory such asmemory 226 that, when executed by a processor such asCPU 224, cause the computing device to perform theencoding process 1200. Theencoding process 1200 can also be implemented using hardware. As explained above, some computing devices may have multiple memories and multiple processors, and the steps of theencoding process 1200 may in such cases be distributed using different processors and memories. Use of the terms “processor” and “memory” in the singular encompasses computing devices that have only one processor or one memory as well as devices having multiple processors or memories that may each be used in the performance of some but not necessarily all of the recited steps. -
Operation 1210 includes generating theresidual block 1030 from theoriginal block 1010 and theprediction block 1020. This can be performed in a conventional manner as previously described. This operation can further include obtaining theoriginal block 1010. Theoriginal block 1010 can be obtained in any manner such as by receiving it in a video signal or accessing it from a storage device. This operation can also include identifying theprediction block 1020 that will be used with theoriginal block 1010 to define theresidual block 1030. This can be performed using any of a number of well-known algorithms that search for matching reference blocks in the current frame or in other frames of the video signal. Thus, theprediction block 1020 can be identified by comparing the contents of theoriginal block 1010 with the contents of a plurality of blocks from the video signal and choosing the best matching block as theprediction block 1020. -
Operation 1220 includes downscaling theresidual block 1030, which can be performed in the manner described with respect to the downscaledresidual block 1040. The downscaledresidual block 1040 is then encoded atoperation 1230. -
Operation 1240 includes selecting a block-based post filter that will be utilized to recover some of the high frequency information that was removed from theresidual block 1030 in order to reduce the bit cost for encoding it to define the downscaledresidual block 1040. This information can be encoded with the encodedresidual block 1050, such as by placing it in the header of the encodedresidual block 1050. - Subsequent to encoding the encoded
residual block 1050 and the filter information, the remainder of theprocess 1200 is directed to decoding and reconstruction of the encoded residual block such that it can be used as a prediction block in further encoding operations. Inoperation 1250, the encodedresidual block 1050 is decoded. The result ofoperation 1250 is the decodedresidual block 1060. Atoperation 1255, the decodedresidual block 1060 is upscaled, which results in generation of the upscaled decoded residual block 1065 Atoperation 1260, the upscaled decoded residual block 1065 is combined with theprediction block 1020 that was previously utilized atoperation 1210 to generate theresidual block 1030. The result of this operation is the reconstructedblock 1070. Inoperation 1270, the block-based post filter is applied to the reconstructedblock 1070 to recover some of the high frequency information that was previously discarded in the process of generating the downscaledresidual block 1040 atoperation 1220. Subsequent to filtering, the filtered reconstructedblock 1080 is stored atoperation 1280 for subsequent use as theprediction block 1020 in a subsequent encoding operation for a different block. -
FIG. 13 shows an example of adecoding process 1300. Thedecoding process 1300 can be implemented, for example, as a software program that is executed by computing devices such as the transmittingstation 112 or the receivingstation 130. The software program can include machine-readable instructions that are stored in a memory such asmemory 226 that, when executed by a processor such asCPU 224, cause the computing device to perform thedecoding process 1300. Thedecoding process 1300 can also be implemented using hardware. As explained above, some computing devices may have multiple memories and multiple processors, and the steps of thedecoding process 1300 may in such cases be distributed using different processors and memories. Use of the terms “processor” and “memory” in the singular encompasses computing devices that have only one processor or one memory as well as devices having multiple processors or memories that may each be used in the performance of some but not necessarily all of the recited steps. -
Operation 1310 includes decoding the encodedresidual block 1110 into the decodedresidual block 1120 as previously described. Inoperation 1320, filter information is decoded from the video bit stream, such as from the header of the encodedresidual block 1110. Inoperation 1325, the decoded residual block in upscaled, which results in the upscaled decodedresidual block 1125. - In
operation 1330, thereconstructed block 1140 is generated by adding the upscaled decodedresidual block 1125 to theprediction block 1130. Inoperation 1340, a block-based post filter is applied to the reconstructedblock 1140 to recover information lost as a result of downscaling and subsequent upscaling. The filteredreconstructed block 1150 can then be output for display and can also be stored atoperation 1350, as theprediction block 1130 for use in a subsequent decoding operation. - The aspects of encoding and decoding described above illustrate some exemplary encoding and decoding techniques. However, it is to be understood that encoding and decoding, as those terms are used in the claims, could mean compression, decompression, transformation, or any other processing or change of data.
- The words “example” or “exemplary” are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example” or “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the words “example” or “exemplary” is intended to present concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X includes A or B” is intended to mean any of the natural inclusive permutations. That is, if X includes A; X includes B; or X includes both A and B, then “X includes A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form. Moreover, use of the term “an implementation” or “one implementation” throughout is not intended to mean the same embodiment or implementation unless described as such.
- Implementations of transmitting
station 112 and/or receiving station 130 (and the algorithms, methods, instructions, etc., stored thereon and/or executed thereby, including byencoder 470 and decoder 500) can be realized in hardware, software, or any combination thereof. The hardware can include, for example, computers, intellectual property (IP) cores, application-specific integrated circuits (ASICs), programmable logic arrays, optical processors, programmable logic controllers, microcode, microcontrollers, servers, microprocessors, digital signal processors or any other suitable circuit. In the claims, the term “processor” should be understood as encompassing any of the foregoing hardware, either singly or in combination. The terms “signal” and “data” are used interchangeably. Further, portions of transmittingstation 112 and receivingstation 130 do not necessarily have to be implemented in the same manner. - Further, in one aspect, for example, transmitting
station 112 or receivingstation 130 can be implemented using a general purpose computer or general purpose processor with a computer program that, when executed, carries out any of the respective methods, algorithms and/or instructions described herein. In addition or alternatively, for example, a special purpose computer/processor can be utilized which can contain other hardware for carrying out any of the methods, algorithms, or instructions described herein. - Transmitting
station 112 and receivingstation 130 can, for example, be implemented on computing devices of any type. For instance, the transmittingstation 112 can be a personal computer that includes a video capture device for obtain raw video to be encoded and the receivingstation 130 can be a personal computer that includes a video display device for displaying decoded video. Alternatively, transmittingstation 112 can be implemented on a server and receivingstation 130 can be implemented on a device separate from the server, such as a hand-held communications device. In this instance, transmittingstation 112 can encode content using anencoder 470 into an encoded video signal and transmit the encoded video signal to the communications device. In turn, the communications device can then decode the encoded video signal using adecoder 500. Alternatively, the communications device can decode content stored locally on the communications device, for example, content that was not transmitted by transmittingstation 112. Other suitable transmittingstation 112 and receivingstation 130 implementation schemes are available. As one example, receivingstation 130 can be a generally stationary personal computer rather than a portable communications device. As another example, a device that includes theencoder 470 may also include thedecoder 500. - Further, all or a portion of implementations of the present invention can take the form of a computer program product accessible from, for example, a tangible computer-usable or computer-readable medium. A computer-usable or computer-readable medium can be any device that can, for example, tangibly contain, store, communicate, or transport the program for use by or in connection with any processor. The medium can be, for example, an electronic, magnetic, optical, electromagnetic, or a semiconductor device. Other suitable mediums are also available.
- The above-described embodiments, implementations and aspects have been described in order to allow easy understanding of the present invention and do not limit the present invention. On the contrary, the invention is intended to cover various modifications and equivalent arrangements included within the scope of the appended claims, which scope is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structure as is permitted under the law.
Claims (20)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/010,833 US20180302643A1 (en) | 2015-12-15 | 2018-06-18 | Video coding with degradation of residuals |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/969,675 US10009622B1 (en) | 2015-12-15 | 2015-12-15 | Video coding with degradation of residuals |
| US16/010,833 US20180302643A1 (en) | 2015-12-15 | 2018-06-18 | Video coding with degradation of residuals |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/969,675 Continuation US10009622B1 (en) | 2015-12-15 | 2015-12-15 | Video coding with degradation of residuals |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20180302643A1 true US20180302643A1 (en) | 2018-10-18 |
Family
ID=62599060
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/969,675 Active 2036-05-06 US10009622B1 (en) | 2015-12-15 | 2015-12-15 | Video coding with degradation of residuals |
| US16/010,833 Abandoned US20180302643A1 (en) | 2015-12-15 | 2018-06-18 | Video coding with degradation of residuals |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/969,675 Active 2036-05-06 US10009622B1 (en) | 2015-12-15 | 2015-12-15 | Video coding with degradation of residuals |
Country Status (1)
| Country | Link |
|---|---|
| US (2) | US10009622B1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111147849A (en) * | 2018-11-01 | 2020-05-12 | 联发科技股份有限公司 | Post-processing device and post-processing method |
| US20240169482A1 (en) * | 2022-11-22 | 2024-05-23 | Samsung Electronics Co., Ltd. | Apparatus and method with image resolution upscaling |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10687083B2 (en) * | 2018-06-06 | 2020-06-16 | Intel Corporation | Loop restoration filtering for super resolution video coding |
| US10674151B2 (en) * | 2018-07-30 | 2020-06-02 | Intel Corporation | Adaptive in-loop filtering for video coding |
| KR102022648B1 (en) * | 2018-08-10 | 2019-09-19 | 삼성전자주식회사 | Electronic apparatus, method for controlling thereof and method for controlling server |
| US10694216B2 (en) * | 2018-09-11 | 2020-06-23 | Google Llc | Video coding using separate learning and filtering pathways |
| CN111107356B (en) * | 2018-10-27 | 2023-11-10 | 华为技术有限公司 | Image prediction method and device |
| KR20210067783A (en) * | 2019-11-29 | 2021-06-08 | 삼성전자주식회사 | Electronic apparatus and control method thereof and system |
| US12096003B2 (en) * | 2020-11-17 | 2024-09-17 | Ofinno, Llc | Reduced residual inter prediction |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140092999A1 (en) * | 2012-09-28 | 2014-04-03 | Vid Scale, Inc. | Cross-plane filtering for chroma signal enhancement in video coding |
| US20140355671A1 (en) * | 2013-05-30 | 2014-12-04 | Ya-Ti Peng | Bit-rate control for video coding using object-of-interest data |
| US20150189276A1 (en) * | 2012-07-09 | 2015-07-02 | Nippon Telegraph And Telephone Corporation | Video encoding method and apparatus, video decoding method and apparatus, and programs therefor |
Family Cites Families (62)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA1335794C (en) | 1988-04-07 | 1995-06-06 | Yoshiyuki Okada | Process and apparatus for image magnification |
| DE19730305A1 (en) | 1997-07-15 | 1999-01-21 | Bosch Gmbh Robert | Method for generating an improved image signal in the motion estimation of image sequences, in particular a prediction signal for moving images with motion-compensating prediction |
| US6252576B1 (en) | 1998-08-06 | 2001-06-26 | In-System Design, Inc. | Hardware-efficient system for hybrid-bilinear image scaling |
| US6724847B1 (en) | 2000-09-06 | 2004-04-20 | Motorola, Inc. | Feed-forward symbol synchronizer and methods of operation therefor |
| US6950469B2 (en) | 2001-09-17 | 2005-09-27 | Nokia Corporation | Method for sub-pixel value interpolation |
| CN101448162B (en) | 2001-12-17 | 2013-01-02 | 微软公司 | Method for processing video image |
| US7110459B2 (en) | 2002-04-10 | 2006-09-19 | Microsoft Corporation | Approximate bicubic filter |
| US7190724B2 (en) | 2002-04-12 | 2007-03-13 | Seiko Epson Corporation | Method and apparatus for transform domain video processing |
| JP4120301B2 (en) | 2002-04-25 | 2008-07-16 | ソニー株式会社 | Image processing apparatus and method |
| JP2005532725A (en) | 2002-07-09 | 2005-10-27 | ノキア コーポレイション | Method and system for selecting interpolation filter type in video coding |
| US20040076333A1 (en) | 2002-10-22 | 2004-04-22 | Huipin Zhang | Adaptive interpolation filter system for motion compensated predictive video coding |
| FR2854259B1 (en) | 2003-04-28 | 2005-10-21 | France Telecom | SYSTEM FOR AIDING THE GENERATION OF REQUESTS AND CORRESPONDING METHOD |
| CN101616330B (en) | 2003-07-16 | 2012-07-04 | 三星电子株式会社 | Video encoding/decoding apparatus and method for color image |
| NO319660B1 (en) | 2003-11-17 | 2005-09-05 | Tandberg Telecom As | Procedure for interpolating pixel values |
| NO319629B1 (en) | 2003-11-28 | 2005-09-05 | Tandberg Telecom As | Procedure for correcting interpolated pixel values |
| US7505636B2 (en) | 2004-03-04 | 2009-03-17 | Broadcom Corporation | System and method for two-pass interpolation for quarter-pel motion compensation |
| EP1617672A1 (en) | 2004-07-13 | 2006-01-18 | Matsushita Electric Industrial Co., Ltd. | Motion estimator/compensator including a 16-bit 1/8 pel interpolation filter |
| US7653132B2 (en) | 2004-12-21 | 2010-01-26 | Stmicroelectronics, Inc. | Method and system for fast implementation of subpixel interpolation |
| US7941006B2 (en) | 2005-02-25 | 2011-05-10 | Panasonic Corporation | Pixel interpolating method and device |
| US7876833B2 (en) | 2005-04-11 | 2011-01-25 | Sharp Laboratories Of America, Inc. | Method and apparatus for adaptive up-scaling for spatially scalable coding |
| US8208564B2 (en) | 2005-06-24 | 2012-06-26 | Ntt Docomo, Inc. | Method and apparatus for video encoding and decoding using adaptive interpolation |
| KR20070012201A (en) | 2005-07-21 | 2007-01-25 | 엘지전자 주식회사 | Method of encoding and decoding video signal |
| EP1761062A1 (en) | 2005-09-06 | 2007-03-07 | BRITISH TELECOMMUNICATIONS public limited company | Generating and storing image data |
| US7155213B1 (en) | 2005-09-16 | 2006-12-26 | James R. Almeda | Remote control system |
| WO2007032139A1 (en) | 2005-09-16 | 2007-03-22 | Sharp Kabushiki Kaisha | Display system, screen design setting tool, display system program, screen design setting program, and recording medium |
| US7778494B2 (en) | 2005-10-13 | 2010-08-17 | Texas Instruments Incorporated | FIR-based interpolation in advanced video codecs on VLIW processor |
| CN1794821A (en) | 2006-01-11 | 2006-06-28 | 浙江大学 | Method and device of interpolation in grading video compression |
| US20080075165A1 (en) | 2006-09-26 | 2008-03-27 | Nokia Corporation | Adaptive interpolation filters for video coding |
| KR100827093B1 (en) | 2006-10-13 | 2008-05-02 | 삼성전자주식회사 | Image coding method and apparatus |
| US7958177B2 (en) | 2006-11-29 | 2011-06-07 | Arcsoft, Inc. | Method of parallelly filtering input data words to obtain final output data words containing packed half-pel pixels |
| EP1983759A1 (en) | 2007-04-19 | 2008-10-22 | Matsushita Electric Industrial Co., Ltd. | Estimation of separable adaptive interpolation filters for hybrid video coding |
| US8509567B2 (en) | 2007-07-09 | 2013-08-13 | Analog Devices, Inc. | Half pixel interpolator for video motion estimation accelerator |
| CN101453646B (en) | 2007-12-04 | 2012-02-22 | 华为技术有限公司 | Image interpolation method, apparatus and interpolation coefficient obtaining method |
| WO2009088340A1 (en) | 2008-01-08 | 2009-07-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Adaptive filtering |
| KR101456487B1 (en) | 2008-03-04 | 2014-10-31 | 삼성전자주식회사 | Method and apparatus for encoding and decoding using sub-pixel motion prediction |
| US20090257499A1 (en) | 2008-04-10 | 2009-10-15 | Qualcomm Incorporated | Advanced interpolation techniques for motion compensation in video coding |
| US8971412B2 (en) | 2008-04-10 | 2015-03-03 | Qualcomm Incorporated | Advanced interpolation techniques for motion compensation in video coding |
| US8811484B2 (en) | 2008-07-07 | 2014-08-19 | Qualcomm Incorporated | Video encoding by filter selection |
| US9078007B2 (en) | 2008-10-03 | 2015-07-07 | Qualcomm Incorporated | Digital video coding with interpolation filters and offsets |
| US20110116546A1 (en) | 2009-07-06 | 2011-05-19 | Xun Guo | Single pass adaptive interpolation filter |
| EP2489189A1 (en) | 2009-10-14 | 2012-08-22 | Thomson Licensing | Methods and apparatus for adaptive coding of motion information |
| US20110200108A1 (en) | 2010-02-18 | 2011-08-18 | Qualcomm Incorporated | Chrominance high precision motion filtering for motion interpolation |
| KR101682147B1 (en) | 2010-04-05 | 2016-12-05 | 삼성전자주식회사 | Method and apparatus for interpolation based on transform and inverse transform |
| US9219921B2 (en) | 2010-04-12 | 2015-12-22 | Qualcomm Incorporated | Mixed tap filters |
| US20120008686A1 (en) | 2010-07-06 | 2012-01-12 | Apple Inc. | Motion compensation using vector quantized interpolation filters |
| PL2996335T3 (en) | 2010-09-30 | 2018-02-28 | Samsung Electronics Co., Ltd. | Method for interpolating images by using a smoothing interpolation filter |
| US8792559B2 (en) | 2010-10-26 | 2014-07-29 | Sony Corporation | Method to improve accuracy and reliability of motion estimated with phase correlation |
| US20120134425A1 (en) | 2010-11-29 | 2012-05-31 | Faouzi Kossentini | Method and System for Adaptive Interpolation in Digital Video Coding |
| US9049454B2 (en) | 2011-01-19 | 2015-06-02 | Google Technology Holdings Llc. | High efficiency low complexity interpolation filters |
| US20120224639A1 (en) | 2011-03-03 | 2012-09-06 | General Instrument Corporation | Method for interpolating half pixels and quarter pixels |
| US8437581B2 (en) | 2011-03-04 | 2013-05-07 | General Instrument Corporation | Method and system for interpolating fractional video pixels |
| US20120230407A1 (en) | 2011-03-11 | 2012-09-13 | General Instrument Corporation | Interpolation Filter Selection Using Prediction Index |
| US9036706B2 (en) | 2011-06-22 | 2015-05-19 | Google Inc. | Fractional pixel interpolation filter for video compression |
| WO2012178178A2 (en) | 2011-06-24 | 2012-12-27 | General Instrument Corporation | Selection of phase offsets for interpolation filters for motion compensation |
| MX2013015056A (en) | 2011-07-01 | 2014-06-23 | Motorola Mobility Llc | Joint sub-pixel interpolation filter for temporal prediction. |
| US9538184B2 (en) | 2011-09-14 | 2017-01-03 | Samsung Electronics Co., Ltd. | Method and device for encoding and decoding video |
| EP2777259A2 (en) * | 2011-11-08 | 2014-09-17 | Motorola Mobility LLC | Devices and methods for sample adaptive offset coding and/or signaling |
| JP2013110518A (en) * | 2011-11-18 | 2013-06-06 | Canon Inc | Image coding apparatus, image coding method, and program, and image decoding apparatus, image decoding method, and program |
| US9973751B2 (en) | 2012-08-16 | 2018-05-15 | Vid Scale, Inc. | Slice base skip mode signaling for multiple layer video coding |
| US20140078394A1 (en) | 2012-09-17 | 2014-03-20 | General Instrument Corporation | Selective use of chroma interpolation filters in luma interpolation process |
| CN103067716B (en) * | 2013-01-10 | 2016-06-29 | 华为技术有限公司 | The decoding method of depth image and coding and decoding device |
| US9503732B2 (en) | 2013-04-10 | 2016-11-22 | Arris Enterprises, Inc. | Re-sampling with phase offset adjustment for luma and chroma to select filters in scalable video coding |
-
2015
- 2015-12-15 US US14/969,675 patent/US10009622B1/en active Active
-
2018
- 2018-06-18 US US16/010,833 patent/US20180302643A1/en not_active Abandoned
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150189276A1 (en) * | 2012-07-09 | 2015-07-02 | Nippon Telegraph And Telephone Corporation | Video encoding method and apparatus, video decoding method and apparatus, and programs therefor |
| US20140092999A1 (en) * | 2012-09-28 | 2014-04-03 | Vid Scale, Inc. | Cross-plane filtering for chroma signal enhancement in video coding |
| US20140355671A1 (en) * | 2013-05-30 | 2014-12-04 | Ya-Ti Peng | Bit-rate control for video coding using object-of-interest data |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111147849A (en) * | 2018-11-01 | 2020-05-12 | 联发科技股份有限公司 | Post-processing device and post-processing method |
| US20240169482A1 (en) * | 2022-11-22 | 2024-05-23 | Samsung Electronics Co., Ltd. | Apparatus and method with image resolution upscaling |
Also Published As
| Publication number | Publication date |
|---|---|
| US10009622B1 (en) | 2018-06-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9210432B2 (en) | Lossless inter-frame video coding | |
| US10009622B1 (en) | Video coding with degradation of residuals | |
| US10798408B2 (en) | Last frame motion vector partitioning | |
| US10142628B1 (en) | Hybrid transform in video codecs | |
| US9407915B2 (en) | Lossless video coding with sub-frame level optimal quantization values | |
| US10462472B2 (en) | Motion vector dependent spatial transformation in video coding | |
| US9942568B2 (en) | Hybrid transform scheme for video coding | |
| US9369732B2 (en) | Lossless intra-prediction video coding | |
| US10506240B2 (en) | Smart reordering in recursive block partitioning for advanced intra prediction in video coding | |
| US9131073B1 (en) | Motion estimation aided noise reduction | |
| US10277905B2 (en) | Transform selection for non-baseband signal coding | |
| EP3701722A1 (en) | Same frame motion estimation and compensation | |
| US9510019B2 (en) | Two-step quantization and coding method and apparatus | |
| US11627321B2 (en) | Adaptive coding of prediction modes using probability distributions | |
| US9641843B1 (en) | Video coding using adaptive source variance based partitioning | |
| US20170302965A1 (en) | Adaptive directional loop filter | |
| US9210424B1 (en) | Adaptive prediction block size in video coding | |
| US9681128B1 (en) | Adaptive pre-transform scanning patterns for video and image compression | |
| US10448013B2 (en) | Multi-layer-multi-reference prediction using adaptive temporal filtering | |
| US10491923B2 (en) | Directional deblocking filter | |
| US11051018B2 (en) | Transforms for large video and image blocks |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: GOOGLE INC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MUKHERJEE, DEBARGHA;MILANFAR, PEYMAN;LI, SHUNYAO;SIGNING DATES FROM 20151208 TO 20151215;REEL/FRAME:046211/0311 |
|
| AS | Assignment |
Owner name: GOOGLE LLC, CALIFORNIA Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:GOOGLE INC;GOOGLE LLC;REEL/FRAME:046463/0414 Effective date: 20170929 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |