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 P12

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

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

Giải thuật nội suy vuông là thao tác sao chép trong đó những điểm ảnh về cơ bản được sao chép vào những vị trí rỗng. Có thể thu được toán tử nội suy tam giác nhờ sự kết hợp hai toán tử nội suy vuông,

Chủ đề:
Lưu

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

  1. /* This program is for eN1arging images using 2 -D iir filters. The filter's coefficients can be obtained from iird.exe or iirditer.exe. */ #include #include #include #include #include #include #include #include void main() { FILE *fptri,*fptro,*fptrt; unsigned char *buff,**wx,ch,*temp1; double nsq; float **wy,**a,**b,*temp2,*bufft; float max,min,scale,tt; int n,m,image_length,image_width,i,j,N,N1,ind; int true_length,true_width,yt,k; char file_name[14]; clrscr(); printf("Enter file name for image-->"); scanf("%s",file_name); fptri=fopen(file_name, "rb"); if(fptri==NULL) { p rintf("No such image file exists.\n"); exit(1); } nsq=(double)filelength(fileno(fptri)); printf("Is image length equal to image width ? (y or n)-->"); while(((ch=getche())!='y')&&(ch!='n')); switch(ch) { case 'y' : image_length=image_width=(int)sqrt(nsq); break; case 'n': printf("\nEnter image_width-->"); scanf("%d",&image_width); 201
  2. image_length=(int)(nsq/(float)image_width); } printf("\n Image size %dx%d. " , image_length, image_width); printf ( "\nEnter file name for filter's coefficients-->" ) ; scanf("%s",file_name); fptro=fopen(file_name,"r"); if(fptro==NULL) { p rintf("\nNo such file exists.\n"); exit(1); } Hình 9.12 Bộ lọc nội suy đáp ứng tần số kích thước 2  2 thiết kế từ đáp ứng vuông với miền chuyển tiếp dốc và c = 1 .4. fscanf(fptro," %d",&N); printf("IIR filter has an order of %dx%d.",N,N); N1=N+1; /* Allocating memory space. */ a=(float **)malloc(N1*sizeof(float *)); for(i=0;i
  3. for(i=0;i
  4. break; case 'n': gotoxy(1,yt+1); printf(" "); gotoxy(1,yt); printf(" "); gotoxy(1,yt); printf("Enter file name -->"); scanf("%s",file_name); ind =access(file_name,0); } } fptro=fopen(file_name,"wb"); fptrt=fopen("temp.imq","wb+"); /* Clearing input and output image transfer buffers. */ for(i=0;i
  5. { wy[0][m]=(float)0.0; for(i=0;i
  6. } fwrite(buff,2*image_width,1,fptro); } fclose(fptri); fclose(fptro); fclose(fptrt), remove("temp.img"); } Bài tập 9.4 Ch ạy thử chương trình 9.4 trên ảnh "CAMEL.IMG" và "MAHER.IMG" sử dụng: 1 . Bộ lọc IIR thông thấp đáp ứng vuông với c = /2.0. 2 . Bộ lọc thông thấp đối xứng tuần hoàn với c = /2.0. Đầu tiên dùng đáp ứng có miền chuyển tiếp dốc, và sau đó dùng hàm Butterworth. So sánh kết quả với phương pháp FFT được mô tả trong chương 7. Chú ý: Để thiết kế đ ược bộ lọc trước tiên b ạn cần chạy "IMPULSE.EXE" theo "IIRD.EXE". Với đáp ứng vuông bạn sẽ cần phải hoặc là thêm một số thay đ ổi vào chương trình hoặc là viết một chương trình riêng để sinh và lưu trữ dữ liệu biên độ tần số trong một file. Ch ương trình IMPULSE.C cho phép đọc dữ liệu được sinh ra từ bên ngoài. Một chương trình mẫu để sinh ra dữ liệu phù hợp với IMPULSE.C được cho trong chương trình 9.5. Chương trình 9.5 “GEN-DATA.C”. Chương trình mẫu tạo tạo dữ liệu đáp ứng tần số cho “IMPULSE.C”. /* Program 9.5 "GEN-DATA.C". Sample program for generating frequency- response data for "IMPULSE.C". */ #define pi 3.141592654 #include #include main() { int i,j,ii,jj,N,N1,kk; float Do,H; FILE *fptr; 206
  7. char file_name[14]; clrscr(); printf ("\nEnter number of data points to be generated (e.g. 32x32)-->"); scanf("%dx%d",&N1,&N1); printf("Enter file name for storing mag. response-->"); scanf("%s",file_name); fptr=fopen(file_name,"w"); N=N1/2; printf ( "Enter cut-off ( less than pi )-->"); scanf("%f",&Do); kk=(int)((Do/pi)*(float)N); kk*=kk; H ình 9.13 Đáp ứng tần số của bộ lọc nội suy 2  2 từ đáp ứng hình vuông với m iền chuyển tiếp dốc và c = 1.4. fprintf(fptr,"%d %d ",N1,N1); for(i=0;i
  8. else H=0.0; fprintf(fptr,"%f ",H); } } fclose(fptr); } Trư ớc khi kết thúc chương này chúng ta sẽ thiết kế lại bộ lọc của h ình 9.12 sử dụng thay cho bộ lọc FIR. Đáp ứng biên độ tần số của bộ lọc FIR kích thước 5  5 sử dụng cửa sổ Blackmann đ ược chỉ trên hình 9.13. Rõ ràng là giải chuyển đổi có độ dốc hơn nhiều so với hình 9.12. Bộ lọc FIR 5  5 có 25 hệ số so với 17 hệ số của bộ lọc FIR kích th ước 2  2. Mặc dù vậy bộ lọc FIR có nhiều lợi thế so với bộ lọc IIR, chúng linh động hơn và có bậc cao hơn nhiều. Vấn đề khó khăn của bộ IIR là độ ổn định không được bảo đảm, và pha tuyến tính thực sự là không có thể. Tuy nhiên, phương pháp được mô tả trong chương này, mặc dù không đ ảm bảo tính ổn định, nhưng dường như ổn định với pha gần tuyến tính. Bài tập 9.5 Viết ch ương trình đ ể nhân đôi độ phân giải ảnh sử dụng bộ kiểu lọc FIR, dùng phương pháp được mô tả trong mục 9.8. Bài tập 9.6 Lặp lại b ài tập 9.4 dùng bộ lọc FIR để thay thế. Thử những hàm cửa sổ khác nhau. Bài tập 9.7 Đảo ngược từng bước giải thích trong phần này để thu được sự thay đổi ảnh. Điều n ày rất hữu ích ch o ứng dụng TV trong đó chúng được biết như ảnh trong ảnh, ở đó một ảnh nhỏ đặt lên trên một ảnh lớn trên màn hình hiển thị của một kênh khác. Bạn sẽ cần phải đảo lọc, và bộ lọc đảo có thể không ổn định. Nếu đây là m ột vấn đề bạn cần phải thiết kế một bộ lọc m ới để xấp xỉ bộ lọc thông cao miền chuyển tiếp dốc với đối xứng vuông, và một vài kết quả ở tần số 0,0. Sau khi lọc, các điểm khác và các dòng khác đ ược sử dụng để hiển thị ảnh. Bài tập 9.8 Tham kh ảo 5 (trang 482- 483) cung cấp bộ lọc nội suy 2 -D cho việc phóng đại ảnh. Tận dụng bộ lọc IIR trình bày trên trang đó và so sánh kết quả. Tác giả cũng đề nghị rằng bộ lọc nội suy theo bộ lọc thông cao. Thực hiện lời đề 208
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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