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 P3

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

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

Chúng ta sẽ bắt đầu bằng xem xét định lý lấy mẫu trong trường hợp 1-D. Sau đây chúng ta sẽ nghiên cứu trường hợp các tín hiệu 2-D. Nếu một hàm x(t) không chứa tần số cao hơn W, có thể xác định một cách hoàn toàn bằng một toạ độ mà dãy các điểm chia cách nhau 1/(2W). Chu kỳ lấy mẫu được cho bởi

Chủ đề:
Lưu

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

  1. H ình 7.7 "CAMEL.IMG" và ảnh đ ã đ ược phóng to. N2=N
  2. /* Taking 2-D FFT. */ FFT2D(fptri,fptro,wr,wi,L,N,m,-1); clrscr() ; printf(" Adding zeros to FFT of image. \n"); /* Adding zeros to double the size of the FFT.*/ N4=N2
  3. printf("Last stage in forming enlarged image."); fptri=fopen("IFFT2.img","rb"); fptro=fopen(file_name,"wb"); buffr=(unsigned char *)malloc(N2*sizeof(char)); max=0; min=1.0e7; for(i=0;i
  4. ta có thể thu đư ợc cùng kết quả nếu ta áp dụng liên tiếp hai phép nội suy vuông. Giải thuật chuyển đổi những sao chép cơ b ản theo bộ lọc thông thấp sang ảnh để có được ảnh trơn hơn. Kết hợp thực hiện ba lần liên tục trên ảnh với toán tử nội suy vuông tương đương với áp dụng toán tử nội suy Bell. Toán tử nội suy bậc 3 có thể thu đư ợc nhờ kết hợp phép nội suy vuông và Bell hoặc kết hợp toán tử nội suy vuông bốn lần. Sử dụng cùng khái niệm đó, chúng ta có thể dễ d àng có được nội suy cao h ơn. Hình vuông: 11 1 1 Tam giác: 121 242 121 Bell 13 31 39 93 39 93 13 31 Cubic B-Spline 1 4 6 4 1 4 16 24 16 4 6 24 36 24 6 4 16 24 16 4 1 4641 Hình 7.8 Các phép nội suy thông thường. Những khái niệm trên có th ể được thực hiện trong phần mềm tương tự với việc thực hiện lọc FIR. Bộ đệm chuyển đổi ảnh kích thước N  (2  độ rộng của ảnh) được tận dụng, ở đó N = 2 cho toán tử nội suy vuông, N = 3 cho toán tử nội suy tam giác, v.v... Một hàng của ảnh được chuyển thành hàng cuối cùng của bộ đệm chuyển đổi ảnh và lưu trữ tại các vị trí khác với các vị trí ở giữa đặt bằng không. Tương quan của phép nội suy với bộ đệm truyền tới ảnh và dịch chuyển hàng như trong phương pháp trong bộ lọc FIR, một hàng của các giá trị 0 đ ược chuyển đổi thành hàng cuối cùng của bộ đệm chuyển đổi ảnh. Những bước n ày được lặp đi lặp lại cho những phần còn lại của ảnh, bằng cách lựa chọn sự chuyển đổi một h àng từ ảnh theo một hàng của các giá trị 0. Thủ tục thực hiện thuật toán n ày được cho trong chương trình 7.3. Chương trình 7.3 “ENLARGE.C”. /* This program doubles the dimensions of an image by interpolation. */ 144
  5. #include #include #include #include #include #include #include #include int SQUARE[2][2]={ { 1, 1 }, { 1, 1 }}; int TRIANGLE[3][3]= { { 1, 2, 1 }, { 2, 4, 2 }, { 1, 2, 1 } }; int BELL[4][4]={ { 1, 3, 3, 1 }, { 3, 9, 9, 3}, { 3, 9, 9, 3}, { 1, 3, 3, 1} } ; int CUBIC_B_SPLINE[5][5]={ { 1, 4, 6, 4, 1 }, { 4, 16, 24, 16, 4 }, { 6, 24, 36, 24, 6 }, { 4, 16, 24, 16, 4 } }; void main() { char file_name[14],ch; FILE *fptri,*fptro,*fptrt; double nsq; int image_length,image_width, N, N1,image_length2, image_width2,i,j,ind,xt,yt; unsigned int **a,n1,n2,k1,k2,sum,max,min,*bufft; unsigned char **w,*buffi,*buffo,*temp; float scale; clrscr(); printf("Enter file name for input image -->"); scanf("%s",file_name); fptri=fopen(file_name,"rb"); if(fptri==NULL) { printf("%s does not exist.",file_name); 145
  6. printf("\nPress any key to exit. "); getch() ; exit(1); } nsq=filelength(fileno(fptri)); printf("Is this a square image ?"); printf("\n i.e. Is image length =image width (y or no) ? -->"); while(((ch=tolower(getch()))!='y')&&(ch!='n')); putch(ch); switch(ch) { case 'y' : image_length=image_width=sqrt(nsq); printf("\n Image size = %d x %d",image_length, image_width); break; case 'n': printf("\nEnter image_width-->"); scanf("%d",&image_width); image_length=nsq/image_width; printf("Image length is %d", image_length); break; again : gotoxy(1,5); printf(" "); gotoxy(1,5); printf("Enter file name for enlarged image-->"); scanf("%s",file_name); if((stricmp("temp.img",file_name))==0) { printf("This is a reserved file name. Use some other name."); goto again; } gotoxy(1,6); printf ( " "); ind=access(file_name,0); while(!ind) 146
  7. { gotoxy(1,6); 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,6); printf ( " "); gotoxy(1,5); printf ( " "); gotoxy(1,5); printf("Enter file name -->"); scanf("%s",file_name); ind=access(file_name,0); } } fptro=fopen(file_name,"wb"); printf("\nEnter choice for interpolation \n"); printf(" 1.SQUARE. \n"); printf(" 2.TRIANGLE. \n"); printf(" 3.BELL. \n"); printf(" 4.CUBIC B-SPLINE. \n"); printf(" Enter choice (1,2,3 or 4) "); while(((ch=getche())!='l')&&(ch!='2') &&(ch!='3')&&(ch!='4')); N1=ch-48; N=N1+1 ; a=(unsigned int **)malloc(N*sizeof(int *)); for(i=0;i
  8. break; case 2: for(i=0;i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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