IP Library Granted Patent US 9,990,931
Granted Patent B2
US 9,990,931 · App. 14/460,440 · Granted Jun 5, 2018

Method for coding pulse vectors using statistical properties

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,990,931
App. No.
14/460,440
Granted
Jun 5, 2018
Kind
B2
Abstract

Improved methods for coding an ensemble of pulse vectors utilize statistical models (i.e., probability models) for the ensemble of pulse vectors, to more efficiently code each pulse vector of the ensemble. At least one pulse parameter describing the non-zero pulses of a given pulse vector is coded using the statistical models and the number of non-zero pulse positions for the given pulse vector. In some embodiments, the number of non-zero pulse positions are coded using range coding. The total number of unit magnitude pulses may be coded using conditional (state driven) bitwise arithmetic coding. The non-zero pulse position locations may be coded using adaptive arithmetic coding. The non-zero pulse position magnitudes may be coded using probability-based combinatorial coding, and the corresponding sign information may be coded using bitwise arithmetic coding. Such methods are well suited to coding non-independent-identically-distributed signals, such as coding video information.

Claims (166)

1. A method of coding a video signal, comprising:

receiving, by a transform block, a video signal;

processing, by the transform block, at least a part of the received video signal into a plurality of k quantized pulse vectors (x), each quantized pulse vector x containing integer values representative of a discrete portion of the at least a part of the received video signal, having a vector length n, and a plurality of unit magnitude pulses at non-zero positions (n p ) within the quantized pulse vector x;

determining and coding, by a coding block, the number of non-zero elements of each of the quantized pulse vectors x k ;

generating, by the coding block, a sum of the unit magnitude pulses (m) for each of the quantized pulse vectors x k ;

generating, by the coding block, a set of conditional probabilities over all of the determined quantized pulse vectors x k for the value of m for a given n p for each n p occurring over at least a part of the received video signal;

coding, by the coding block, m for each of the quantized pulse vectors x k based on the generated set of probabilities; and

transmitting to a memory storage device or to a receiving device, the coded value of m and the generated set of probabilities.

2. The method of claim 1 , wherein generating the set of probabilities comprises calculating bitwise probabilities of each bit of m being set to 1 for a given quantized pulse vector x.

3. The method of claim 1 , wherein the at least a part of the received information comprises a frame of video information.

4. The method of claim 3 , wherein the discrete portion of the at least a part of the received video signal comprises a discrete block of video information within the frame of video information.

5. The method of claim 4 , wherein the discrete block of video information is transformed into the quantized signal vector x using a Walsh-Hadamard Transform.

6. The method of claim 1 , wherein generating the sum of m for each of the quantized pulse vectors x k comprises:

m

k

=

n

-

1

i

=

0

x

k

(

i

)

,

0

k

<

N

where m k is the value of m for the k-th vector x and N is the total number of quantized pulse vectors x k.

7. The method of claim 6 , wherein generating the set of probabilities utilizes Binary Arithmetic Coding (BAC).

8. The method of claim 7 , wherein generating the set of probabilities comprises generating BAC conditional probability tables for each corresponding value of n p (k), such that:

P

(

n

p

(

k

)

,

j

)

=

c

1

(

n

p

(

k

)

,

j

)

c

2

(

n

p

(

k

)

)

0

k

<

n

,

0

j

<

N

b

where N b is the maximum number of bits to be coded for m, j is the bit index, m k is the number of unit magnitude pulses for the k-th vector x, c 1 (n p (k),j) is the number of times the j-th bit of the number of pulses m k parameter is set (for a given n p (k)), n p (k) is the number of non-zero positions in x k , and c 2 (n p (k)) is the number of instances in which x k contains n p (k) non-zero positions.

9. The method of claim 8 , wherein a value of m′ k is calculated by providing a pulse quantity offset of m′ k =m k −n p (k).

10. A method of coding an information signal, comprising:

receiving, by a transform block, video information as a stream of frames of video information;

parsing, by the transform block, a frame of video information into discrete blocks of video information;

processing, by the transform block, the discrete blocks of video information for the parsed frame of video information into a plurality of k quantized pulse vectors (x), each quantized pulse vector x containing integer values representative of a given one of the discrete blocks of video information for the parsed frame of video information and having a vector length n and a plurality of unit magnitude pulses at non-zero positions (n p ) within the quantized pulse vector x;

determining and coding, by a coding block, the number of non-zero elements of each of the quantized pulse vectors x k ;

counting, by the coding block, the unit magnitude pulses for each of the quantized pulse vectors x k and generating the sum of unit magnitude pulses (m) therefor;

generating, by the coding block, for the parsed frame a set of probabilities over all of the determined and associated quantized pulse vectors x k for the value of m conditioned on n p as a conditional probability P((m)|n p ) for each n p occurring on a per frame basis and for the parsed frame;

coding, by the coding block, m for each of the quantized pulse vectors x k based on the generated set of probabilities; and

transmitting to a memory storage device or to a receiving device, the coded value of m and the generated set of probabilities.

11. The method of claim 10 , wherein a value of m is calculated by providing a pulse quantity offset of m=m−n p and the conditional probability is P((m−n p )|n p ).

12. The method of claim 9 , wherein generating the set of probabilities comprises generating conditional probability tables for each corresponding value of n p (k) utilizing Binary Arithmetic Coding (BAC), such that:

P

(

n

p

(

k

)

,

j

)

=

c

1

(

n

p

(

k

)

,

j

)

c

2

(

n

p

(

k

)

)

0

k

<

N

,

0

j

<

N

b

where N b is the maximum number of bits to be coded for m, j is the bit index, m k is the number of unit magnitude pulses for the k-th vector x, c 1 (n p (k),j) is the number of times the j-th bit of the number of pulses m k parameter is set (for a given n p (k)), n p (k) is the number of non-zero positions in x k , and c 2 (n p (k)) is the number of instances in which x k contains n p (k) non-zero positions.

13. The method of claim 12 , wherein the probability P(n p (k),j) is calculated with a state machine that discriminates between the probability of a bit j being set in the most significant bits (MSBs) as opposed to in the least significant bits (LSBs), such that the probabilities are calculated differently by calculating the probability for the MSBs in a first state with the most significant bit not set and decrementing j from N b until the j-th bit is set and then switching to a second state and calculating the probability for the remaining bits in the second state.

14. The method of claim 10 , wherein the quantized pulse vectors x k for a given frame of video information comprise an ensemble of quantized pulse vectors x k .

15. A method of coding an information signal, comprising:

receiving, by a transform block, a video signal;

processing, by the transform block, at least a part of the received video signal into a plurality of k quantized pulse vectors (x), each quantized pulse vector x containing integer values representative of a discrete portion of the at least a part of the received video signal and having a vector length n and a plurality of unit magnitude pulses at non-zero positions (n p ) within the quantized pulse vector x;

determining and coding, by an encoder, the number of non-zero elements of each of the quantized pulse vectors x k ;

generating, by the encoder, a sum of the unit magnitude pulses (m) for each of the quantized pulse vectors x k ;

coding, by the encoder, the value of m for a given n p for each of the quantized pulse vectors x k based on the conditional probability P((m)|n p ) for each n p occurring over the at least a part of the received video signal; and

transmitting to a memory storage device or to a receiving device, the coded value of m and the generated set of probabilities.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2015
From: MOTOROLA MOBILITY LLC
To: GOOGLE TECHNOLOGY HOLDINGS LLC
Reel/Frame 035593/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2014
From: MITTAL, UDAR; ASHLEY, JAMES P.
To: MOTOROLA MOBILITY LLC
Reel/Frame 033542/0315 →