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 2 P9

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

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

Chúng ta đã chú ý ở trong chương 6 rằng phổ tần số của một ảnh giảm nhanh cùng với sự tăng của tần số. Chúng ta có thể dùng nhận xét này và định lý lấy mẫu Whittaker-Shannon để tăng độ phân giải. Giải thuật này theo các bước sau

Chủ đề:
Lưu

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

  1. rằng không thể loại trừ tính không nhân quả bằng một phép toán đ ơn giản. Nếu chúng ta, nói m ột cách khác, giả thiết điều kiện ban đầu là 0, chúng ta quay trở lại hàm truyền đạt (9.1) với kích thước mới là 2N  2N. MM Lựa chọn thứ hai yêu cầu một bộ lọc có bậc nhỏ nhất là . Điều này  2 2 làm tiêu tan những mục đích m à chúng ta đ ặt ra trước đây khi chọn bộ lọc IIR trước FIR. Sự cần thiết cho những bậc cao phát sinh từ thực tế là: đáp ứng xung b ắt đầu gần như từ không và tăng lên đến cực đại sau trễ của M mẫu 2 theo cả hai hướng. Nghĩa là một đơn vị mẫu vào cần trải qua một khoảng thời gian trễ khá lớn. Lựa chọn thứ ba bắt nguồn từ thực tế rằng nếu như phổ biên đ ộ đã tính b ằng cách dùng góc ph ần tư đơn lẻ n ày, trong trường hợp đối xứng vòng tròn, nó sẽ cho kết quả của phổ biên độ như đ ã chỉ ra lúc đầu. Tuy nhiên đặc tính pha sẽ không ph ải là đ ặc tính pha sẽ chỉ ra lúc đầu. Lựa chọn thứ tư, dùng hai tính ch ất của biến đổi Fourier : 1 . Đáp ứng xung giảm đi rất nhanh khi ra xa khỏi trung tâm . 2 . Một dịch chuyển trong đáp ứng xung thì tương đương với một phép cộng một pha tuyến tính vào đặc tuyến tần số. Như chúng tôi đã nhấn m ạnh trong các chương trước, pha tuyến tính là một mong muốn trong xử lý ảnh. Nếu chúng ta bắt đ ầu với trư ờng hợp pha không, sau đó áp dụng lựa chọn cuối cùng chúng ta có thể thiết kế bộ lọc với pha gần như tuyến tính. Chú ý rằng “dịch chuyển” trong h ình 9.3b tốt nhất là nên đặt là N - 1. Dùng đ ặc tuyến tần số cho bộ lọc thông cao với N = 2 , và dịch chuyển = 1, ta có th ể thiết kế hàm truyền đạt dùng các giả thiết của Shanks. Độ lớn, góc pha, và đáp ứng xung của bộ lọc thiết kế cho ở hình 9.4, 9.5 và 9.6. Các hệ số của bộ lọc cho ở bảng 9.1. Bảng 9.1 Hệ số của bộ lọc Hệ số a Hệ số b Ch ỉ số i,j 1.000000 0,0 - -0.561535 0,1 - 0.006960 0,2 - -0.561535 1,0 - 0.978508 0 .369372 1,1 0.006188 1,2 - 0.006960 2,0 - 0.006188 2,1 - 0.357313 0 .003567 2,2 177
  2. Dễ thấy từ các hình này là b ộ lọc có miền chuyển tiếp dốc hơn so với bộ lọc FIR 5  5 cùng thông số. Nó có đặc tuyến pha tuyến tính và ổn định hơn. Để chứng minh là bộ lọc IIR có miền chuyển tiếp dốc hơn bộ lọc FIR có cùng các hệ số, bạn hãy chạy thử chương trình thiết kế bộ lọc FIR và sau đó so sánh kết qu ả. Hình 9.4 Phổ biên độ của bộ lọc 2-D. 178
  3. H ình 9.5 Phổ pha của bộ lọc IIR 2-D. H ình 9.6 Đáp ứng tần số của bộ lọc IIR. Chương trình dùng để thiết kế bộ lọc IIR dùng các giả thiết của Shanks cho ở chương trình 9.2. Chương trình 9.2 "IIRD.C". Thiết kế mạch lọc dùng phương pháp Shanks. /* This program is for designing 2-D IIR filters using Shanks's method. You will need to run IMPULSE.EXE first. */ #define pi 3.141592654 #include #include #include #include #include #include #include void SIMQ(float *,int); 179
  4. void main() { FILE *fptri,*fptro; double nsq; int M,i,j,l,k,m,n,N,N1,N2,kk1,kk2,Nt,M1,NO,MSQ,M2,y,MC,yt,ind; float *A, **a,**b,*buffi,sum; float zrt,zit,zrb,zib,mag,*w,winc; float *h,xrm,xim,xrn,xin,rl,im,theta; char file_name[14],ch; clrscr(); printf("Enter file name for impulse response -->"); scanf("%s",file_name); fptri=fopen(file_name,"rb"); if(fptri==NULL) { p rintf("File does not exist."); exit(1); } nsq=(double)(filelength(fileno(fptri))/sizeof(float)); M=(int)sqrt(nsq); printf("Enter order of 2 -D IIR filter (e.g. 1,2 ... etc.)-->"); scanf("%d",&N); NO=N-1; /* printf("Enter offset of impulse response.\n"); p rintf(" Optimum value is (order o f filter-1).-->"); scanf("%d",&NO); */ M1=M/2+NO; M2=M/2-NO; MSQ=M1*M1; fseek(fptri,(long)(M2)*(long)(M*sizeof(float)),SEEK_SET); /* Allocating memory for impulse response. */ h=(float *)malloc(MSQ*sizeof(float)); /* Allocating memory for b coefficients. */ b=(float **)malloc((N+1)*sizeof(float *)); for(i=0;i
  5. N2=(N+1)*(N+1); A=(float *)malloc(N1*N2*sizeof(float)); /* Allocating memory for freq. vector. */ w=(float *)malloc((M+1)*sizeof(float)); /* Reading in the impulse response. */ buffi=(float *)malloc(M*sizeof(float)); for(i=M2;i
  6. } sum=(float)0.0; for(m=0;m
  7. gotoxy(1,yt+2); printf("Enter file name for storing coefficients-->"); scanf("%s",file_name); ind=access(file_name,0); while(!ind) { gotoxy(1,yt+3); printf( " "); gotoxy(1,yt+3); printf("File exists. Wish to overwrite? (y or n)-->"); while(((ch=tolower(getch()))!='y')&&(ch!='n')); putch(ch); switch(ch) { case 'y': ind=1; break; case 'n': gotoxy(1,yt+3); printf(" "); gotoxy(1,yt+2); printf(" "); gotoxy(1,yt+2); printf("Enter file name -->"); scanf("%s",file_name); ind=access(file_name,0); } } fptro=fopen(file_name, "w"); fprintf(fptro, " %d" , N); for(i=0;i
  8. /* Calculating the impulse response. */ for(m=0;m
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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