Tải bản đầy đủ (.pdf) (5 trang)

Biến đổi fourier rời rạc part 7 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (282.48 KB, 5 trang )


135
for(i=0;i<N;i++)
{
fread(buffi,NB1,1,fptri);
for(j=0;j<N;j++)
{
k=j<<1;
xr=buffi[k];
xi=buffi[k+1];
bufft[j]=(float)sqrt((double)(xr*xr+xi*xi));
bufft[j]=(float)log10((double)(1+bufft[j]));
if(bufft[j]>max) max=bufft[j];
if(bufft[j]<min min=bufft[j];
}
fwrite(bufft,NB2,1,fptrt);
}
fclose(fptri);
fseek(fptrt,0,SEEK_SET);
scale=(float)255.0/(max-min);
for(i=0;i<N;i++)
{
fread(bufft,NB2,1,fptrt);
for(j=0;j<N;j++)
buffo[j]=(char)((bufft[j]-min)*scale);
fwrite(buffo,N,1,fptro);
}
fclose(fptro);
fclose(fptrt);
remove("temp.img");
}



Bài tập 6.6 Tính 2D_FFT của " IKRAM.IMG" và hiển thị |H(u,v)| thay
thế cho hiện thị D(u,v). Chú ý dến sự suy giảm phổ ảnh và so sánh với
trờng hợp hiển thị ảnh rút ra bởi chơng trình 6.7.

Bài tập 6.7 Lập một chơng trình 2-D FFT theo các bớc sau:
1. Thuật toán phân chia tần số.
2. Thuật toán giảm lợc đầu vào.
3. Thật toán giảm lợc đầu ra.

136
4. Dùng thuật toán giảm lợc đầu ra thiết kế một bộ lọc 2-D FIR
thông thấp vói D
0
= 0.3, kích thớc 11 11. So sánh ví dụ 2.5 trong
chơng 2.
6.7 Bộ lọc hai chiều dùng FFT
Nếu dùng tích chập để chuyển hàng loạt các phần tử từ miền không gian
sang miền tần số ta nên áp dụng FFT. Phép biến đổi này yêu cầu 2. (N
2
/2).
log
2
N phép nhân phức và 2. N
2
. log
2
N phép cộng phức để thu đợc 2-D
FFT, N
2

phép nhân phức trong miền tần số giữa FFT của điểm ảnh và các
đáp ứng tần số cuả bộ lọc, 2 . (N
2
/2) . log
2
N phép nhân phức cho IFFT. Mặt
khác, một bộ lọc 2-D FIR có kích thớc (2m + 1) (2m + 1) đòi hỏi (2m +
1)
2
N
2
phép nhân để thu đợc ảnh trực tiếp trong miền không gian. Xem xét
một ảnh có kích thớc 512 512 điểm. FFT yêu cầu:
4 4 2 4 4 512 2 9 1
2
2
2 2
( ( / ) log ) ( )N N N
20 triệu phép nhân.
Để đa ra tính toán này chúng ta coi rằng một phép nhân phức thì bằng 4
phép nhân thông thờng, và bộ lọc có pha zero. Phơng pháp không gian áp
dụng cho một bộ lọc có kích thớc 7 7 yêu cầu 7 7 512
2
13 triệu
phép nhân. Nếu kích thớc bộ lọc tăng lên thì phơng pháp phân chia miền
tần số có thể áp dụng. Một bộ lọc có kích thớc 11 11 yêu cầu khoảng 30
triệu phép nhân sẽ chỉ cần khoảng 19 triệu phép nhân khi áp dụng phơng
pháp phân chia miền tần số. Hai phơng pháp này sẽ có cùng một số phép
nhân nếu



