Giáo trình xử lý ảnh y tế Tập 3 P12 pdf

9 275 0
Giáo trình xử lý ảnh y tế Tập 3 P12 pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

339                   )12( 2 )14( cos) 2 ( ~ )( ~ )12( )12/( 0 k N nN nxnxkX N n  (13.8) Nhưng cos[(2k + 1)] = 2coscos(2k) - cos[(2k - 1) ]. Vì vậy, )12( 2 )14( cos) 2 ( ~ )( ~ - 2 2 )14( cos) 2 ( ~ )( ~ 2)12( 1)2/( 02 )12/( 02                                          k N nN nxnx k N nN nxnxkX N n N n   (13.9) Biểu thức thứ hai trong (13.9) là X(2k - 1). Bởi vậy, nên (13.9) rút gọn thành } 2 2 )14( cos 2 )14( cos) 2 ( ~ )( ~ 2{)12( )12/( 02                      k N n N nN nxnxkX N n  )12()12( 2 2 )14( cos               kXk N n  (13.10) Đặt ) 2 ( ~ )( ~ )( 00 N nxnxnx  (13.11) và               N nN nxnxx 2 )14( cos2) 2 ( ~ )( ~ 01  (13.12) Vì vậy:      12/ 0 00 ) 2 (2 )14( cos)()2( N n N n nxkX  (13.13) Và       12/ 0 01 )12() ) 2 (2 )14( cos()()12( N n kX N kn nxkX  (13.14) Biểu thức (3.13) và (3.14) dẫn chúng ta đến sơ đồ hình 13.4 cho DCT 8 điểm. Chú ý rằng X(1) = X(-1). Biểu thức (13.11) và (13.12) là biểu thức cho các phép toán bướm: 340 Đặt )2()( 00 kXkY  Y k X k X k 01 2 1 2 1( ) ( ) ( )     (13.15) Hình 13.4 Lưu đồ cho biểu thức (13.13) và (13.14). Vì thế:            12/ 0 0000 2 2 )14( cos)()( N n N kn nxkY  (13.16)      12/ 0 0101 ) ) 2 (2 )14( cos()()( N n N kn nxkY  (13.17) Chia Y 00 (k) và Y 01 (k) thành hai dãy chỉ số chẵn và lẻ như trên chúng ta được: ) 2 (2 )14( cos) 4 ()()2( 1)4/( 0 000000                                      N n N nN nxnxkY  (13.18)                                      1)4/( 0 000000 ) 2 (2 )14( cos2) 4 ()()12( N n N nN nxnxkY  13 16 2C 9 16 2C 16 2C 16 2C -1 -1 -1 -1 DCT 4 điểm. x(0) x(2) x(4) x(6) )0( ~ x )1( ~ x )2( ~ x )3( ~ x DCT 4 điểm. 2x(1) x(3)+x(1) x(5)+x(3) x(7)+x(5) )0( ~ x )1( ~ x )2( ~ x )3( ~ x j i C i j  cos 341 )12( ) 4 (2 )14( cos 00                kY N kn  s (13.19) ) 2 (2 )14( cos2) 4 ()()2( 1)4/( 0 010101                                      N n N nN nxnxkY  (13.20) )12( ) 4 (2 )14( cos ) 2 (2 )14( cos2) 4 ()()12( 01 1)4/( 0 010101                                                     kY N kn N nN nxnxkY N n   (13.21) Đặt ) 4 ()()( 000010 N nxnxnx  (13.22) )14( 000011 )) 4 ()(()(   n N C N nxnxnx (13.23) ) 4 ()()( 010112 N nxnxnx  (13.24) )14( 010113 )) 4 ()(()(   n N C N nxnxnx (13.25) ở đây          j i C i j  cos (13.26) -1 -1 -1 -1 2C 5 8 X 11 ( 1) 2C 8 X 11 ( DCT DCT X 00 (0 ) X 00 (1 ) X 00 (2 ) X 00 (3 ) Y 00 (0 ) Y 00 (2 ) 2Y 00 (1 ) Y 00 (3)+Y 00 (1 ) X 10 (0 ) X 10 (1 ) 2C 5 8 X 13 ( 1) 2C 8 X 13 ( 0) DCT DCT X 01 (0 ) X 01 (1 ) X 01 (2 ) X 01 (3 ) Y 01 (0 ) Y 01 (2 ) 2Y 01 (1 ) Y 01 (3)+Y 01 (1 ) X 12 (0 ) X 12 (1 ) 342 Hình 13.5 Bước thứ hai của thuật toán biến đổi cosin. Biểu thức (13.22) đến (13.25) biểu diễn cho toán tử bướm. Thay các biểu thức này vào các biểu thức từ (13.18) đến (13.21) chúng ta có:            14/ 0 1000 4 2 )14( cos)()2( N n N kn nxkY  (13.27)      14/ 0 110000 ) 4 (2 )14( cos)()12()12( N n N kn nxkYkY  (13.28)            14/ 0 1201 4 2 )14( cos)()2( N n N kn nxkY  (13.29)      14/ 0 130101 ) 4 (2 )14( cos)()12()12( N n N kn nxkYkY  (13.30) Các biểu thức trên cho kết quả của bước thứ hai trên sơ đồ hình (13.5) trong trường hợp N = 8. Đặt )2()( 0010 kYkY  (13.31) )12()12()( 000011  kYkYkY (13.32) Vì vậy )2()( 0112 kYkY  (13.33) )12()12()( 010012  kYkYkY (13.34)      14/ 0 1010 ) 4 (2 )14( cos)()( N n N kn nxkY  (13.35)      14/ 0 1111 ) 4 (2 )14( cos)()( N n N kn nxkY  (13.36) 343      14/ 0 1212 ) 4 (2 )14( cos)()( N n N kn nxkY  (13.37)      14/ 0 1212 ) 4 (2 )14( cos)()( N n N kn nxkY  (13.38) Nếu N = 8, các biểu thức trên có dạng: 4 5 cos)1( 4 cos)0()( 101010 k x k xkY    (13.39) 4 5 cos)1( 4 cos)0()( 111111 k x k xkY    (13.40) 4 5 cos)1( 4 cos)0()( 121212 k x k xkY    (13.41) 4 5 cos)1( 4 cos)0()( 131313 k x k xkY    (13.42) ở đây k = 0,1. Các biểu thức cuối có thể biểu diễn thành Y 10 (0) = x 10 (0) + x 10 (1) Y 10 = (x 10 (0) - x 10 (1))cos(/4) v v Các biểu thức này dẫn chúng ta đến lưu đồ bướm cuối cùng trình bày ở hình 13.6. Để rút ra tín hiệu đầu ra của lưu đồ FCT chúng ta cần quay trở lại. Cho ví dụ, từ biểu thức (13.21) và (13.15) chúng ta có thể viết: X(4k) (k)Y 10  (13.43) x 11 (0) x 11 (1) Y 11 (0) Y 11 (1) 1 C 4 - 1 x 12 (0) x 12 (1) Y 12 (0) Y 12 (1) 1 C 4 - 1 x 14 (0) Y (0) 1 x 13 (0) x 13 (1) Y 13 (0) Y 13 (1) 1 C 4 - 1 x 10 (0) x 10 (1) Y 10 (0) Y 10 (1) 1 C 4 - 1 344 Hình 13.6 Bướm cuối cùng trong FCT. Hình 13.7 Tín hiệu ra cuối cùng của thuật toán bướm tính dưới dạng hệ số FCT. Bước cuối cùng của các thao tác bướm. Đầu ra Bitdịch chuyển 000 001 010 011 100 101 110 111 0 1 2 3 4 5 6 7 X(0) X(4) 2X(2) X(6)+X(2) 2X(1) X(5)+X(3) 2(X(3)+X(1)) X(7)+X(5)+X(3)+ X(1) D ịch chuyển bit 000 100 010 110 001 101 011 111 0 4 2 6 1 5 3 7 X(0) 2X(1) 2X(2) 2(X(3)+X(1)) X(4) X(5)+X(3) X(6)+X(2) X(7)+X(5)+X(3)+X(1) 0 1 2 3 4 5 6 7 Dịch chuyển bit 345 Hình 13.8 Tín hiệu ra sau dịch chuyển bít. Hình 13.9 Bước cộng truy hồi. Tương tự, chúng ta có thể rút ra từ các biểu thức (13.32) đến (13.34) và (13.15) các biểu thức dưới đây: 2)-X(4k2)X(4k (k)Y 11  (13.44) 1)-X(4k1)X(4k (k)Y 12  (13.45) 3)-X(4k 1)-X(4k 1)X(4k 3)X(4k (k)Y 13  (13.46) Vì vậy, tín hiệu ra từ các bước cuối cùng của các thao tác bướm có thể tính dưới dạng các hệ số của FCT như trong hình 13.7. Nếu chúng ta sắp xếp lại vị trí của các giá trị bít dùng dịch chuyển bít, chúng ta rút ra tín hiệu ra như hình (13.8). Sau đó,các tín hiệu ra này có thể được dùng để rut ra FCT như hình (13.9). Bước cuối cùng này gọi là bước cộng truy hồi. Có rất nhiều bước (các thao tác bướm, dịch chuyển bít, và cộng truy hồi) bây giờ có thể nằm trong một bước trong hình 13.10. Từ sơ đồ này, chương -1 -1 -1 -1 -1 2 1 2 1 2 1 X(0) X(1) X(2) X(3) X(4) X(5) X(6) X(7) Dịch chuyển bit 346 trình FCT có thể phát triển. Chương trình này dùng các thuật toán phát triển cho FFT. Chương trình dùng một bảng tra cứu để chứa các giá trị cosin, một bảng cho dịch chuyển bit. Chi tiết của chương trình này để lại cho người dùng như một bài tập. Bài tập13.5 1. Phát triển lưu đồ cho DCT 16 và 32 điểm. 2. Sử dụng logic tương tự đã được dùng cho việc phát triển chương trình FFT, để viết một thuật toán cho FCT. 2-D FCT của một dãy 2-D thực được cho bởi (13.47) Thuật toán cho 2-D FCT có thể phát triển dùng phương pháp hàng-cột bình thường như thuật toán 2-D FFT. Chương trình 13.5 rút ra biến đổi FCT của các khối người dùng tự xác định kích thước, thông thường là 8  8 hoặc là 16  16, bằng các chia nhỏ các khối của ảnh. Ảnh được giả sử là có chiều dài bằng chiều rộng với cac chiều là bội của 2. Chương trình sử dụng thuật toán 1-D FCT và tận dụng các bảng tra cứu (LUT) như các trạng thái trước. Chương trình 13.5 “FCT2D.C” 2-D FCT các khối ảnh (người dùng tự xác định kích thước). /*Program 13.5 "FCT2D.C". 2-D FCT of image blocks (user-pecified).*/ /* This program is for carrying out 2-D Fast Cosine Transform of blocks subdividing a given image. Block size is user specified. */ #define PI 3.14159 #include <stdio.h> #include <math.h> #include <alloc.h> #include <conio.h> #include <io.h> #include <process.h>                         1 0 2 22 1 11 21 1 0 2 21 21 2 2 1 1 2 )12( cos 2 )12( cos),( 4 ),( N n N n kk N kn N kn nnx N kkX   347 void FCT(float *, unsigned int *, float *, int , int ); void bit_reversal(unsigned int *, int , int ); void WTS(float *,int , int ); void main() { int m,N,i,j,k1,k2,NB,NS,NT,k; float *x,*C,**w; unsigned int *L; double nsq; FILE *fptri,*fptro; char file_name[14]; float *buffi; unsigned char *buffo; clrscr(); printf("Enter name of input file >"); scanf("%s",file_name); fptri=fopen(file_name,"rb"); if(fptri==NULL) { printf("No such file exists.\n"); exit(1); } nsq=(double)filelength(fileno(fptri)); /* Assume image is square. */ N=(int)sqrt(nsq); m=(int)(log10((double)N)/log10((double)2.0)); k=1 ; for(i=0;i<m;i++) k<<=1; if(k!=N) { printf ("Image must have dimensions which are multiples of 2.\n"); exit(1); } printf("Enter name for output file >"); scanf("%s",file_name); fptro=fopen(file_name,"wb"); . hình ( 13. 5) trong trường hợp N = 8. Đặt )2()( 0010 kYkY  ( 13. 31) )12()12()( 000011  kYkYkY ( 13. 32) Vì v y )2()( 0112 kYkY  ( 13. 33) )12()12()( 010012  kYkYkY ( 13. 34) .      14/ 0 1010 ) 4 (2 )14( cos)()( N n N kn nxkY  ( 13. 35)      14/ 0 1111 ) 4 (2 )14( cos)()( N n N kn nxkY  ( 13. 36) 34 3      14/ 0 1212 ) 4 (2 )14( cos)()( N n N kn nxkY  ( 13. 37)      14/ 0 1212 ) 4 (2 )14( cos)()( N n N kn nxkY  . X 00 (3 ) Y 00 (0 ) Y 00 (2 ) 2Y 00 (1 ) Y 00 (3) +Y 00 (1 ) X 10 (0 ) X 10 (1 ) 2C 5 8 X 13 ( 1) 2C 8 X 13 ( 0) DCT DCT X 01 (0 ) X 01 (1 ) X 01 (2 ) X 01 (3 ) Y 01 (0 )

Ngày đăng: 10/07/2014, 22:20

Tài liệu cùng người dùng

Tài liệu liên quan