0% found this document useful (0 votes)
126 views7 pages

Two Dimensional Cyclic Convolution Algorithms With Minimal Multiplicative Complexity

This document reviews algorithms for performing two-dimensional cyclic convolution (CC2D) with minimal computational complexity based on Winograd's Theorem. The algorithms can perform CC2D when the array sizes are powers of two in both dimensions, but the dimensions do not need to be equal. The CC2D operation is split into multiple one-dimensional cyclic convolution stages through a preprocessing phase involving Fourier coefficients. This achieves lower computational complexity than direct computation of the two-dimensional convolution.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
126 views7 pages

Two Dimensional Cyclic Convolution Algorithms With Minimal Multiplicative Complexity

This document reviews algorithms for performing two-dimensional cyclic convolution (CC2D) with minimal computational complexity based on Winograd's Theorem. The algorithms can perform CC2D when the array sizes are powers of two in both dimensions, but the dimensions do not need to be equal. The CC2D operation is split into multiple one-dimensional cyclic convolution stages through a preprocessing phase involving Fourier coefficients. This achieves lower computational complexity than direct computation of the two-dimensional convolution.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd

TWO DIMENSIONAL CYCLIC CONVOLUTION ALGORITHMS WITH

MINIMAL MULTIPLICATIVE COMPLEXITY

Abraham H. Diaz-Perez
Popular University of the Cesar/ Electronic Department, Sabanas Campus, Valledupar-Cesar, Colombia
Email: abraham.diaz@gmail.com

Domingo Rodriguez
University of Puerto Rico/ Electrical and Computer Engineering Department, Mayagüez PR. 00681-9042
E-mail: domingo@ece.uprm.edu

ABSTRACT 2. THEORETICAL FRAMEWORK


This document reviews an alternative manner to obtain
the two dimensional cyclic convolution (CC2D) with The theoretical framework for this paper is based on the
minimal mathematical complexity of computations previous work [3], which shows how the proposed
according to Winograd’s Theorem. The algorithms are algorithms are applied to the one dimensional cyclic
useful for CC2D with restriction that the size of the arrays convolution problem. Our suggest to the reader, is to do a
are required to be a power of two in both of the two review of the theoretical framework showed there,
dimensions, but their length (in each dimension) not specially the topics of Cyclic Convolution, Winograd’s
necessarily equal. In the development was obtained a Minimal Complexity Theorem, and the CRT. This
manner to split the CC2D in several one-dimensional document is focused in how to apply the same algorithms
cyclic convolution stages through a preprocessing phase demonstrated in [3] for the CC2D problem.
that involve Fourier coefficients.
2.1 The Two Dimensional Cyclic Convolution (CC2D).
KEYWORDS
Two Dimensional Cyclic Convolution, Fast Fourier The CC2D of two signals is given by:
Transform, Circulant Matrix by Block with Circulant N1 1 N 2 1

blocks, Winorad’s Theorem, Chinese Remainder y[n1 , n2 ]    x[ j, k ]  h  n  j 


j 0 k 0
1 N1 ,  n2  k  N 2  or
Theorem. (1)
N1 1 N 2 1
y[n1 , n2 ]    h[ j, k ]  x  n  j 
j 0 k 0
1 N1 ,  n2  k  N 2 
1. INTRODUCTION For which n1=0,1,2,…,N1-1; n2=0,1,2,…,N2-1, where N1
and N2 are the lengths of the signals in each one of the
In the applications of image/video processing and coding, two dimensions, and the operator P denotes P modulo
the computation of two-dimensional linear convolutions N
N. Through the rest of this work, N1 and N2 are considered
have a considerable importance [1]. For instance, in the as a power of 2.
well-known sub band image coding scheme, a full-band
image is split into sub bands through a two dimensional 2.2 Matrix Representation of the Two Dimensional
filter bank before the encoding operations [2]. The Cyclic Convolution.
technique in style for computing two dimensional linear
convolutions is to convert this into a CC2D, and utilize The matrix representation of the CC2D permits two
fast transform algorithms to compute the CC2D. In this formulations depending if the two dimensional array that
work are depicted fast algorithms to compute CC2D that represents every signal is expressed in a column-vector
are based on the previous work [3]. Here, are summarized arrangement using the “column-major” or “row major”
the main properties of the CC2D when it is represented representation. This is highlighted in the following
through of the multiplication of a circulant matrix by example:
blocks with circulant blocks with a vector [4]. This work Consider the two dimensional cyclic convolution in
uses the Winograd’s theorem and the Chinese Remainder
Theorem (CRT) to obtain the minimum number of the linear space 2 ( Z 2  Z 4 ) , in other words, it is
multiplications of our algorithm. The unique restriction in N1  21  2; N 2  22  4 :
the use of the current algorithm is that the signals must be
a power of 2 in both dimensions.
 x 00 x 01 x 02 x 03  h00 h01 h02 h03  
N 2 1 N1 1

x
 x10 x11 x12 x13 
 ; h 
 h10 h11 h12 h13 
X [k1 , k 2 ]     x[n , n ]W 1 2
k1n1
N1
k n
 WN 22 2

n2  0 n1  0 
1) “Column major representation”
(4)
This occurs when the two dimensional array is organized
in a column vector by means of the columns of the array. j 2
Where WN  exp( ) . In [4] is exposed that the
The matrix representation of CC2D in the column major N
representation for the example above is: last formulation can be represented as:
 y 00   x 00 x10 x 03 x13 x 02 x12 x 01 x11  h00  X[k1 ,k 2 ]= ( FN 2  ( FN1  x[n1 ,n2 ])T ) T or
 y  x x 00 x13 x 03 x12 x 02 x 01 x11   h10 
 10   10 X[k1 ,k 2 ]= FN1  ( FN 2  x[n1 ,n2 ] T ) T
 y 01   x 01 x11 x 00 x10 x 03 x13 x 02 x12   h01  (5)
      Where the upper script ( )T denotes the matrix transpose,
 y11    x11 x 01 x10 x 00 x13 x 03 x12 x 02   h11 
 FN1 and FN2 are the Fourier matrix of dimensions N1 and
 y 02   x 02 x12 x 01 x11 x 00 x10 x 03 x13  h02  N2 respectively, and x[n1,n2] denotes the two dimensional
      array.
 y12   x12 x 02 x11 x 01 x10 x 00 x13 x 03   h12 
 y  x x13 x 02 x12 x 01 x11 x 00 x10   h03  2.3 The Two Dimensional Inverse Discrete Fourier
 03   03    Transform (IDFT2)
 y13   x13 x 03 x12 x 02 x11 x 01 x10 x 00   h13  The IDFT2, is given by:
(2) 1 
N 2 1 N1 1

x[n1 , n 2 ] 
N1 N 2
  
k 2  0  k1  0
X [ k 1 , k 2 ]
W  k1n1
N1
k n
 WN2 2 2
2) “Row major representation” 
This occurs when the two dimensional array is organized
(6)
in a row vector by means of the rows of the array. The
This formulation can be represented in matrix form as:
matrix representation of the two CC2D in the row major
representation for the example in consideration is: x[n1,n2 ]=FN11  ( FN21  X[k1,k 2 ] T )T
 y 00   x 00 x 03 x 02 x 01 x10 x13 x12 x11  h00  or alternatively: (7)
 y  x x 00 x 03 x 02 x11 x10 x13 x12   h01  x[n1,n2 ]=( FN21  ( FN11  X[k1,k2 ] )T )T
 01   01 Where the upper script ( )T denotes the transposing
 y 02   x 02 x 01 x 00 x 03 x12 x11 x10 x13  h02 
      matrix and FN11 and FN21 are the Inverse Fourier
 y 03    x 03 x 02 x 01 x 00 x13 x12 x11 x10   h03 
 matrix of dimensions N1 and N2 respectively. In the next
 y10   x10 x13 x12 x11 x 00 x 03 x 02 x 01   h10  section, we will to show that algorithms for the CC2D
      with minimal multiplicative complexity, implicitly
 y11   x11 x10 x13 x12 x 01 x 00 x 03 x 02   h11  involve the use of the DFT2, and the IDFT2.
 y  x x11 x10 x13 x 02 x 01 x 00 x 03   h12 
 12   12    3. ALGORITHM DEVELOPMENT
 y13   x13 x12 x11 x10 x 03 x 02 x 01 x 00   h13 
