Tính 1024 điểm trong phổ tần số dùng chương trình giảm lược đầu vào FFT.. Bây giờ tính FFT scủa dãy dùng chương trình FFT phân chia tần số không giảm lược.. Giải thuật phân chia miền thờ
Trang 1Hình 6.8 Lưu đồ thuật toán giảm lược đầu vào, N=4
for(iter=(m_output-m_input);iter<m_output;iter++)
{
for(j=0; j<N_output; j+=incr)
{
i=j+ip ;
Tr=xr [i];
Ti =xi [i] ;
xr[i]=xr[j]-Tr;
xi[i]=xi[j]-Ti;
xr[j]=xr[j]+Tr;
xi[j]=xi[j]+Ti;
}
for(k=l; k<ip; k++)
{
l=k*kk-1;
for(j=k; j<N_output; j+=incr)
{
Trang 2xi[j]=Ti ;
Tr=diffr*wr[l]-diffi*wi[l];
Ti=diffr*wi[l]+diffi*wr[l];
xr[i]=Tr;
xi[i]=Ti;
}
}
kk<<=l;
ip>>=l;
incr>>=l;
}
}
Bài tập 6.3
1.Cho dãy đầu vào :
x(k) = 1 k = 0,1,2, , 31
x(k) = 0 các trường hợp còn lại
Tính 1024 điểm trong phổ tần số dùng chương trình giảm lược đầu vào FFT
2 Thêm các giá trị 0 vào dãy để làm cho chiều dài dãy thành 1024 Bây giờ tính FFT scủa dãy dùng chương trình FFT phân chia tần số không giảm lược So sánh thời gian xử lý của phần 1 và 2
Thuật toán FFT giảm lược đầu ra Giải thuật phân chia miền thời gian
thì thích hợp cho thuật toán giảm lược đầu ra hơn là giải thuật phân chia miền tần số Lý do là đầu ra trong giải thuật phân chia miền thời gian không
phải sắp xếp lại Hình 6.9 giới thiệu trường hợp với M=4 và L=1
Trang 3Hình 6.9 Lưu đồ cho giảm lược đầu ra FFT, N = 4
Chương trình 6.4 FFTOP.C Giảm lược đầu ra FFT
/*****************************
* Program developed by: *
* M.A.Sid-Ahmed *
* ver 1.0 1992 *
* @ 1994 *
0
2
4
6
8
10
12
14
1
3
5
7
9
11
13
15
0
4
8
12
2
6
10
14
1
5
9
13
3
7
11
15
0
8
4
12
2
10
6
14
1
9
5
13
3
11
7
15
0
8
4
12
2
10
6
14
1
9
5
13
3
11
7
15
0
1
W n=0 đến 7
W n=0 đến 3
W n=0 đến 1 W
n=0
Trang 4void FFTP(float *xr, float *xi, float *wr, float *wi,
int m, int N, int m_output, int N_output) {
/* FFT output pruning algorithm using
Decimation-in-time
Note :
1 N=number of input samples
=2 to the power m
N-output = number of output samples =2 to the power motput
2 The input arrays are assumed to be rearranged in bit-reverse order You will need to use routine "bit-reversal" for that purpose
3 The twiddle factors are assumed to be stored in LUT's wr[] and wi[] You will need to use routine LUT for calculating and storing twiddle
factors.*/
int ip,k,kk,l,incr,iter,j,i;
float Tr,Ti;
ip=1;
kk=(N>>1 );
incr=2;
for(iter=0; iter<m_output; iter++)
{
for(j=0; j<N; j+=incr)
{
i=j+ip;
Tr=xr[i];
Ti=xi[i];
xr[i]=xr[i]-Tr;
xi[i]=xi[i]-Ti;
xr[j]=xr[j]+Tr;
xi[j]=xi[j]+Ti;
}
if(iter!=0)
{
for(k=1;k<ip; k++)
Trang 5{
l=k*kk-1 ;
for(j=k; j<N; j+=incr)
{
i =j+ip;
Tr=xr[i]*wr[l]-xi[i]*wi[l];
Ti=xr[i]*wi[l]+xi[i]*wr[l];
xr[i]=xr[j]-Tr;
xi[i]=xi[j]-Ti;
xr[j]=xr[j]+Tr;
xi[j]=xi[j]+Ti;
}
}
}
kk>>=1;
ip<<=1;
incr<<=1;
}
for(iter=m_output; iter<m; iter++)
{
for(j=0; j<N; j+=incr)
{
i=j+ip;
xr[j]=xr[j]+xr[i];
xi[j]=xi[j]+xi[i];
}
for(k=1; k<N_output; k++)
{
l=k*kk-1 ;
for(j=k; j<N; j+=incr)
Trang 6ip<<=1;
incr<<=1;
}
}
Bài tập 6.4 Cho một bộ lọc thông cao Butterword:
2
2 0 ) 1 2 ( 1
1 )
(
ở đây 0 = 0.3, phát triển một chương trình C tính ra 1024 mẫu của đặc tuyến tần số trên các khoảng bằng nhau của tần số từ 0 đến Dùng các mẫu này tính năm mẫu đầu tiên của đáp ứng xung dùng FFT giảm lược
6.4 2-D FFT
Một DFT hai chiều của tín hiệu lấy mẫu hai chiều h(k 1 ,k 2 ) cho bởi
)}
, ( {
) , ( )
, (
2 1
1 0
1 0
) (
/ 2 2 1 2
1
1 2
2 2 1 1
k k h DFT
e k k h n
n H
N k
N k
k n k n N j
ở đây n 1 = 0,1,2 , , N-1
n 2 = 0,1,2, , N-1
Biểu thức j2 /N( k1 n k2)
e trong hai dấu tổng gọi là hạt nhân của phép biến đổi
H(n 1 ,n 2 ), trong trường hợp tổng quát, đầy đủ có thể biểu diễn theo:
H(n 1 , n 2 )A(n 1 , n 2 ) e j (n 1 , n 2 )
Trong không gian ba chiều, A(n 1 ,n 2 ) và (n 1 ,n 2 ) nằm tại vị trí của n 1 và n 2
và gọi là phổ tần số và phổ pha của H(n 1 ,n 2 )
6.4.1 Biến đổi ngược 2-D DFT
Hàm h(k 1 ,k 2 ) là biến đổi ngược của 2-D DFT (IFFT) của H(n 1 ,n 2 ) và được
cho bởi biểu thức
1 0
1 0
) (
/ 2 2 1 2
2 1
1 2
2 2 1 1 )
, (
1 ) , (
N n
N n
k n k n N j e n n H N
k k
Trang 76.4.2 Một số tính chất của 2-D DFT
Chuyển đổi Từ định nghĩa của 2-D DFT và IDFT cho thấy
) ,
( )
,
2 2 1
2 1
b n a n H e
k k
(6.43)
) ( 2 2 1 2
1
2 1
) , ( ) ,
(6.44)
Điều đó có nghĩa là một dịch chuyển pha tuyến tính trong một miền biểu
diễn bằng một dịch chuyển hằng số trong một miền khác Xem xét biểu thức
(6.43), trường hợp đặc biệt khi a = b = N/2
2 1 2
1 2
) , (k1 k2 e j (k k ) h k1 k2 e j k k ) h k1 k2 k k
h Hay là
) 2
, 2 ( )
1 )(
,
n
N n H k
k
Nói cách khác, bằng cách nhân vào mỗi điểm (-1) k 1 k 2 trước khi lấy DFT,
chúng ta sẽ rút ra được một phổ tần số mà điểm tần số (0,0) của nó sẽ nằm
giữa mảng 2-D Biểu thức này rất hữu dụng trong hiển thị phổ tần số, phổ
biên độ và lọc dùng DFT
Từ biểu thức (6.44) chúng ta rút ra kết luận rằng dịch chuyển một hằng số
trong ảnh sẽ không tác động đến phổ biên độ
) (
) (n1 n2 e 2 / .( 1 2 ) H n1 n2
Biểu thức (6.46) cũng quan hệ đến bộ lọc 2-D Xem xét đặc tính của bộ
lọc 2-D cho bởi
H(n1,n2) A(n1,n2)ej2/N.(n1an2b)
ở đây A(n 1 ,n 2 ) là phổ biên độ Nếu một ảnh với phổ tần số cho bởi I(n 1 ,n 2 )
Trang 8do của sự biến dạng này là tất cả các điểm đều phải chịu một sự dịch chuyển
vị trí khác nhau tuỳ theo vị trí của ảnh Tổng quát, ảnh đã được lọc có thể
cho bởi
i f (n 1 - f (n 1 , n 2 ), n 2 - f( n 1 , n 2 ))
ở đây f là hàm dịch chuyển vị trí Chú ý rằng một ảnh biến dạng pha sẽ xuất hiện trên màn hình như một ảnh mờ Tính đối xứng liên hợp và tuần hoàn Biến đổi2-D DFT và IDFT tuần hoàn với chu kỳ N có nghĩa là : N) n N, H(n
N) n , H(n ) n N, H(n ) n , (n 2 1 2 1 2 1 2 1 H (6.48)
và
N) k N, h(k
N) k , h(k ) k N, h(k ) k , h(k 2 1 2 1 2 1 2 1 (6.49)
Biến đổi DFT đối xứng liên hợp khi ) n , (-n * H ) n , H(n 1 2 1 2 (6.50) hoặc
) n , H(-n ) n , H(n 1 2 1 2 (6.51) Quay Nếu chúng ta đặt k 1 và k 2 dưới dạng k 2 r cos sin r k 1 thì h(k 1 , k 2 ) h( rsin , rcos )h(r, ) Và tương tự cho n 1 , n 2
sin n
cos n
1
2
hoặc H(n 1 , n 2 ) H(r, )
từ định nghĩa của DFT chúng ta có thể có
h r( ,0) H( , 0) (6.52)
Trang 9Điều đó có nghĩa là nếu ảnh bị quay đi một góc 0 thì phổ của nó cũng bị quay đi một góc như vậy
Phân phối và chia độ Từ biểu thức (6.1) chúng ta dễ thấy
a h 1 (k 1 , k 2 )b h 2 (k 1 , k 2 )aH 1 (n 1 , n 2 )bH 2 (n 1 , n 2 ) (6.53)
ở đây a,b là những độ chia Cũng như vậy
( 1, 2) 1 ( 1, 2)
b
n a
n H ab bk
ak
h (6.54)
6.4.3 Giá trị trung bình
Mức cường độ sáng trung bình trong một ảnh cho bởi :
h
N
k
N
1
0 1
0 1
1 1
( , ) (6.55) hoặc từ biểu thức (6.1) ta có thể viết
h H( , ) 0 0
Điều này có nghĩa là H(0,0) biểu diễn mức sáng của ảnh
6.4.4 Tích chập và sự tương quan
Tích chập của tín hiệu 2-D h 1 (k 1 ,k 2 ) và h 2 (k 1 ,k 2 ) cho bởi
k N
k
N
( ,1 2) 1( 1, 2) 2( 1 1, 2 2)
0 1
0 1
2 1
Nếu h 1 (k 1 ,k 2 ) được xác định trên miền
k1 0 ,A 1 k1 0 ,B 1
Trang 10) n , (n )H n , (n H ) k , (k h
* ) k , (k
Điều này có nghĩa là, tích chập trong miền không gian biến thành phép
nhân bình thường trong miền tần số Tính chất này có thể dùng cho lọc 2-D
qua DFT Chúng ta cần nhớ lại rằng bạn đã dùng kỹ thuật lọc FIR trong các
chương trước cho chức năng này Khi áp dụng các lọc bộ lọc FIR cho chức
năng lọc bạn cần lấy tín hiệu khoảng cách 2-D đã được biến thành tín hiệu
có chu kỳ trước khi tiến hành lấy DFT Sự không đồng bộ của chu kỳ trong
biến đổi này cũng gây ra lỗi như trong biến đổi 1-D Vì vậy, để tránh trường
hợp này ta cần thêm các số 0 vào cả hai các hàm không gian để cho chúng
có kích thước M N với M A + C - 1 và N B + D - 1
Tương quan hoặc tương quan chéo của tín hiệu 2-D định nghĩa bởi
g n n h k k h n k n k
k N
k
N
( ,1 2) 1( 1, 2) 2( 1 1, 2 2)
0 1
0 1
2 1
(6.58)
Biểu thức này được viết dưới dạng ký hiệu
Tương quan chéo thường được gọi là lọc kết hợp và dùng để phát hiện ra
phần đầu dấu hiệu các vết sắc nổi trên ảnh Nó có thể cho thấy rằng
h k k1( 1, 2) h k k2( 1, 2) H n n1( ,1 2).H n n2( ,1 2) (6.60)
6.5 2-D FFT
Biểu thức cho 2-D DFT có thể dưới dạng
1 1
2
2 2 / 1
0
1 0
/ 2 2 1 2
N k
N k
k n N j
e e
k k h n
n
2
/ 2 1
0
2 1 2
N k
e k k h k
k
với k 1 = 0,1,2, , N-1 Vì vậy mà biểu thức (6.61) có thể viết lại dưới dạng
k
N
( ,1 2) ( 1, 2) . / .
0
1
2
1
1 1
với n 1 =0,1,2, ,N-1