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 P15

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

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

Nếu ngân sách bạn cho phép, tôi đề nghị bạn nên có một hệ thống như trong hình 1.3. Nó bao gồm một máy tính PC có kèm theo thiết bị xử lý ảnh. Nối với cổng vào của thiết bị thu nhận ảnh là một video camera, và cổng ra nối với một màn hình. Thực tế, phần lớn các nghiên cứu của chúng ta được đưa ra trên ảnh mức xám (ảnh đen trắng). Bởi vậy, hệ thống của bạn sẽ bao gồm một thiết bị xử lý ảnh đen trắng và một màn hình đen trắng....

Chủ đề:
Lưu

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

  1. #include #include #include #include void bit_reversal(unsigned int *, int , int); void WTS(float *, float *, int, int); void FFT(float *xr, float *xi, float *, float *, int , int); void main() { int i,k,m,N,n2,sign; unsigned int *L; float *wr,*wi,*xr,*xi; char file_name[14]; FILE *fptr; printf("\nEnter name of file containing data points-> "); scanf("%s",file_name); if((fptr=fopen(file_name,"rb"))==NULL) { printf("file %s does not exist."); exit(1); } printf("Enter # of data points to be read -->"); scanf("%d",&N); m=(int)(log10((double)N)/log10((double)2.0)); k=1; for(i=0;i
  2. /* Generate Look-up table for bit reversal. */ bit_reversal(L,m,N); /* Allocating memory for FFT arrays ( real and imag.) */ xr=(float *)malloc(N*sizeof(float)); xi=(float *)malloc(N*sizeof(float)); /* Setting-up the data in real and imag. arrays.*/ for(i=0;i>1)-1; wr=(float *)malloc(n2*sizeof(float)); wi=(float *)malloc(n2*sizeof(float)); /*Generating LUT for twiddle factors. */ WTS(wr,wi,N,-1); /* Taking FFT. */ FFT(xr, xi, wr, wi, m, N); printf("Enter file name for storing FFT output.--->"); scanf("%s",file_name); fptr=fopen(file_name,"w"); for(i=0;i
  3. unsigned int MASK,C,A,j,k,i; for(k=0;ki; A
  4. { /* FFT algorithm, Decimation-in-time algorithm. Note: 1. N=2 to the power of m. 2. The input arrays are assumed to be rearranged in bit-reverse order. You will need to use routine "bitreversal" for that purpose. 3. The twiddle factors are assumed to be stored in LUT's wr[I and wi[j. 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
  5. l=k*kk-1 ; for(j=k; j>=1; ip
  6. N / 2 1 N 1 f (k )WN kn   kn   f (k )W F ( n)  N k 0 k N / 2 N / 2 1 N    nN / 2 f (k  )W N kn    f (k )  W 2  k 0 Bây giờ, chia dãy F(n) thành hai dãy dựa trên giá trị chẵn và lẻ của n. N / 21 N  [ f (k )  W ( 2n).N / 2 f (k   )]W N kn F ( 2n)  /2 2 k 0 N / 2 1 N )]WN k 22 n1) (  [ f (k )  W (2n 1).N / 2 f (k  F (2n  1)  / 2 k 0 W N nN  e  j 2n  1.0  Chú ý rằng W N (2n1).N / 2  e  j (2 1)n  1.0  Vì vậy N / 21 N  )]WN kn  [ f (k )  f (k  F ( 2n)  /2 2 k 0 N / 21 N   ) WN k ]WN kn   [ f (k )  f (k  F (2n  1)  /2 2 k 0 N Đặt f 10 ( k )  f ( k )  f ( k  ) 2 N  )]WN k f 11 ( k )  [ f ( k )  f ( k  2 Vì vậy N / 21   f10 (k ).W N kn F ( 2n)  /2 (6.39) k 0 97
  7. N / 2 1   f11 (k ).W N kn F (2n  1)  /2 (6.40) k 0 Các biểu thức (6.39) và (6.40) có thể biểu diễn bằng dưới dạng biểu đồ bướm như trong hình 6.6. Chúng ta có thể tiếp tục chia nhỏ các tổng cho trong các biểu thức (6.39) và (6.40), tiếp tục làm như vậy cho tới khi mỗi tổng giảm xuống chỉ còn lại một phần tử. Giải thuật này giống như giải thuật thuật toán phân chia thời gian và để lại cho bạn như một bài tập cho bạn. Một lưu đồ cho FFT phân chia tần số với N = 4 trình bày trong hình 6.7. Bạn cần chú ý đến bậc của dữ liệu đầu ra là bit được đảo. Phần mềm thực hiện thuật toán trên thì rất giống phần mềm thực hiện FFT phân chia miền thời gian, và một chương trình C được cung cấp ở Chương trình 6.2. Có lẽ bạn sẽ tự hỏi: nếu phân chia miền thời gian đã thực hiện được công việc thì tại sao lại phải xem xét thêm FFT phân chia tần số. Để trả lời câu hỏi này, chúng ta sẽ cần xem xét phần kế tiếp, FFT giảm lược. Chương trình 6.2 “FFTDF” FFT phân chia tần số. /**************************** * Program developed by: * * M.A.Sid-Ahmed. * * ver. 1.0 1992.1994 * *****************************/ /* FFT - Decimation-in-frequency routine.*/ #define pi 3.141592654 void bit_reversal (unsigned int *, int, int); void WTS(float *, float *, int, int) ; void FFT(float *xr, float *xi , float, float, int, int); void FFT (float *xr, float *xi, float *wr, float *wi, int m, int N) { /* FFT algorithm. Decimation-in-frequency algorithm. Note : 1. N=2 to the power of m. 98
  8. 2. The output arrays are left in bit-reverse order. You will need to use routine "bit-reversal" to place them in normal ascending order. 3. The twiddle factors are assumed to be stored in LUT's wr[j and wiEj. 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,diffr,diffi; W n W 2 n W 4 n W 8 n 0 0 0 0 0 0 1 2 4 8 8 0 0 2 4 8 4 4 4 0 3 6 12 12 12 2 0 4 8 2 2 2 4 5 10 6 10 10 0 6 0 6 12 12 6 6 4 7 14 14 14 14 0 8 1 1 1 1 0 9 3 5 9 9 1 0 0 10 5 9 5 5 2 4 0 11 7 13 13 13 3 0 2 12 9 3 3 3 4 4 13 11 7 11 11 5 0 0 6 14 13 11 7 7 6 4 15 15 15 15 15 7 Hình 6.7 N = 4, phân chia miền tần số FFT. ip= (N>>1) ; kk=1; incr=N; for(iter=0; iter
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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