Fast method and apparatus for filtering compressed images in the DCT domain
First Claim
1. A filter for a compressed image represented in a discrete cosine transform (DCT) domain and including a plurality of input DCT data blocks organized as:
- ##EQU20## the filter comprising;
a first computational module having a first input for receiving XSE, a second input for receiving XNE, and a third input for receiving XE, the first computational module further including first, second and third vertical matrix memories for storing first (V-), second (V++) and third (V-+) sparse vertical submatrices, respectively, the first computational module also having an output for providing an output z3 that is a predetermined arithmetic combination of the input DCT blocks XSE, XNE, and XE and the sparse vertical submatrices V-, V++, and V-+ ;
a first delay memory having an input coupled to the output of the first computational module for receiving the output Z3 and an output for providing a delayed output Z2, which is the output Z3 delayed by a predetermined period;
a second delay memory having an input coupled to the output of the first memory for receiving the delayed output Z2 and an output for providing a delayed output Z1, which is delayed output Z2 delayed by the predetermined period;
a second computational module having a first input coupled to the output of the first computational module for receiving output Z3, a second input coupled to the output of the first memory for receiving delayed output Z1, and a third input for receiving delayed output Z2, the second computational module further including first, second and third horizontal matrix memories for storing first (H-+), second (H++t) and third (H-+t) sparse horizontal transpose submatrices, respectively, the second computational module also having an output for providing an output Y that is a predetermined arithmetic combination of the outputs Z3, Z1 and Z2, and the sparse horizontal submatrices H-t, H++t, and H-+t,whereby the output Y is a filtered version of the image represented by the input DCT data blocks according to a desired filtering output.
2 Assignments
0 Petitions
Accused Products
Abstract
A method is described for filtering compressed images represented in the discrete-cosine-transform (DCT) domain. The filter includes three sparse, vertical submatrices which are sparse versions of the vertical filter components (VFCs) of a desired filter function that have been combined in such a way as to eliminate many of the non-zero elements. The filter also includes three sparse, horizontal transpose submatrices, which, like the vertical submatrices, are sparse versions of the horizontal filter components of the filter function. The sparseness of these sparse submatrices yields a significant reduction in the number of computations required to filter the image in the DCT domain. To take advantage of this discovery, the input DCT data blocks are "butterflied" to retain the relationship between the input data blocks and the filtered output data blocks as a function of these sparse submatrices. The sparseness of the vertical and horizontal submatrices reduces the number of computations required to filter the image. The sparseness of the DCT data blocks can also be used to further reduce the number of computations required.
33 Citations
38 Claims
-
1. A filter for a compressed image represented in a discrete cosine transform (DCT) domain and including a plurality of input DCT data blocks organized as:
- ##EQU20## the filter comprising;
a first computational module having a first input for receiving XSE, a second input for receiving XNE, and a third input for receiving XE, the first computational module further including first, second and third vertical matrix memories for storing first (V-), second (V++) and third (V-+) sparse vertical submatrices, respectively, the first computational module also having an output for providing an output z3 that is a predetermined arithmetic combination of the input DCT blocks XSE, XNE, and XE and the sparse vertical submatrices V-, V++, and V-+ ;a first delay memory having an input coupled to the output of the first computational module for receiving the output Z3 and an output for providing a delayed output Z2, which is the output Z3 delayed by a predetermined period; a second delay memory having an input coupled to the output of the first memory for receiving the delayed output Z2 and an output for providing a delayed output Z1, which is delayed output Z2 delayed by the predetermined period; a second computational module having a first input coupled to the output of the first computational module for receiving output Z3, a second input coupled to the output of the first memory for receiving delayed output Z1, and a third input for receiving delayed output Z2, the second computational module further including first, second and third horizontal matrix memories for storing first (H-+), second (H++t) and third (H-+t) sparse horizontal transpose submatrices, respectively, the second computational module also having an output for providing an output Y that is a predetermined arithmetic combination of the outputs Z3, Z1 and Z2, and the sparse horizontal submatrices H-t, H++t, and H-+t, whereby the output Y is a filtered version of the image represented by the input DCT data blocks according to a desired filtering output. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
- ##EQU20## the filter comprising;
-
11. A method of filtering a compressed image represented in a discrete cosine transform (DCT) domain and including a plurality of DCT data blocks, the method comprising the steps of:
-
providing a desired filter represented by a vertical component matrix V of a filter matrix and by a transpose horizontal component matrix Ht of the filter matrix, where Ht is a transpose matrix of a horizontal component matrix H, the filter receiving the DCT data blocks as input data and producing filtered data as output represented by an output block Y in the DCT domain; partitioning the vertical matrix V into vertical submatrices; combining the vertical submatrices to form sparse vertical submatrices; partitioning the transpose matrix Ht into horizontal transpose submatrices; combining the horizontal transpose submatrices to form sparse horizontal transpose submatrices; combining the DCT data blocks in a predetermined manner to form butterflied DCT data blocks so that the output block Y is expressed only in terms of the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to a reduced expression; and combining the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to the reduced expression to produced the output block Y, wherein the number of operations required to perform this step is less than required to filter the image in the spatial domain. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
-
18. A method of filtering a compressed image according to claim 17 wherein the step of combining the horizontal transpose submatrices to form sparse horizontal transpose submatrices includes the step of combining the three horizontal transpose submatrices H1t, H2t, and H3t to form three sparse horizontal transpose submatrices H++t, H-+t, and H-t,
wherein ##EQU33## -
19. A method of filtering a compressed image according to claim 18 wherein the step of combining the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to the reduced expression to produced the filtered to data Y includes the step of computing Z3 according to the following formula:
space="preserve" listing-type="equation">Z.sub.3 =V.sub.++ X.sub.E.sup.++ +V.sub.-+ X.sub.E.sup.+- +V.sub.- X.sub.E.sup.-.
-
20. A method of filtering a compressed image according to claim 19 wherein the step of combining the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to the reduced expression to produced the filtered to data Y includes the steps of:
-
storing Z3 for one period to produce Z2 ; and storing Z2 for one period to produce Z1.
-
-
21. A method of filtering a compressed image according to claim 19 wherein the step of combining the DCT data blocks to form butterflied DCT data blocks so that the output block Y is expressed only in terms of the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to a reduced expression includes the steps of:
computing Z- according to the following formula;
space="preserve" listing-type="equation">Z.sub.- =(Z.sub.1 -Z.sub.3),computing Z++ according to the following formula;
##EQU34## and computing Z+- according to the following formula;
##EQU35##
-
22. A method of filtering a compressed image according to claim 21 wherein the step of computing Z++ includes the step of computing Z+ according to the following formula:
- ##EQU36## and computing Z++ according to the following formula;
space="preserve" listing-type="equation">Z.sub.++ =(Z.sub.+ +Z.sub.2).
- ##EQU36## and computing Z++ according to the following formula;
-
23. A method of filtering a compressed image according to claim 21 wherein the step of computing Z+- includes the step of computing Z+ according to the following formula:
- ##EQU37## and computing Z+- according to the following formula;
space="preserve" listing-type="equation">Z.sub.+- =(Z.sub.+ -Z.sub.2).
- ##EQU37## and computing Z+- according to the following formula;
-
24. A method of filtering a compressed image according to claim 21 wherein the step of combining the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to the reduced expression to produced the filtered to data Y includes the step of combining the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to the following formula:
-
space="preserve" listing-type="equation">Y=Z.sub.++ H.sub.-+.sup.t +Z.sub.+.sup.- H.sub.-+.sup.t +Z.sub.- H.sub.-.sup.t.25.
-
-
25. A method of filtering a compressed image according to claim 11 wherein the sparse vertical submatrices include nonzero elements and zero elements and wherein the step of combining the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to the reduced expression to produced the filtered to data Y includes the step of combining the butterflied DCT data blocks, only the nonzero elements of the sparse vertical submatrices, and the sparse horizontal transpose submatrices.
-
26. A method of filtering a compressed image according to claim 11 wherein the sparse horizontal transpose submatrices include nonzero elements and zero elements and wherein the step of combining the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to the reduced expression to produced the filtered to data Y includes the step of combining the butterflied DCT data blocks, sparse vertical submatrices, and only the nonzero elements of the sparse horizontal transpose submatrices.
-
27. A method of filtering a compressed image according to claim 11 wherein the butterflied DCT data blocks include nonzero elements and zero elements and wherein the step of combining the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to the reduced expression to produced the filtered to data Y includes the step of combining only the nonzero elements of the butterflied DCT data blocks, sparse vertical submatrices, and the sparse horizontal transpose submatrices.
-
28. A method of filtering a compressed image according to claim 11 further including the step of storing the sparse vertical submatrices and the sparse horizontal transpose submatrices on a general purpose computer.
-
29. A method of filtering a compressed image according to claim 28 further wherein the steps of combining the DCT data blocks in a predetermined manner to form butterflied DCT data blocks so that the output block Y is expressed only in terms of the butterflied DCT data blocks and combining the butterflied DCT data blocks, the sparse vertical submatrices, and the sparse horizontal transpose submatrices according to the reduced expression to produced the filtered to data Y includes the steps of executing these steps by the general purpose computer programmed according to the reduced expression.
-
-
30. A general purpose computer programmed to filter a spatial domain image that has been compressed and is represented in a discrete cosine transform (DCT) domain, the general purpose computer comprising:
-
a microprocessor; a storage device coupled to the storage device; first (V++), second (V-) and third (V-) sparse vertical submatrices stored on the storage device, wherein each of the sparse vertical submatrices include a predetermined number of zero and nonzero elements; first (H++t), second (H-t) and third (H-t) sparse horizontal transpose submatrices stored on the storage device, wherein each of the sparse horizontal transpose submatrices include a predetermined number of zero and nonzero elements; a compressed image stored on the storage device, the compressed image including a plurality of DCT data blocks organized in columns; computer software stored on the storage device and executable by the microprocessor, the microprocessor performing the following steps under control of the software; (a) fetching a first column of DCT data blocks from the storage device, the first column including DCT data blocks X1, X2 and X3 ;
(b) computing X++ according to the following formula;
##EQU38## (c) computing X+- according to the following formula;
##EQU39## (d) computing X- according to the following formula;
space="preserve" listing-type="equation">X.sub.- =X.sub.1 -X.sub.3,(e) computing Z1 according to the following formula;
space="preserve" listing-type="equation">Z.sub.3 =V.sub.++ X.sub.++ +V.sub.-+ X.sub.+- +V.sub.- X.sub.-,(f) retrieving a variable Z2 ; (g) retrieving a variable Z1 ; (h) computing Z++ according to the following formula;
##EQU40## (i) computing Z+- according to the following formula;
##EQU41## (j) computing Z- according to the following formula;
space="preserve" listing-type="equation">Z.sub.- =Z.sub.1 -Z.sub.3,(k) computing Y according to the following formula;
space="preserve" listing-type="equation">Y=H.sub.++.sup.t Z.sub.++ +H.sub.-+.sup.t Z.sub.+- +H.sub.-.sup.t Z.sub.-,where Y is a filtered version of the spatial domain image represented in the DCT domain, whereby the number of computations required to filter the image in the DCT domain is less than that required to filter the image in the spatial domain. - View Dependent Claims (31, 32, 33, 34, 35, 36, 37, 38)
-
Specification