(3) The simplest CC2D occurs when the two arrays to
The CC2D when is expressed in the “column major” convolve have dimensions N1  2 by N 2  2 . For
or “row major” representations results in a multiplication e.g., be y  X  h , the matrix form in column major
of a circulant matrix by blocks with circulant blocks by a representation of this CC2D is:
vector [4], [5]. Later, in the algorithm development, it
will be illustrated that depending of the array dimensions  y 00   x 00 x10 x 01 x11  h00 
one representation could be more adequate in our  y  x x 00 x11 x 01   h10 
algorithm, in terms of number of processors. However  10    10  (8)
both of them representations will have the same minimal  y 01   x 01 x11 x 00 x10   h01 
number of calculation steps.      
 y11   x11 x 01 x10 x 00   h11 
2.3 The Two Dimensional Discrete Fourier Transform The straightforward computation is done through 16
(DFT2) multiplications and 12 sums. We can represent the matrix
The DFT2, is given by: X and the vector h as:
X X2  h   X1h1  X 2h 2 
X 1  , h   1  , then; y  X  h  X h  X h 
X 2 X1  h 2   2 1 1 2
Winograd [6], [7] provide the following 1 x
'
x3'  h2'  m'3  m'4 
algorithm, which uses only 4 multiplications m 2   2'  .    , where :
and 24 sums: 2  x3 x'2   h3'   m'3 m'4 
(14)
 y   X X 2   h1  m 1  m 2 
y   1   1  .     , where(9)
: 1 1
y 2   X 2 X1  h 2  m 1  m 2  m' 3  ( x' 2  x'3 )(h' 2  h'3 ); m' 4  ( x ' 2  x'3 )(h' 2  h'3 )
2 2
1 1
m1  (X1  X 2 )(h1  h 2 ); m 2  (X1  X 2 )(h 1  h2 )
(10) The vectors sums to calculate the general
2 2 results are:
are found by:
The vectors m1 and m 2
y  m  m 2 
For m 1 the following representation can be used : y   0   1  , calling :
 y 1  m 1  m 2 
 x 0'x1'   x 00  x 01 x10  x11  h0'  h00  h01 
 ' ' 
 x  x  , then  '     x0''  1  x0' x1'  h0'   x2''  1  x2' x3'  h2' 
 x1 x 0   10 11 x 00  x 01   h1   h10  h11  1  ''    '
m     2  ''    '
. ; m  .
'  '
;
 x1  2  x1 x'0   h1'  x
 3 2 x x
 3 2  3 h
here we have 4 sums.
(11)  x0  x2 
'' ''
(15)
 '' '' 
y  m  m 2   x1  x3 
Now, we multiply to obtain m 1 y   0   1   ''
 y 1  m1  m 2   x0  x2 
''

1  x0' x1'  h0'   '' '' 


m1   .   x1  x3 
2  x1' x0'   h1' 
This is computed through 4 additional sums.
This last equation has the same properties The constants employed in this algorithm are the
than (10), with variables instead of vectors, thus, roots of unit of the polynomials u N1  1 and u N 2  1 in
it can be computed using 2 multiplications and 6 1
sums as: this case u 2  1 twice, it is 1 and -1, and the value
2
1  x0' x1'  h0'  m'1  m'2  is used two times, this can be replaced by
m1   '  .    , where : 1 1 1 1 1
2  x1 x'0   h1'   m'1 m'2      . The figure 2 shows the algorithm
(12) N1 N 2 2 2 4
signal flow diagram with a numerical example:
1 1
m'1  ( x '0  x '1 )(h'0  h'1 ); m' 2  ( x '0  x '1 )(h' 0  h'1 )
2 2
In the algorithm complexity we cannot take into
1
consideration the products by , 1 and 1 . These
2
are considered elements of our field of constants or
ground set G , that will be in the remain the field
of the complex numbers [7], [8].
For m 2 the following representation can be used :
 x '2 x3'   x 00  x 01
