Giáo trình xử lý ảnh y tế Tập 1a P3 pps

11 362 1
Giáo trình xử lý ảnh y tế Tập 1a P3 pps

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

22 fprintf(fptr,"%e",(float)0.0); w1[0]=w2[0]=-pi; dw=pi/16.0; for(i=1;i<33;i++) w1[i]=w2[i]=w1[i-1]+dw; for(i=0;i<33;i++) fprintf(fptr," %e",w2[i]); xt=wherex();yt=wherey(); gotoxy(70,25); textattr(RED+(LIGHTGRAY<<4)+BLINK); cputs("WAIT"); gotoxy(xt,yt); for(i=0;i<33;i++) { fprintf(fptr,"\n"); for(j=0;j<33;j++) { sum=0.0; for(n1=-NS;n1<=NS;n1++) for(n2=-NS;n2<=NS;n2++) sum+=h[n1+NS][n2+NS]*(float)cos((double)(w1[i]*(float)n1+ w2[j]*(float)n2)); z[i]=sum; } fprintf(fptr,"%e",w1[i]); for(j=0;j<33;j++) fprintf(fptr,"%e",z[j]); } fclose(fptr); } xt=wherex();yt=wherey(); gotoxy(70,25); textattr(WHITE+(BLACK<<4)); cputs(" "); gotoxy(xt,yt); printf("\n Press any key to exit."); 23 getch(); } /* Dinh nghia ham cho tich phan */ float f(float x,float y) { float H(float,float),a; a=H(x,y)*(float)cos((double)(x*n1))*cos((double)(y*n2)); return(a); } /*********************************************/ /*Chuong trinh con Simpson tinh tich phan kep*/ /*********************************************/ float simpson2( float(*f)(float,float),float xmin,float xmax, float ymin, float ymax, int M, int N) /* f la mot ham hai bien dinh nghia boi nguoi dung. xmin, xmax, va ymin, ymax la gioi han cua hai tich phan. M,N la so khoang cach tren huong x va y va chi co gia tri chan*/ { register i,j; float sum1,sum2,dx,dy,x,y,I; float *A; A=(float *) malloc(M*sizeof(float)); dx=(xmax-xmin)/(float) M; dy=(ymax-ymin)/(float) N; x=xmin; for (i=0;i<=M;i++) { sum1=sum2=0.0; y=ymin+dy; for(j=1;j<N; j++) { if((j%2)==0) 24 sum1+=(*f)(x,y); else sum2+=(*f)(x,y); y+=dy; } *(A+i)=(*f)(x,ymin)+2.0*sum1+4.0*sum2+(*f)(x,ymax); x+=dx; } sum1=sum2=0.0; for(i=1;i<M;i++) { if((i%2)==0) sum1+=*(A+i); else sum2+=*(A+i); } I=*A+2.0*sum1+4.0*sum2+*(A+M); return(I*dx*dy/9.0); } /*************************************** * Dinh nghia ham bo loc H(w1,w2). Ham * * xac dinh boi nguoi dung * ***************************************/ float H(float w1, float w2) { float DO,a,R2; DO=0.5*pi; // cut-off R2=w1*w1+w2*w2; a=0.414*DO*DO/(R2+0.414*DO*DO); return(a); } /*************************************** Vi du ve mot so ham khac 1.Laplacian Operator. 25 a=R2; 2. Phase contrast filters if(R2<(DO*DO)) a=1.0; else a=-1.0; 3. homomorphic filter float gamah, gamal, k; gamah=1.0; gamal=0.5; if (R2<(DO*DO)) { k=(1.0)-(gamah-gamal))/(gamah-gamal); a=(R2/(R2*DO*DO*k))+gamal; } else a=gamah; 4.Low pass filter a=0.414*DO*DO/(R2+0.414*DO*DO); 5.High pass filter a=R2/(R2+0.414*DO*DO); *****************************************/ Trong chương trình 2.1 đáp ứng xung được tính trên cửa sổ kích thước 11  11 mẫu mà tâm là gốc toạ độ. Một ảnh ba chiều của đáp ứng tần số tính từ 11  11 đáp ứng xung được chỉ trong hình 2.13. Bảng 2.1 Một phần tư đáp ứng xung của bộ lọc thông thấp D 0 = 0.3 0.103591 0.047501 0.017310 0.008810 0.003712 0.002135 0.047501 0.031265 0.014898 0.007494 0.003578 0.001873 0.017310 0.014898 0.009506 0.005306 0.002844 0.001496 26 0.008810 0.007494 0.005306 0.003352 0.001956 0.001102 0.003712 0.003578 0.002844 0.001956 0.001242 0.000743 0.002135 0.001873 0.001496 0.001102 0.000743 0.000473 Hình 2.13 Hình ảnh ba chiều đáp ứng biên độ của bộ lọc thông thấp. Ví dụ 2.6 Lặp lại bài toán trước với bộ lọc tuần hoàn đối xứng Butterworth được cho bởi ),( )12( 1 1 ),( 21 2 0 21   D D H    trong đó 2 2 2 121 ),(  D Giải Thay hàm H(w1,w2) trong chương trình 2.1, như đã giải thích trong phần cuối của chương trình, chúng ta thu được hệ số được liệt kê trong bảng 2.2. Đáp ứng tần số được chỉ trong hình 27 2.14, và hầu như đúng với đáp ứng tần số gốc được tính từ biểu thức của )2,1(   H . Hình 2.14 Đáp ứng tần số được tính từ 11  11 đáp ứng xung. Bảng 2.2 Một phần tư đáp ứng xung của bộ lọc thông cao 0.896408 -0.047501 -0.017311 -0.008811 -0.003712 - 0.002135 -0.047501 -0.031265 -0.014898 -0.007494 -0.003578 - 0.001873 -0.017311 -0.014898 -0.009506 -0.005306 -0.002844 - 0.001496 -0.008811 -0.007494 -0.005306 -0.003352 -0.001956 - 0.001102 -0.003712 -0.003578 -0.002844 -0.001956 -0.001242 - 0.000743 -0.002135 -0.001873 -0.001496 -0.001102 -0.000743 - 0.000473 28 Bài tập 2.2 Thay hàm H(w1,w2) trong chương trình 2.1 để tính đáp ứng xung trên cửa sổ 11  11 có tâm tại điểm gốc, theo hàm truyền đạt được cho dưới đây: 1. Lọc thông thấp: 021 /),(347.0 21 ),( DD eH     2. Lọc thông cao: ),(/347.0 21 21 ),(   DD eH   Với giả định đường tròn 3-dB nằm tại mức 0.3. CHƯƠNG 3 CÁC BỘ LỌC HAI CHIỀU CÓ ĐÁP ỨNG XUNG HỮU HẠN 3.1 Chỉ dẫn Trong chương này chúng ta sẽ chuyển sang việc làm nổi ảnh thông qua các bộ lọc 2-D. Hệ thống 2-D mà chúng ta sẽ đề cập ở đây là các bộ lọc hai chiều đáp ứng xung có độ dài hữu hạn, mà được thiết kế với đặc tuyến phù hợp cho việc xử lý ảnh. Chúng ta cũng sẽ đề cập đến việc thiết kế phần mềm xử lý cho các ảnh được coi là chứa trên vùng đệm hoặc bộ nhớ ngoài như đĩa cứng. Với thiết kế này các chương trình chỉ yêu cầu dung lượng của bộ nhớ trong rất nhỏ, làm cho bộ lọc có khả năng lọc được các ảnh có kích thước rất lớn. 3.2 Biến đổi Z Phép biến đổi z đóng một vai trò rất quan trọng trong việc phân tích và biểu diễn các hệ tuyến tính bất biến (linear-shift invariant - TTBB) rời rạc theo cả thời gian lẫn không gian. Mục đích của phần này là giới thiệu sơ lược phép biến đổi z để hiểu rõ hơn về các bộ lọc hai chiều. Biến đổi z của một tín hiệu được lấy mẫu đồng đều f(t), được cho bởi        0 )()( n n znTfnTfZ (3.1) Biến đổi z của một dãy f(nT) thường được ký hiệu là F(z). Vì vậy   )()( nTfZzF  (3.2) Xem xét biến đổi z của mẫu xung đơn vị kT, cụ thể ))(()( TknnTf    Dùng biểu thức (3.1) chúng ta được k zTknZ   )})(({  (3.3) Bây giờ xem xét biến đổi z của một tín hiệu trễ đi k chu kỳ lấy mẫu của f(nT):      0 ))(()})(({ n n zTknfTknfZ Thay m = n - k trong biểu thức bên tay phải chúng ta được:      km km zmTfTknfZ )( )()})({ k kn m zzmTfTknfZ       ])([)})({ ) Nếu ),( Tmf = với m < 0 thì k zzFTknfZ   )()})({ (3.4) Các biểu thức (3.3) và (3.4) coi rằng z -1 biểu diễn một đơn vị trễ cho các tín hiệu mà có giá trị 0 nếu thời gian âm hay còn gọi là tín hiệu nhân quả. Biến đổi cho trong biểu thức (3.1) gọi là phép biến đổi z một phía. Một phép biến đổi z hai phía được cho bởi:      n n znTfnTfZ )()}({ (3.5) Phổ tần số của tín hiệu được tính từ biến đổi Fourier là        n nTj enTfnTf  )()( (3.6) So sánh biểu thức (3.5) và biểu thức (3.6), chúng ta nhận thấy rằng phổ của một ảnh có thể rút ra từ biến đổi z bằng cách thay z bằng Tj e  . Ví dụ 3.1 Tìm biến đổi z và phổ tần số của dãy u nT nT n T n T n N T( ) ( ) (( ) ) (( ) ) (( ) )             1 2 Giải Từ biểu thức (3.1) chúng ta có thể viết N zzzzU   0.1)( 21 hoặc 1 )1( 1 1 )(      z z zU N Phổ tần số của u(nT) sẽ là Tj TNj Tj e e eU         1 1 )( )1( Biến đổi z của một tín hiệu rời rạc đều 2-D f(x,y) được cho bởi u 0 1 2 3 N - 1 N 1 n         1 2 21 2122112211 ),()},({ n n nn zzTnTnfTnTnfZ (3.7) thường được ký hiệu là F(z 1 , z 2 ) Có thể lập tức nhận ra rằng 21 212211 ),( kk zzknkn    1 1 211 ),( k znkn    (3.8) 2 2 221 ),( k zknn    Cũng như vậy nếu f(x,y) = 0 với ( ) ( ) x y    0 0 thì 21 21212211 ),()},({ kk zzzzFknknfZ   (3.9) ở đây -1- 2 1 1 ,zz biểu diễn đơn vị trễ theo hướng x và hướng y. Biến đổi 2-D Fourier của f(n 1 T 1 ,n 2 T 2 ) được cho bởi         1 2 2211 )( 22112211 ),()},(( n n nnj eTnTnfTnTnf  (3.10) Có thể nhận thấy rằng phổ tần số của một tín hiệu 2-D được rút ra bằng cách thay 11 1 Tjw ez   , 22 2 Tjw ez   trong biến đổi z của tín hiệu. Ví dụ 3.2 Tìm biến đổi z và phổ của tín hiệu nhảy bậc đơn vị được xác định bằng biểu thức (2.4) trong chương 2. Giải Biến đổi z của u n n 1 1 2 ( , )được cho bởi            0 0 21 211 1 2 21 ),( n n nn zznnuZ 1 y x [...]... tín hiệu vào của bộ lọc Nếu x(n1,n2) = 0 với (n1  0)  (n2  0) , thì bằng cách l y biến đổi z cả hai phía của biểu thức (3.11) chúng ta được N1 Y ( z1 , z 2 )  N2  k1  k 2 1 2   h(k , k ) X ( z , z )z 1 2 1 2 z k1   N 1 k 2   N 2 (3.12) Hàm truyền đạt của bộ lọc 2-D FIR được cho bởi H ( z1 , z 2 )  N1 N2 Y ( z1 , z 2 )     h(k1 , k 2 )z1 k1 z 2 k2 X ( z1 , z 2 ) k1   N 1 k 2  ...suy ra U ( z1 , z 2 )  1 1  z1 1  1  1  z 21 Phổ tần số của tín hiệu bước nh y có thể tính từ U (e iw1T1 , e iw2T2 )  1 1   iw1T1 1 e 1  e iw2T2 3.3 Các bộ lọc hai chiều có đáp ứng xung hữu hạn 2-D Quan hệ giữa đầu vào và đầu ra cho bộ lọc FIR 2-D (FIR - Finite Impulse Response) được cho bởi N1 y (n1 , n2 )  N2   h(k1 , k 2 ) x(n1  k1 , n2... k2T2 (3.14) Đáp ứng xung có thể tính từ đáp ứng tần số sau khi dùng biểu thức (2.17) trong chương 2 Các bộ lọc có đáp ứng tần với phần số thực thuần tuý được gọi là các bộ lọc pha zero Trong các bộ lọc n y, các pha zero được dịch đi một góc , cụ thể là có các giá trị âm trong phổ tần số Một bộ lọc pha zero có đáp ứng xung là số thực thoả mãn h(n1 , n2 )  h( n1 , n 2 ) . sum1,sum2,dx,dy,x ,y, I; float *A; A=(float *) malloc(M*sizeof(float)); dx=(xmax-xmin)/(float) M; dy=(ymax-ymin)/(float) N; x=xmin; for (i=0;i<=M;i++) { sum1=sum2=0.0; y= ymin+dy; . đặc tuyến phù hợp cho việc xử lý ảnh. Chúng ta cũng sẽ đề cập đến việc thiết kế phần mềm xử lý cho các ảnh được coi là chứa trên vùng đệm hoặc bộ nhớ ngoài như đĩa cứng. Với thiết kế n y các. fclose(fptr); } xt=wherex();yt=wherey(); gotoxy(70,25); textattr(WHITE+(BLACK<<4)); cputs(" "); gotoxy(xt,yt); printf(" Press any key to exit."); 23

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

Từ khóa liên quan

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

Tài liệu liên quan