Các thuộc tính của ảnh số part 2 pps

10 389 0
Các thuộc tính của ảnh số part 2 pps

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

Thông tin tài liệu

135 Hình 7.3 Phổ tần số của trạng thái liên tục và trạng thái đã lấy mẫu của một tín hiệu. Nếu T T - )( 1 )( jX T eX a Tj (7.11) và k kTj a Tj ekTxeX )()( Kết hợp biểu thức (7.10) và (7.11) T T tj a dejX T tx )( 2 )( Vì vậy deekTx T tx tj T T k Tkj aa )( 2 )( Thay đổi thứ tự tính tổng và tích phân, k T T kTtj aa de T kTxtx / / )( 2 )()( Tính giá trị của tích phân chúng ta đợc k aa kTt T kTt T kTxtx )( )(sin )()( (7.12) Biểu thức (7.12) là phép nội suy cho phép khôi phục các tín hiệu liên tục theo thời gian x a (t) từ các mẫu của nó. Trờng hợp 2-D: Các định lý lấy mẫu 2-D giả thiết rằng hàm giới hạn băng f a (x,y) có thể khôi phục một cách hoàn toàn từ các mẫu mà thoả mãn T W H H 1 2 T W V V 1 2 (7.13) ở đây W H và W V biểu diễn giải thông theo hezt của tín hiệu 2-D theo chiều dọc và theo chiều ngang. Nếu biểu thức (7.13) đợc thoả mãn, và 136 f a (k 1 T V ,k 2 T H ) biểu diễn tín hiệu lấy mẫu 2-D, thì f a (x,y) có thể khôi phục từ f a (k 1 T V ,k 2 T H ) dùng biểu thức nội suy: )( )( (7.14) Chứng minh của các biểu thức (7.13) và (7.14) tơng tự nh trờng hợp 1-D và đợc để lại nh một bài tập. Một chú ý là phổ tần số của một tín hiệu lấy mẫu 2-D tuần hoàn trong miền tần số, nh trong hình 7.4. Tín hiệu tơng tự có thể đợc khôi phục bằng cách tách ra một chu kỳ từ phổ tín hiệu mẫu. 7.4 Định lý lấy mẫu áp dụng lên các ảnh Một ảnh đợc tạo nên bằng cách chiếu một cảnh 3-D lên mặt phẳng 2- D. Phép chiếu này biểu diễn một phép biến đổi từ nhiều vào một. Có nghĩa là một điểm ảnh không tơng ứng duy nhất với một điểm trong cảnh 3-D. Điều này đợc minh hoạ qua hình 7.5. Giả sử rằng ảnh này chứa N điểm ảnh theo hớng x. Sau đó cho các vật thể S 1 và S 2 trong hình 7.5 chúng ta có x N 1 10 mét (7.15) và N x 3 2 mét (7.16) Định lý lấy mẫu đòi hỏi: 1 1 2 1 W x )( )(sin 2 2 H H H H Tky T Tky T 137 (7.17) Hình 7.4 Phổ tần số của một tín hiệu lấy mẫu 2-D. và 2 2 2 1 W x (7.18) ở đây, W 1 là tần số cao nhất theo hớng x cho ảnh đợc tạo bởi một mình vật thể S 1 , và W 2 là tần số cao nhất theo hớng x cho ảnh đợc tạo bởi một mình vật thể S 2 . Bởi vì chúng ta chỉ có một ảnh bao gồm S 1 và S 2 nên W 1 = W 2 và N đợc xác định theo x N W 2 2 3 1 2 (7.19) Vì thế N = 6W 2 (7.20) 1 2 H T H T V T V T H W V W 138 Hình 7.5 ánh xạ một cảnh 3-D lên mặt phẳng ảnh 2-D. Thay N trong biểu thức (7.15) chúng ta đợc 112 1 2 1 6 10 6 10 WWW x Vì thế, giả thiết lấy mẫu không thoả mãn cho vật thể S 1 , và ở đây các thông tin của miền này trên ảnh không thể khôi phục qua phép nội suy. Nói một cách khác, các vật thể gần camera có khả năng tốt hơn khi lấy mẫu, trong khi các vật thể xa camera thì dễ dàng khi khôi phục mẫu. 7.5 Nhân đôi độ phân giải trên ảnh Kết quả của định lý lấy mẫu có thể dùng để tăng độ phân giải trên ảnh. Dù sao chăng nữa, dựa vào kết quả đã đạt đợc chúng ta có thể kết luận rằng nói chung thì không thể tăng độ phân giải của ảnh lên đợc. Trong các ảnh, các vật thể đáng quan tâm thông thờng đợc che hết bề mặt của ảnh. Vì thế, nếu các đối tợng trong nền không đợc cho độ phân giải d thừa, các vật thể cận cảnh thông thờng có đủ mẫu để cho phép dùng các định lý lấy mẫu. 139 7.5.1 Nhân đôi độ phân giải dùng sự thể hiện tần số của lý thuyết lấy mẫu 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: 1. Rút ra FFT của ảnh có kích thớc N N, cụ thể I k k FFT i n n n n ( , ) { ( , )( ) } 1 2 1 2 1 1 2 phổ tần số sẽ phải có gốc toạ độ ở trung tâm của mảng FFT. 2. Thêm các điểm 0 vào FFT nh giới thiệu trong hình 7.6 để tăng kích thớc của nó lên 2N 2N. 3. Rút ra biến đổi ngợc FFT của biến đổi tần số mở rộng. Kết quả thu đợc là ảnh gốc với độ phân giải tăng gấp đôi. Cần chú ý là các vật thể không lấy đủ mẫu trong ảnh gốc thì không cung cấp một sự phát triển trong độ phân giải. Để thực hiện các phơng pháp trên chúng ta sẽ bắt đầu với ảnh kích thớc 128 128 điểm và 256 mức xám trong hình 7.7a. ảnh đã có sẵn trên đĩa với file có tên là CAMEL.IMG. Thực hiện thuật toán trên đợc cho trong Chơng trình 7.2. Kết quả áp dụng trên ảnh đợc cho trong hình 7.7b. Rõ ràng là rất khó khăn để nhận ra ngời cỡi trên lạc đà, nếu ảnh gốc mặt ngời đó cha đợc lấy đủ mẫu. Chơng trình 7.2 ENLQFFT.C nhân đôi độ phân giải của một ảnh qua FFT. /*This program utilizes 2-D FFT to double the size of an image.*/ #define pi 3.141592654 #include <stdio.h> #include <math.h> #include <alloc.h> #include <stdlib.h> #include <io.h> #include <string.h> #include <ctype.h> #include <conio.h> void bit_reversal(unsigned int *, int , int); 140 void WTS(float *, float *, int, int); void FFT(float *xr , float *xi, float *, float *, int , int) ; void transpose(FILE *, int, int); void FFT2D(FILE *, FILE *, float *, float *, unsigned int *, int,int,int); void main() { int N,m,i,j,N2,N4,m2,n2,ind; unsigned int *L; float *wr,*wi; FILE *fptri,*fptro,*fptrt; double nsq; float *buffo,*buffi; unsigned char file_name[14],ch,*buffr; float max,min,scale; clrscr(); printf("Enter file name for image to be enlarged -> "); scanf("%s", file_name); fptri=fopen(file_name,"rb"); if(fptri==NULL) { printf("\n File does not exist."); exit(1); } nsq=filelength(fileno(fptri)); N=(int)sqrt(nsq); m=(int)(log10((double)N)/log10((double)2)); fptro=fopen("FFT1.img","wb+"); /* file for storing FFT of image.*/ again : gotoxy(1,2); printf ( " "); gotoxy(1,2); printf("Enter file-name for enlarged image -> "); scanf("%s",file_name); if(((stricmp("FFT1.img",file_name))==0)|| ((stricmp("temp.img",file_name))==0)|| ((stricmp("IFFT2.img",file_name))==0)) { 141 printf("This is a reserved file name. Use some other name."); Hình 7.6 Thêm các số 0 vào FFT thu đợc ảnh có tần số mở rộng. goto again; } gotoxy(1,2); printf ( " "); ind=access(file_name,0); while(!ind) { gotoxy(1,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 ; FFT của ảnh N N 2 1 2 2 T T T 0s 0s 0s 0s 2 N 2 N 142 case 'n' : gotoxy(1,3); printf(" "); gotoxy(1,2); printf (" "); gotoxy(1,2); printf("Enter file name >"); scanf("%s",file_name); ind=access(file_name,0); } } H×nh 7.7 "CAMEL.IMG" vµ ¶nh ®· ®îc phãng to. N2=N<<1; 143 /* Allocating memory for bit reversal LUT.*/ L=(unsigned int *)malloc(N2*sizeof(unsigned int)); /* Generate Look-up table for bit reversal.*/ bit_reversal(L,m,N); /* Allocating memory for twiddle factors. n2=N- 1 */ wr=(float *)malloc(n2*sizeof(float)); wi=(float *)malloc(n2*sizeof(float)); /*Generating LUT for twiddle factors.*/ WTS(wr,wi,N,-1); /* 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<<1 ; buffi=(float *)malloc(N2*sizeof(float)); buffo=(float *)malloc(N4*sizeof(float)); fptri=fopen("FFT1.img","rb"); fptrt=fopen("temp.img","wb+"); fptro=fopen("TFFT2.jmg","wb+"); for(i=0; i<N4; i++) buffo[i]=(float)0.0; /* store O's in the first N/2 lines.*/ for(i=0; i<(N>>1); i++) fwrite(buffo,N4,sizeof(float),fptrt); /* Store O's in the first and last N/2 rows.*/ for(i=0; i<N; i++) fread(buffi,N2,sizeof(float),fptri); for(j=0;j<N;j++) buffo[j]=(float)0.0; for(j=0;j<N2;j++) buffo[j+N]=buffi[j]; for(j=(N2+N);j<N4;j++) buffo[j]=(float)0.0; fwrite(buffo,N4,sizeof(float),fptrt); for(i=0; i<N4; i++) buffo[i]=(float)0.0; 144 for(i=0;i<(N>>1);i++) fwrite(buffo,N4,sizeof(float),fptrt); fclose(fptri); rewind(fptrt); /* Taking the inverse FFT.*/ printf("Taking the inverse FFT.\n"); m2=m+1 ; /* Generating bit reversal I(JT.*/ bit_reversal(L,m2,N2); WTS(wr,wi,N2,1); FFT2D(fptrt,fptro,wr,wi,L,N2,m2,1); clrscr() ; 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<N2;i++) { fread(buffo,N4,sizeof(float),fptri); for(j=0;j<N2;j++) { scale=buffo[j<<1]; if(scale>max) max=scale; if(scale<min) min=scale; } } scale=(float)255.0/(max-min); rewind(fptri); for(i=0;i<N2;i++) { fread(buffo,N4,sizeof(float),fptri); for(j=0;j<N2;j++) buffr[j]=(unsigned char)((buffo[j<<1]-min)*scale); fwrite(buffr,N2,sizeof(char),fptro); } fcloseall(); remove("FFT1.img"); remove("temp.img"); . một mình vật thể S 2 . Bởi vì chúng ta chỉ có một ảnh bao gồm S 1 và S 2 nên W 1 = W 2 và N đợc xác định theo x N W 2 2 3 1 2 (7.19) Vì thế N = 6W 2 (7 .20 ) 1 2 H T H T V T V T H W V W . giải của ảnh lên đợc. Trong các ảnh, các vật thể đáng quan tâm thông thờng đợc che hết bề mặt của ảnh. Vì thế, nếu các đối tợng trong nền không đợc cho độ phân giải d thừa, các vật thể cận cảnh. ( , )( ) } 1 2 1 2 1 1 2 phổ tần số sẽ phải có gốc toạ độ ở trung tâm của mảng FFT. 2. Thêm các điểm 0 vào FFT nh giới thiệu trong hình 7.6 để tăng kích thớc của nó lên 2N 2N. 3. Rút

Ngày đăng: 29/07/2014, 04:20

Từ khóa liên quan

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

Tài liệu liên quan