x10  x11  h2'  h00  h01  Figure 1. Signal flow diagram for CC2D, column major
 '  , then  '
 x3 x 00  x 01 
x '2   x10  x11

 h3   h10  h11  representation N1  2 by N 2  2 .
here we have 4 additional sums. The blocks in blue, in the pre-multiplication stages
(13)
correspond to FN 2  x[n1,n2 ] T and
Now, we multiply to obtain m 2
FN 2  h[n1,n2 ] T . The yellow ones in the same stage
1  x x  h 
' ' '
are from :
m2 

2
 . 
3 2
'
2  x x  h  ' ' X[k1,k 2 ]=FN 1  ( FN 2  x[n1,n2 ] T )T and
3 2 3

This last equation has the same properties H[k1,k 2 ]= FN 1  ( FN 2  h[n1,n2 ] ) . T T

than (10), thus, it can be computed using 2 After the multiplication stage, the inverse process is
multiplications and 6 sums as: done, it is:
For m 1 the following representation can be used :
1 1
y[n1,n2 ]= ( F N2 ( F N1  ( X[k1,k2 ]  H[k1,k 2 ] ) ) )
T T
 x 0 x3 x 2 x1   x 00  x 01 x30  x31 x 20  x 21 x10  x11 
, x x x3 x 2   x10  x11 x 00  x 01 x30  x31 x 20  x 21 

where the operator “ ” denotes the Haddamard product.  1 0  , the
The next example has dimensions N1  4, N 2  2  x 2 x1 x 0 x 3   x 20  x 21 x10  x11 x 00  x 01 x 30  x31 
   
, in column major representation it is:  x3 x2 x1 x 0   x30  x31 x 20  x 21 x10  x11 x 00  x 01 
 y 00   x00 x30 x 20 x10 x01 x31 x 21 x11  h00   h0   h00  h01   x0 x3 x2
 y   x x x x x x x x  h  h  h  h  
 10   10 00 30 20 11 01 31 21   10   1  10 11  1 x x x x
 y 20   x 20 x10 x00 x30 x 21 x11 x 01 x31  h20  Total, 8 sums. Then m1   1 0 3
h2  h20  h21  2  x2 x1 x0 x
          
 y 30    x30 x 20 x10 x 00 x31 x 21 x11 x01    h30 (16)  h3   h30  h31   x3 x2 x1 x
 y 01   x01 x31 x 21 x11 x 00 x30 x 20 x10   h01 
     
 y11   x11 x 01 x31 x 21 x10 x00 x30 x 20   h11  For m 2 the next representation can be used :
 y   x x x x x x x x  h   x0 ' x3 ' x2 ' x1 '   x00  x01 x30  x31 x20  x21 x10 
 21   21 11 01 31 20 10 00 30   21  x '
 y 31   x31 x 21 x11 x 01 x30 x 20 x10 x00   h31   1 x0 ' x3 ' x2 '  x10  x11 x00  x01 x30  x31 x20 

The matrix X and the vector h can be  x2 ' x1 ' x0 ' x3 '  x20  x21 x10  x11 x00  x01 x30 
represented as:   
 x3 ' x2 ' x1 ' x0 '  x30  x31 x20  x21 x10  x11 x00 
 X h  X 2h 2 
y  Xh   1 1  , where then
 X 2h1  X1h 2   h0   h00  h01   x0 ' x3 '
 x00 x30 x20 x10   h00  h  h 
 h11  
 1    10 1  x1 ' x0 '
x x00 x30 x20   h  Total, 8 sums. Then, m 2 
X1   10
, and h1   10 , h2  h20  h21  2  x2 ' x1 '
 x20 x10 x00 x30  h20      
 h3   h30  h31   x3 ' x2 '
   
 x30 x20 x10 x00   h30  The representations for m1 and m 2 have the same
properties, even more, they correspond to the one-
 x01 x31 x21 x11   h01  dimensional cyclic convolution operation of size 4, thus,
x x01 x31 
x21  h  it can be computed using the algorithms showed in the
X 2   11 , and h 2   11 , previous work [3]. Assuming the general form for m1 and
 x21 x11 x01 x31  h21  m2 as:
   
 x31 x21 x11 x01   h31   x0 x3 x2 x1  h0 
