Professional Documents
Culture Documents
de Translacoes
Reginaldo J. Santos
Departamento de Matematica-ICEx
Universidade Federal de Minas Gerais
http://www.mat.ufmg.br/~regi
29 de novembro de 2006
Sumario
1 Convolucao 2
3 Convolucao em Dimensao 2 11
1
2 1 CONVOLUCAO
1 Convolucao
Definimos a convolucao de dois vetores X, Y CN por
N
X 1
ext
(X Y )m = Xmk yk ,
k=0
X Y = circulant(X)Y.
PN 1 N
PN 1
Demonstracao. Escrevendo X = m=0 cm Fm eY = n=0 dn FnN em termos da base de
Fourier temos que
N
X 1 N
X 1
X Y = cm dn (FmN FnN ) (1)
m=0 n=0
Mas,
N 1 N 1 N 1
m(lk) k(nm)+ml k(nm)
i2 nk i2 ml
X X X
(FmN FnN )l = e i2 N e N = e i2 N =e N ei2 N
Assim,
FmN FnN = N mn FmN (2)
FN (X Y ) = N 2 (c0 d0 , . . . , cN 1 dN 1 ).
FN X = N (c0 , . . . , cN 1 ) e FN Y = N (d0 , . . . , dN 1 ),
entao
FN (X Y ) = diag(FN X)FN Y.
1
Aplicando-se (FN )1 = N
(FN ) obtemos
1
X Y = (FN ) diag(FN X)FN Y.
N
Corolario 2. Seja X CN .
1
circulant(X) = (FN ) diag(FN X)FN
N
em que FN e a matriz que define a transformada de Fourier discreta e diag(V ) e a matriz
diagonal cuja diagonal e igual a V . Portanto circulant(X) e diagonalizavel, seus autova-
lores sao as componentes da transformada de Fourier discreta de X com autovetores FmN ,
m = 0, . . . , N 1.
Observacao. Produto matriz circulante por vetor pode ser calculado ao custo de N log N
operacoes usando um algoritmo chamado de Transformada de Fourier Rapida (FFT).
Tambem sistemas em que a matriz e circulante podem ser resolvido ao custo de N log N
operacoes, pois
1
[circulant(X)]1 = (FN ) [diag(FN X)]1 FN
N
em que X = (xN +1 , . . . x1 , x0 , x1 , . . . , xN 1 ).
Usando matrizes a convolucao X C2N 1 e Y CN pode ser escrita como
x0 x1 . . . xN +1 y0
x1 x0 . . . xN +2 y1
X Y = .. .. .. .. .
. . . .
xN 1 xN 2 . . . x0 yN 1
Definimos a matriz de Toeplitz cujas diagonais sao constantes e dadas pelo vetor
X = (xN +1 , . . . x1 , x0 , x1 , . . . , xN 1 )
por
x0 x1 . . . xN +1
x1 x0 . . . xN +2
toeplitz(X) = .. .. .. .
. . .
xN 1 xN 2 . . . x0
Assim a convolucao de X C2N 1 e Y CN pode ser escrita como
X Y = toeplitz(X)Y.
X ext = (X2 , X1 , X2 , X1 ),
entao
X = (X2 , X1 )
Assim,
x0 x1 . . . xN +1 0 xN 1 ... x1
x1 x0 . . . xN +2 xN +1 0 ... x2
.. .. .. .. .. ..
. . . . . .
x xN 2 ... x0 x1 x2 ... 0
circulant(X) = N 1
0 xN 1 ... x1 x0 x1 . . . xN +1
x 0 ... x2 x1 x0 . . . xN +2
N +1
.
.. .. .. .. .. ..
. . . . .
x1 x2 ... 0 xN 1 xN 2 ... x0
T S
= ,
S T
(b) Defina
X = (X2 , X1 ) C2N e Y = (Y, 0) C2N .
M 1
kL X kL mL
f = cm para k (3)
MN m=0
MN M
Para encontrarmos c0 , . . . , cM 1 precisamos resolver o sistema linear AX = B, em que
c0
kL mL kL
A= , B= f e X = ... .
MN M rM N k
cM 1
N 1
MX
kL (k m)L
f = cmN ,
MN m=0
MN
em que
se m = m N
c m ,
cmN =
0, caso contrario.
Observe que a matriz A e uma submatriz da matriz
kL
toeplitz .
MN k=M N,...,M N
que e equivalente a resolver o sistema de equacoes normais (ver por exemplo [3])
At AX = At B
Se o sistema for grande podemos usar um metodo iterativo. Um metodo que e bastante
rapido e Gradientes Conjugados para o problema de quadrados mnimos min ||AX B||
que pode ser encontrado por exemplo em [1]:
se m = m N
ext xm ,
Xm =
0, caso contrario.
que satisfaz
1 1 1
f (2 ), f (4 ), f (8 )) = (2 3, 2 + 2 3, 2 2 3).
3 3 3
Neste caso = {2, 4, 8}. Assim a matriz A e dada pelos elementos das linhas 3, 5 e 9 e
das colunas 1, 4 e 7 da matriz
2 31 10 1 4 1
0 0 0 0
3 54 27 6 81 162
31 2 31 10 1 4 1
0 0 0
54 3 54 27 6 81 162
10 31 2 31 10 1 4 1
27 54 3 54 27 6 81 162
0 0
1 10 31 2 31 10 1 4 1
6 27 54 3 54 27 6 81 162
0
4 1 10 31 2 31 10 1 4 1
81 6 27 54 3 54 27 6 81 162
1 4 1 10 31 2 31 10 1 4
162 81 6 27 54 3 54 27 6 81
1 4 1 10 31 2 31 10 1
0
162 81 6 27 54 3 54 27 6
1 4 1 10 31 2 31 10
0 0
162 81 6 27 54 3 54 27
1 4 1 10 31 2 31
0 0 0
162 81 6 27 54 3 54
1 4 1 10 31 2
0 0 0 0 162 81 6 27 54 3
cuja solucao e
c0 10.4022
c1 = 13.1042
c2 4.1715
8
y
0
t
6
0.5 0 0.5 1 1.5 2 2.5 3
3 Convolucao em Dimensao 2
Definimos a convolucao de duas matrizes X, Y , N1 N2 , por
N
X 1 1 N
X 2 1
ext
(X Y )mn = X(mm )(nn ) ym n ,
m =0 n =0
em que
C0 CN1 1 . . . C1
C1 C0 . . . C2
bccb(X) = .. .. .. e
. . .
CN1 1 CN1 2 . . . C0
xk0 xk(N2 1) . . . xk1
xk1 xk0 . . . xk2
Ck = circulant(xk,. ) = .. .. ..
. . .
xk(N2 1) xk(N2 2) . . . xk0
A matriz bccb(X) e chamada matriz circulante em blocos com blocos circulan-
tes (BCCB).
Demonstracao. Escrevendo
N
X 1 1 N
X 2 1 N
X 1 1 N
X 2 1
vet(X) = N1 N2
cmn Fmn e vet(Y ) = dm n FmN1nN
2
m=0 n=0 m =0 n =0
vet(X Y ) = N1 N2
cmn dm n (Fmn FmN1nN
2
) (4)
m=0 n=0 m =0 n =0
Mas,
N 1 1 N 2 1
m(kk ) n(ll )
m k
i2 + N i2 + nN l
X X
N1 N2
(Fmn FmN1nN
2
)kl = e N1 2 e N1 2
k =0 l =0
N 1 1 N 2 1
k (m m) l (n n)
mk nl
i2 +N i2 + N
X X
= e N1 2 e N1 2
k =0 l =0
Assim,
N1 N2
Fmn FmN1nN
2 N1 N2
= N1 N2 mm nn Fmn (5)
Substituindo-se (5) em (4) obtemos
N
X 1 1 N
X 2 1
N1 N2
X Y = N1 N2 cmn dmn Fmn .
m=0 n=0
entao
1
bccb(X) = (FN1 FN2 )t diag((FN1 FN2 ) vet(X))(FN1 FN2 ).
N1 N2
Observacao. Produto matriz BCCB por vetor pode ser calculado ao custo de
N1 N2 log(N1 N2 ) operacoes usando FFT. Tambem sistemas em que a matriz e BCCB
podem ser resolvido ao custo de N1 N2 log(N1 N2 ) operacoes, pois
1
(bccb(X))1 = (FN1 FN2 )t [diag((FN1 FN2 ) vet(X))]1 (FN1 FN2 ).
N1 N2
em que
T0 T1 . . . T1N1
T1 T0 . . . T2N1
bttb(X) = .. .. .. e
. . .
TN1 1 TN1 2 . . . T0
xk0 xk(1) . . . xk(1N2 )
xk1 xk0 . . . xk(2N2 )
Tk = toeplitz(xk,. ) = .. .. ..
. . .
xk(N2 1) xk(N2 2) . . . xk0
A matriz bttb(X) e chamada matriz Toeplitz em blocos com blocos Toeplitz
(BTTB).
Vamos completar a matriz X com elementos quaisquer (por exemplo zeros) acima e a
esquerda de forma a obter uma matriz 2N1 2N2 e vamos dividi-la em quatro submatrizes
de mesmo tamanho:
0 0 X11 X12
= ,
0 X 2N1 2N2
X21 X22
Vamos estender a matriz acima de forma que seja periodica da seguinte forma
X22 X21 X22 X21
X12 X11 X12 X11
X ext =
X22 X21 X22 X21
X12 X11 X12 X11
(a) Complete a matriz X com elementos quaisquer (por exemplo zeros) acima e a es-
querda de forma a obter uma matriz 2N1 2N2 e divida-a em quatro submatrizes
de mesmo tamanho:
0 0 X11 X12
= ,
0 X 2N1 2N2
X21 X22
(b) Defina
X22 X21 Y 0
X = e Y = .
X12 X11 0 0 2N1 2N2
para a1 , a2 inteiros positivos e (x, y) uma funcao dada. Vamos supor que temos uma
amostra nao uniforme da funcao f
{(0, 0), (0, 1), . . . , (0, N2 1), . . . , (N1 1, 0), . . . , (N1 1, N2 1)} .
X = vet(cmn ) RM1 M2 .
Podemos escrever (6) da seguinte forma
M 1 1 M 2 1
X X xk m yk n
f (xk , yk ) = cmna1 a2 , para k = 1, . . . , r
m=0 n=0
a1 a2
em que
se m = a1 m , n = a2 n
c m n ,
cmna1 a2 =
0, caso contrario.
Observe que a matriz A e uma submatriz de
m n
bttb ,
a1 a2 m=N1 ,...,N1 ,n=N2 ,...,N2
que e equivalente a resolver o sistema de equacoes normais (ver por exemplo [3])
At AX = At B
Este e um sistema grande (para uma imagem de 512 512 com banda M1 = 256 e
M2 = 256 com uma amostra de 61 % dos seus pixels a matriz A e de 158860 65536).
Por isso para resolve-lo precisamos usar um metodo iterativo. Um metodo que e bastante
rapido e Gradientes Conjugados para o problema de quadrados mnimos min ||AX B||
que escrevemos na pagina 8.
Os produtos AX e At Y podem ser calculados de maneira eficiente como a seguir. Para
calcular o produto AX procedemos da seguinte forma:
(a) Seja X = vet(xmn ). Defina X ext por
se m = h1 m , n = h2 n
ext xm n ,
Xmn =
0, caso contrario.
(c) Seja X ext este resultado. Toma-se somente as componentes tais que m = a1 m e
n = a2 n .
X = vet(cmn ) R66049 .
Referencias
[1] Ake Bjorck. Numerical Methods for Least Squares Problems. SIAM, Philadelphia,
1996.
[6] C. Vogel. Computational methods for inverse problems. SIAM, Philadelphia, 2002.
Original 39 % Missing
Figura 2: Uma imagem de 512 512 faltando 39 % dos pixels e reconstrucoes com
M1 = M2 = 256 e a1 = a2 = 2 obtidas usando o metodo iterativo Gradientes Conjugados.
Sistema 158860 65536.