22
2
2
N 1) (2m 1) N (2log 4N
Cho một ảnh có kích thớc 512 512 (2m + 1) 9, dễ chứng minh là nếu
kích thớc bộ lọc nhỏ hơn 9 thì ta có thể phơng pháp phân chia không gian.
Tuy nhiên, cần chú ý phơng pháp phân chia tần số cũng yêu cầu ít thời gian
xử lý hơn do số lần truy nhập đĩa giảm xuống. Ưu điểm này đợc tăng lên
khi kích thớc của bộ lọc lớn hơn 9 9. Ưu điểm này sẽ không còn nữa khi
xét đến lỗi wraparound. Để tránh lỗi này ta phải tăng gấp bốn lần kích thớc
của ảnh. Cho một ảnh có kích thớc 512 512 ta cần phải tăng lên 1024
1024. Để tránh các phép tính toán quá lớn khi chú ý rằng h(n
1
, n
2
) của một
bộ lọc khi rút ra IFFT sẽ tăng lên rất nhanh khi n
1
, n
2
tăng lên. Tính chất này

137
càng nổi bật khi mở rộng Fourier chỉ chèn các giá trị zero vào các giá trị
cuối của bộ lọc từ c n n/
1
2
2
2

. Cần nhắc lại là cả đáp ứng tấn số và đáp ứng
xung đợc xem xét khi làm việc với DFT.
Thuộc tính là h(n
1
, n
2
) tăng lên một cách nhanh chóng đợc xem xét khi
lựa chọn phơng án lọc. Không phụ thuộc vào kích thớc của ảnh, đa ra
phép nhân giứa đáp ứng tần số của ảnh và đáp ứng tần số của bộ lọc, và
chúng ta chú ý rằng lỗi wrapapound chỉ xuất hiện ở miền nhỏ nằm ở đờng
bao của ảnh và trong phần lớn trờng hợp lỗi này có thể bỏ qua.
Phơng pháp tần số có thể thực hiện qua các bớc sau:

1. Rút ra 2-D FFT của một ảnh



21
)1)(,(),(
2
1
2
1
nn
nniFFTkkI


2. Nhân I(k
1
, k

2
) với đặc tuyến của bộ lọc, chú ý là đáp ứng tần số có gốc
toạ độ nằm tại (N/2, N/2). Cho ví dụ một bộ lọc thông cao Butterworth
có đặc tuyến nh sau:

2
0
2
2
2
1
2
2
2
1
21
)12(
),(
D
H







Dùng )
2
(

2
11
N
k
N



)
2
(
2
22
N
k
N





Đáp ứng tần số của ảnh lọc có thể rút ra từ
))
2
(
2
),
2
(
2

()()(
212121
N
k
N
N
k
N
HkkIkkG
3. ảnh đã lọc có thể rút ra từ :

21
)1()},({{),(
2121
nn
f
kkGIFFTnni


ở đây có nghĩa là phần thực của phần nằm trong hai dấu ngoặc.

Bài tập 6.8 Viết một chơng trình lọc 2-D trong mặt phẳng tần số. Kiểm
tra chơng trình dùng cùng một đặc tuyến tần số dùng thiết kế bộ lọc FIR
lọc ảnh trong hình 2.3 (chơng 3) và so sánh kết quả.
6.8 Vector biến đổi Fourier
Qua chiến lợc chia để trị ta đạt đợc hiệu suất tính toán trên máy tính
của giải thuật 1-D FFT. Thuật toán FFT vector 2-D sau đâylà cùng một

138
chiến lợc. Giải thuật DFT 2-D đợc xen kẽ với những giải thuật DFT 2-D

nhỏ hơn, cuối cùng chỉ DFT 2-D của phần tử đơn đợc tính. Chúng ta sẽ
kiểm tra vector FFT. Chúng ta có

2211
21
),(),(
2
1
0
1
1
0
21
knkn
N
N
k
N
k
WkkhnnH







ở đây
N
j

N
eW

2

Vì vậy có thể viết lại nh sau:

2211
21
2
2
211
1
2
2
1
2
0
1
1
2
0
1
2
0
2
21
1
2
0

21
)12,2(
)2,2(),(
knkn
N
N
k
N
k
n
N
N
k
knkn
N
N
k
WkkhW
WkkhnnH


















Tơng tự với trờng hợp1-D chúng ta có thể viết

),(),(
),(),(),(
21112110
2101210021
212
1
kkFWkkFW
kkFWkkFnnH
nn
N
n
N
n
N



(6.68a)

),(),(
),(),(),
2

(
21112110
2101210021
212
1
kkFWkkFW
kkFWkkFn
N
nH
nn
N
n
N
n
N



(6.68b)
2211
21
21
2211
21
1
2
2
1
2
0

1
1
2
0
2
2
1
2
0
1
1
2
0
)12,12(
)2,12(
knkn
N
N
k
N
k
nn
N
knkn
N
N
k
N
k
n

N
WkkhW
WkkhW
















139

),(),(
),(),()
2
,(
21112110
2101210021
212
1
kkFWkkFW

kkFWkkF
N
nnH
nn
N
n
N
n
N



(6.68c)

),(),(
),(),()
2
,
2
(
21112110
2101210021
212
1
kkFWkkFW
kkFWkkF
N
n
N
nH

nn
N
n
N
n
N



(6.68d)
Dạng công thức cuối cùng đợc biết đến nh một bớm cơ số (2

2).
Mỗi bớm cần đến ba phép nhân và tám phép cộng, để tính toán một bớc
của giải thuật FFT đòi hỏi N
2
/4 bớm (việc kiểm chứng đợc giành cho độc
giả coi nh là một bài tập). Số bớc cần thiết để thực hiện giải thuật FFT 2-
D là log
2
N, vì vậy số phép nhân cần thực hiện là
Nlog
4
3N
2
2

Với phơng pháp này số hàng-cột cần thiết sẽ nhỏ hơn 25 phần trăm so
với số hàng-cột đợc mô tả trớc đây. Tuy nhiên phơng pháp này sẽ chỉ có
hiệu quả nếu có đủ bộ nhớ hoạt động lu giữ N


N số phức.

Bài tập 6.9
1. Phát triển thuật toán và chơng trình C cho giải thuật phân chia thời
gian 2-D FFT cơ số vector
2. Biến đổi công thức để chia tần số vector FFT 2-D.
3. Phát triển thuật toán giảm lợc đầu vào và đầu ra, viết chơng trình C
cho 2-D FFT cơ số vector.

×