The algorithm showed in (9) is used to calculate x x0 x3 x2   h1 
vector y : y  X.h   1 . , (17)
 x2 x1 x0 x3  h2 
 y   X X 2   h1  m 1  m 2    
y   1   1  .     , where :
y 2   X 2 X1  h 2  m 1  m 2   x3 x2 x1 x0   h3 
1 1 We can represent the matrix X and the vector h as:
m1  (X1  X 2 )(h1  h 2 ); m 2  (X1  X 2 )(h1  h 2 ) X X1  h 0 
2 2 X 0  , and h    , then
The vectors m1 and m 2 are found by:  X1 X0  h1 
 X h  X1h1 
y  Xh   0 0 
 X 0h1  X1h 0 
We can use the same algorithm employed in (9) to
calculate vector y .
y   X X 1  h 0  n 1  n 2 
y   0   0  .     , where :
 y 1   X 1 X 0   h 1  n 1  n 2 
1 1
n 1  (X 0  X 1 )(h 0  h 1 ); n 2  (X 0  X 1 )(h 0  h 1 )
2 2
The vectors n1 and n2 are found by: simultaneously. The constants employed in the whole
For n1 we will call algorithm are the roots of unit of the polynomials

 x'0 x1'   x0  x1 x3  x1  h0'  h0  h2  u N1  1 and u N 2  1 in our case u 4  1 and u 2  1 ,


 ' ' 
 , then  '    1
 x1 x0   x1  x3 x0  x2   h1   h1  h3  it is 1 and -1, i and -i , and the constant
2
is used three

here we have 4 sums. 1


times 
, this could be replaced by
Now, we multiply to obtain n1 8
1 1 1 1 1
1  x0 x'2  h0' 
'
    .
n1    .  N1 N 2 4 2 8
2  x1' x'0   h1' 
It has the same properties than (14), thus, it can be
computed using 2 multiplications and 6 sums. For n2, we
proceed similarly:
 x '2  x3'   x 0  x 2
x3  x1  h2'  h0  h2 
 ' ' 
 , then  ' ,
 x3 x 2   x1  x3 x0  x 2   h3   h1  h3 
here we have 4 additional sums.
(18)
Now, we multiply to obtain n 2
1  x'2  x3'  h2' 
n2   '  . 
2  x3 x'2   h3' 
Winograd, gave us the following minimal
algorithm:
1  x'  x3'  h2'  1  (r1  r2 ) 
n 2   2'  .  ; n 2   , where
2  x3 x'2   h3'  2 (r1  r2 ) / i  (19) Figure 2. Signal flow diagram for CC2D, column major
representation N1  4 by N 2  2 .
1 ' 1
r1  ( x2  ix'3 )(h'2  ih3' ); r2  ( x'2  ix'3 )(h'2  ih3' )
2 2 The blocks in blue, in the pre-multiplication stages
The computation of the matrix sums (X 0  X1 ) , correspond to F2  x[n1,n2 ] T and
and (X0  X1 ) are done using only two sums. The
F2  h[n1,n2 ] T . The yellow ones in the same stage
same occurs with the computation of vectors sums
are from :
(h 0  h1 ) and (h 0  h1 ) . We can observe the
X[k1,k 2 ]=F4  ( F2  x[n1,n2 ] T )T , and
multiplication by the roots 1 , 1 , i and i .
The vectors sums to calculate the general results are: H[k1,k2 ]= F4  ( F2  h[n1,n2 ] T )T .
y  n  n 2  After the multiplication stage, the inverse process is done,
y   0   1  calling : it is,
 y 1  n1  n 2  y[n1,n2 ]= ( F21  ( F41  ( X[k1,k2 ]  H[k1,k 2 ] ) )T )T
x  1 x  h  
'' ' ' '
x , where the operator “ ” denotes the Haddamard
n1     
0
''
0
'
1
'
0
 .
' ; product. Since the generalization is straightforward there
x  2  x
1 1 x 0  h
1  is no need to follow with a detailed description. The
 x0''  x2''  general algorithm uses a field of constants that are always
 ''  the roots of unit of the polynomials u N1  1 and
 x ''  1  x '  x3'  h2'   x1  x3'' 
n 2   2''    2' .  , Then y   '' u N2  1 .
 x3  2  x 3 x 2'   h3'  x0  x2'' 
 '' '' 
 x1  x3  2) “Row major representation”
