Danh mục

Giáo trình xử lý ảnh y tế Tập 2 P9

Số trang: 8      Loại file: pdf      Dung lượng: 285.91 KB      Lượt xem: 4      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Chúng ta đã chú ý ở trong chương 6 rằng phổ tần số của một ảnh giảmnhanh 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à địnhlý lấy mẫu Whittaker-Shannon để tăng độ phân giải. Giải thuật này theo cácbước sau
Nội dung trích xuất từ tài liệu:
Giáo trình xử lý ảnh y tế Tập 2 P9rằ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ếuchú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 2làm tiêu tan những mục đích m à chúng ta đ ặt ra trước đây khi chọn bộ lọc IIRtrước FIR. Sự cần thiết cho những bậc cao phát sinh từ thực tế là: đáp ứngxung 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 2theo 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ờigian 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 ằngcá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ọncuố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ócpha, 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 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ọcFIR 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áchệ 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ếtqu ả. Hình 9.4 Phổ biên độ của bộ lọc 2-D. 178 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ápShanks./* This program is for designing 2-D IIR filtersusing Shankss method. You will need to run IMPULSE.EXEfirst. */#define pi 3.141592654#include #include #include #include #include #include #include void SIMQ(float *,int); 179void 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 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 }sum=(float)0.0;for(m=0;mgotoxy(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/* Calculating the impulse response. */for(m=0;m ...

Tài liệu được xem nhiều: