intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo trình xử lý ảnh y tế Tập 1b P14

Chia sẻ: Cinny Cinny | Ngày: | Loại File: PDF | Số trang:8

108
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Một hệ thống xử lý ảnh cơ bản có thể bao gồm: máy tính cá nhân kèm theo vỉ mạch chuyển đổi đồ hoạ VGA hoặc SVGA, đĩa chứa các ảnh mà bạn dùng để kiểm tra các thuật toán và một màn hình có hỗ trợ VGA hoặc SVGA.

Chủ đề:
Lưu

Nội dung Text: Giáo trình xử lý ảnh y tế Tập 1b P14

  1. 3  f 23 (k )W4nk (6.28) F23 (n)  k 0 và f 22 (k)  f 11 (2k) f 23 (k)  f 11 (2k  1) Biểu thức (6.21), (6.22), (6.25) và (6.26) có thể biểu diễn bằng sơ đồ hình 6.3. Biểu thức (6.23), (6.24), (6.27) và (6.28) có th ể tiếp tục chia nhỏ ra nh ư các bước đã làm ở trên như sau: -4n (6.29) F20 (n)  F30 (n)  W16 F31 (n) -4n (6.30) F20 (n  2)  F30 (n) - W16 F31 (n) -4n (6.31) F21 (n)  F32 (n)  W16 F33 (n) -4n (6.32) F21 (n  2)  F32 (n) - W16 F33 (n) -4n (6.33) F22 (n)  F34 (n)  W16 F35 (n) -4n (6.34) F22 (n  2)  F34 (n) - W16 F35 (n) -4n (6.35) F23 (n)  F36 (n)  W16 F37 (n) -4n (6.36) F23 (n  2)  F36 (n) - W16 F37 (n) ở đây 1 F30 (n)   f 30 ( k )W2 nk (6.37) k 0 3 F31 (n)   f 31 ( k )W2 nk (6.38) k 0 ..., vv. Các biểu thức từ (6.29) đến (6.36) cho kết quả trong bước thứ ba của thuật toán và biểu diễn trong lưu đồ hình 6.4.Mỗi phần tử từ F30(n) đến F37(n) có thể chia tiếp thành hai phần tử nữa và bước này tạo thành sơ đồ cuối cùng (bước đầu tiên) trong lưu đồ. W-2n X(k) X(k) Hệ số xoay n=0 đến 3 0 0 84 1 1 F20(n) 2 2 F10(n) 3 3 0 0 4 2 F21(n) 1 5 4
  2. Hình 6.3 Bước thứ hai sau bước cuối cùng trong thuật toán FFT. X(k) X(k) 0 F30(n) 1 0 0 F31(n) 1 Dãy 0 0 đầu F32(n) 1 vào 0 đã 0 F33(n) được 1 0 sắp 0 F34(n) xếp 1 0 lại 0 F35(n) 1 0 0 F36(n) 1 0 0 F37(n) 1 0 0 85
  3. Hình 6.4 Bước đầu tiên của lưu đồ FFT. Hình 6.5 giới thiệu sơ đồ thuật toán FFT cho N = 16. Chú ý rằng do yêu cầu ban đầu của chương trình mà dãy vào được sắp xếp lại và chứa ở X(k), ví dụ X(k)  x(q) k = 0 đến 15 Bạn sẽ chú ý trên sơ đồ rằng q là giá trị bit của k. Cho N = 24 = 16 chúng ta phải có bốn bước trong lưu đồ. Trong mỗi bước cần phải có tám bướm. Trong mỗi bướm chỉ có một phép nhân phức, hai phép cộng hoặc trừ phức. Tổng số phép nhân phức là 8/2 . 4. Tổng quát cho N = 2r số phép nhân phức là (N/2) . r = (N/2 ) log2 N và số phép cộng là Nlog2N. Chú ý, thực tế số phép nhân sẽ giảm xuống một ít, vì trong bước đầu tiên hệ số xoay W0 = 1 và trong các bước còn lại chúng ta cũng có các bướm với hệ số xoay = 1. Xem xét trường hợp N = 1024 = 210. Số phép nhân cần dùng cho FFT là (N/2).10 = 1024  5 = 5120 so với 1 triệu phép nhân cho tính trực tiếp biến đổi DFT, đây là phương pháp tiết kiệm thực sự cho tính toán. Bây giờ, chúng ta sẽ vạch ra thuật toán FFT. Đó không đơn thuần chỉ là sự phát triển một chương trình từ lưu đồ. Tuy nhiên, chúng ta có thể nghiên cứu lưu đồ và vạch ra các bước có thể dùng để phát triển một chương trình. Từ lưu đồ của hình 6.5 chúng ta có thể viết: Bước thứ nhất. Trong bước này ta có tám bướm với trọng lượng (hệ số xoay) 0 W = 1. Chúng ta có thể viết (xem hình 6.6) for (j=0 đến 15 với bước tăng 2) { T=X(j+1); X(j+1)=X(j) - T; X(j)=X(j) + T; } Bước thứ hai. Chúng ta có: 1.Bốn bướm với trọng lượng bằng 1. for (j=0 đến 15 với bước tăng 4) 86
  4. { T=X(j); X(j+2)=X(j) - T; X(j)=X(j) + T; } 2. Bốn bướm với trọng lượng W4 = W(3). Chú ý rằng chúng ta coi rằng các hệ số xoay W, W2 , ... , W7 đã được tính và được chứa trong W(0), W(1), ...W(6). for (j=0 đến 15 với bước tăng 4) { T=X(j)W(3);X(j+2)=X(j) - T; X(j)=X(j) + T; } Bước thứ ba. Chúng ta có : 1. Hai bướm với trọng lượng bằng 1. for (j=0 đến 15 với bước tăng 8) { T=X(j); X(j+4)=X(j) - T; X(j)=X(j) + T; } 87
  5. W 8n W 4n W 2n W n n=0 n=0 ®Õn 1 n=0 ®Õn 3 n=0 ®Õn 7 0000 0 0 0 0 0 0000 1000 8 8 4 2 1 0001 0 0 0100 4 4 8 4 2 0010 4 1100 12 12 12 6 3 0011 0 0010 2 2 2 8 4 0100 0 1010 10 10 6 10 5 0101 2 0 0110 6 6 12 12 6 0110 4 0 1110 14 14 14 14 7 0111 6 0 4 0001 1 1 1 1 8 1000 0 1001 9 9 5 3 9 1001 1 0 0101 5 5 9 5 10 1010 2 0 1101 13 13 13 7 11 1011 3 0 4 0011 3 3 3 9 12 1100 4 0 1011 11 11 7 11 13 1101 5 2 0 0111 7 7 11 13 14 1110 6 4 0 1111 15 15 15 15 15 1111 7 6 0 4 b­íc 0 b­íc 1 b­íc 2 b­íc 3 BËc cña d·y vµo biÓu diÔn BËc cña d·y ra biÓu diÔn d¹ng nhÞ ph©n d¹ng nhÞ ph©n Hình 6.5 Lưu đồ thuật toán thuật toán phân chia miền thời gian. 2. Hai bướm với trọng lượng bằng W (1) = W2. for (j=1 đến 15 với bước tăng 8) { T=X(j)W(1); X(j+4)=X(j) - T; X(j)=X(j) + T; } 88
  6. 3. Hai bướm với trọng lượng bằng W(3) = W4. for (j=2 đến 15 với bước tăng 8) { T=X(j)W(3); X(j+4)=X(j) - T; X(j)=X(j) + T; } f10 (k ) f10 (k ) F(2n) F(2n) F(2n+1) F(2n+1) f11 (k ) f11 (k ) (a) (b) Hình 6.6 (a) Bướm cho thuật toán phân chia miền tần số;(b) Một b ướm đơn giản. 4. Hai bướm với trọng lượng bằng W (5) = W6 . for (j=3 đến 15 với bước tăng 8) { T=X(j)W(5); X(j+4)=X(j) - T; X(j)=X(j) + T; } Bước thứ tư và là bước cuối cùng. 1.Một bướm với trọng lượng bằng 1. T = X(0) X(8)= X(0) - T X(0) = X(8) +T 89
  7. 2. Một bướm với trọng lượng bằng W (0) = W. T = X(1)W(0) X(1+8)= X(1) - T X(1) = X(1) +T 3. Một bướm với trọng lượng bằng W (1) = W2. T = X(1)W(1) X(2+8)= X(0) - T X(2) = X(2) +T . . . 8. Một bướm với trọng lượng bằng W (6) = W7. T = X(7)W(6) X(7+8)= X(7)-T X(7) = X(7) +T Các bước dẫn chúng ta đến thuật toán với N = 16. Thuật toán ip=1 kk=8 incr=2 cho iter=0 đến 3 trong các bước của 1 { cho j=0 đến 15 trong các bước của incr { i = j + ip T = X(j) X(i) = X(j) - T X(j) = X(j) +T nếu (iter không bằng 0) thì { cho k=1 đến ip-1 trong các bước của 1 { r = k*kk - 1 cho j=k đến 15 trong các bước của 15 { 90
  8. i=j+ip T=X(i)*W(r) X(i)=X(j)-1 X(j)=X(j)+T } } } kk=kk/2 ip= ip*2 inc=inc*2 } Thuật toán trên có thể dễ dàng mở rộng cho tất cả các trường hợp của N. Chỉ có một lĩnh vực còn lại cần phải giải thích là sự sắp xếp lại các dãy dữ liệu đầu vào. Điều này có thể tạo ra dễ dàng nếu chúng ta tạo ra một bảng (LUT) L(i), L(i) là các giá trị đảo ngược bit của i. Nếu dữ liệu được đọc từ một file thì tất cả các việc mà chúng ta phải làm là chuyển địa chỉ vùng của chúng trong file qua bảng LUT và lưu các dữ liệu này trong địa chỉ chứa kết quả trong dãy đầu vào, X. Bước này có thể chuyển sang ngôn ngữ C như sau: for (i=0; i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0