is computed through 4 additional sums.
It is important to remember that the last operations
(17)-(19), must be done for m1 and m 2
 y00   x00 x01 x30 x31 x02 x12 x10 x11  h00  In a general manner depending of the kind of
 y   x x x x x x x x  h  representation choosed (column or row major) the
following relations are possible:
 01   01 00 31 30 12 02 11 10   01 
1) Column major representation:
 y10   x10 x11 x00 x01 x03 x13 x20 x21   h10 
      X[k1 ,k 2 ]= F N 1  ( FN 2  x[n1 ,n 2 ] T )T ;
 y11    x11 x10 x01 x00 x13 x03 x21 x20    h11 (20) H[k1 ,k 2 ]= FN 1  ( FN 2  h[n1 ,n 2 ] T )T
 y 20   x20 x21 x01 x11 x00 x10 x03 x13  h20 
      
y[n1 ,n 2 ]= FN12  ( FN11  ( X[k1 ,k 2 ]  H[k1 ,k 2 ] ) )T  T

 y 21   x21 x20 x10 x01 x10 x00 x13 x03   h21  2) Row major representation:
 y   x x x11 x x x x x  h 
 30   30 31 12 01 11 00 10
  30  
X[k 1 ,k 2 ]= FN 2  ( FN 1  x[n1 ,n 2 ]) T  T
;
 y31   x31 x30 x x02 x11 x01 x10 x00   h31 
By means of a similar procedure as described above

H[k 1 ,k 2 ]= FN 2  ( FN 1  h[n1 ,n 2 ]) T  T

that is not reproduced for size reasons, we can obtain the y[n1 ,n 2 ]= FN11  ( FN21  ( X[k1 ,k 2 ]  H[k1 ,k 2 ] ) T )T
following signal flow diagram for a row major
representation. The same numerical example of the last A question arises at this point. Which of the two
representation is used in the mapping: representations is the best?
In terms of the number of multiplications both
representations has the same quantity, but if we consider
the number of processors of the same characteristics
required for the operation, in the column major
representation of the example, are necessary 2 identical
processor of dimension 4 for each of the sequences in the
pre-multiplication stage, plus 2 more of the same
dimension in the post multiplication stage.
In the row major representation instead, are
necessary 4 identical processors of dimension 2 for each
of the sequences in the pre-multiplication stage plus 4
more in the post-multiplication stage. It is evidently a
product of the original array dimension. The reader can
compare the representations showed in (2), (3) with those
showed in (16) and (20) to see the difference between
2 ( Z 2  Z 4 ) , it is N1  2, N 2  4 and
2 ( Z 4  Z 2 ) , it is N1  4, N 2  2 .
Figure 3. Signal flow diagram for two dimensional cyclic
Since the generalization is straightforward there is no
convolution, row major representation N1  4 by
need to follow with a detailed description. The general
N2  2 . algorithm uses a field of constants that are always the
roots of unit of polynomials u N1  1 and u N 2  1 , and
The figure 3 shows a new representation for the same
their uses over a signal flow diagram, depends only upon
CC2D in a signal flow diagram. The blue ones in the pre-
the class of representation used, it is row major or column
multiplication stages correspond now to
major representation.
F4  x[n1,n2 ] and F4  h[n1,n2 ] . The yellow We are interested in comparing the present algorithm
ones in the pre- multiplication stage correspond to : with those that uses the “Polynomial Transform”. In our

X[k1,k 2 ]= F2  ( F4  x[n1,n2 ])T 
T
, and case, the array is organized in a row or column major
form and then it is processed by multiplications by the
]=  F  T
H[k1,k 2  ( F4  h[n1,n2 ])T . roots of unit and sums. Then the two “transformed” arrays
2
are multiplied, and at the last stages, the inverse process is
After the multiplication stage, the Two Dimensional
done. In the “Polynomial Transform” , cases, as Fermat
Inverse Discrete Fourier Transform (IDFT2) of the entire
number polynomial transform (FNPT) or Mersenne
process is done, in this representation it is:
number polynomial transform (MNPT) [1], the arrays are
first organized into polynomial forms and then
y[n1,n2 ]= F41  ( F21  ( X[k1,k 2 ]  H[k1,k 2 ] )T )T polynomial division and Fermat Number Transform
, (FNT) or Mersenne Number Transform (MNT), are
where the operator “  ” denotes the Haddamard product. applied to reach the stage of transformation of the
sequences. Then the product of the two “transformed”
sequences is computed. Next the Inverse Fermat Number
Polynomial Transform (IFNPT) or the Inverse Mersenne Rings, IEEE Transactions On Signal Processing, Vol. 43,
Number Polynomial Transform (IMNPT) is applied. Then No. 3, March 1995
at the last stage, it is obtained the desired result of the
CC2D through of the Chinese Remainder Theorem [2] J. W. Woods and S. D. O’Neil, Subband Coding of
(CRT). The present algorithm shows two big advantages Images. IEEE Transactions on Acoustics, Speech, and
with respect to the algorithms that use “Polynomial Signal Processing, Vol. Assp-34, No. 5 , October 1986
Transform”. The first is that in the matrix representation
proposed in this paper it is not necessary to calculate the [3] Abraham H. Diaz-Perez, Domingo Rodriguez, One
polynomials remainders of the sequences. Instead the Dimensional Cyclic Convolution Algorithms with
“Polynomial Transform”, approach uses an algorithm Minimal Multiplicative Complexity, Proceedings, ICASSP
that their mapping to a signal flow diagram depends on 2006, Toulouse, France May 2006.
the values of each element of the arrays; this means the
need of an adaptive processor that makes the process [4] Díaz-Pérez Abraham H., Análisis y Diseño de
difficult to realize in real time. The second advantage is a Algoritmos Para la Computación con Estructuras
consequence of the last sentence, it is, the present Circulantes. Digital Tesis MSc. ECE Dep. UPRM,
algorithm need less memory than the polynomial Mayagüez, PR. May 2004.
transform approach, because it does not need to save
remainders and make reconstruction for every array that [5] J. Davis, Circulants matrices (John Wiley, New York,
will be processed. In other words, the algorithm depicted 1979).
here, follows the technique of computation “in place” and
it is unique for different arrays of the same dimension. [6] S. Winograd, Arithmetic complexity of computations,
For all the reasons stated above, in our case the whole Society for Industrial and Applied Mathematics, 1980.
algorithm complexity is reduced.
[7] M. Heideman, Multiplicative complexity, convolution,
4. CONCLUSION and the DFT (Springer Verlag, New York 1988)
This document shows a novel algorithm for the fast and
[8] J. McClellan and C. Rader, Number Theory in Digital
efficient computation of the CC2D with minimal
Signal Processing. Englewood Cliffs, NJ: Prentice Hall
mathematical complexity, based on the product of a
1979.
circulant matrix by blocks with circulant blocks by a
vector, and the use of the Chinese Remainder Theorem.
The principal goal was to obtain a recursive algorithm,
easy to implement, with the comparative advantage over
the algorithms that uses the polynomial transform
approach that the present algorithm does not require to
realize the polynomial divisions by the roots of unit, in
order to obtain less number of multiplications.
This work changes the conceptual framework of the
computation of the CC2D using the FFT and locates it in
a structure of minimum mathematical complexity,
changing the sense to such procedures, which constitutes
itself in a shift of paradigm. The algorithm obtained is
limited to sequences with size a power of two in both
dimensions, but their length (in each dimension) are not
necessarily equal.

5. ACKNOWLEDGEMENTS

The author wants to express his gratitude to the Dr.


Shmuel Winograd for his suggest in the algorithm
development and to my brother-in-law Scott Hardy by his
help in the manuscript correction.

6. REFERENCES

[1] Xiaonong Ran and K. J. Ray Liu, Fast Algorithms for


2-D Circular Convolutions and Number Theoretic
Transforms Based on Polynomial Transforms Over Finite

You might also like