Tải bản đầy đủ (.pdf) (10 trang)

Các thuộc tính của ảnh số part 1 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (542.6 KB, 10 trang )

125
Chơng
7

Các thuộc tính của ảnh số
7.1 Chỉ dẫn
Trong chơng này chúng ta sẽ nghiên cứu các vấn đề sau:

Tầm quan trọng của pha trong các ảnh số.
Các giả thiết lấy mẫu 2-D với các ứng dụng trên các ảnh.
Nhân đôi độ phân giải trên ảnh.
7.2 Tầm quan trọng của pha
Trong chơng 6, phần 6.4.2, tầm quan trọng của đặc tính tuyến tính
hoặc đặc tính pha zero cho các bộ lọc 2-D đã đợc đề cập. Tuy nhiên,
chúng ta cha kiểm tra tác dụng phân bố đặc tính pha của các ảnh số đối
với các nội dung thông tin có trên ảnh. Để làm vậy, chúng ta sẽ đa ra
hai thử nghiệm.

Thử nghiệm 1:

1. Rút ra 2-D FFT của một ảnh đợc cho.
2. Tính đặc tuyến pha:












)(
)(
tan
kx
kx
r
i
k


ở đây x
i
(k) biểu diễn cho các phần giá trị ảo và x
r
(k) biểu diễn các giá
trị thực của FFT.
3. Tính toán và lu trong một file các giá trị phức

cos( ) sin( ),

k k
i i = - 1

4. Rút ra biến đổi ngợc FFT của file cuối cùng.

126
Để đa các bớc trên, chơng trình 7.1 đợc cung cấp. Chơng trình
thực hiện trên ảnh IKRAM.IMG của hình 3.2a (Chơng 3). Kết quả

đợc đa ra trên hình 7.1.



Chơng trình 7.1 "PHASE.C". Kiểm tra tầm quan trọng của pha.

/* Program for testing the importance of phase in digital images.*/

#define pi 3.141592654

#include <stdio.h>
#include <math.h>
#include <alloc.h>
#include <stdlib.h>
#include <io.h>
#include <string.h>
#include <conio.h>

void bit_reversal(unsigned int *, int , int);
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);

127
H×nh 7.1 T¸ch riªng pha ®èi víi ¶nh "IKRAM.IMG".

void main()
{

int N,n2,m,i,j,NT;
unsigned int *L;
float *wr,*wi ;
double nsq,xr,xi,theta;
FILE *fptri,*fptro,*fptrt,*fptrr;
float *buffi,*buffo, max,min,scale;
unsigned char file_name[14], *buff,file_name2[14];

clrscr() ;
printf("Enter name of file containing FFT data >");
scanf("%s",file_name);
fptri=fopen(file_name,"rb");
if(fptri==NULL)
{
printf("\nFile does not exist.");
exit(1);
}
fptrt=fopen("temp.img","wb+");
again :
128
gotoxy(1,2);
printf(" ");
gotoxy(1,2);
printf("Enter File for storing display IFFT data->");
scanf("%s",file_name);
if(((stricmp("temp.img",file_name2))==0)||
((stricmp("temp2.img",file_name2))==0))
printf("This is a reserved file name. Use some other name.");
goto again;
fptrr=fopen(file_name,"wb");

nsq=(double)filelength(fileno(fptri))/(2*sizeof(float));
N=(int)sqrt(nsq);
m=(int)(log10((double)N)/log10((double)2));

clrscr( ) ;
NT=2*N*sizeof(float);
buffi=(float *)malloc(NT*sizeof(float));
buffo=(float *)malloc(NT*sizeof(float));
buff=(char *)malloc(N*sizeof(char));
for(i=0;i<N;i++)
{
fread(buffi,NT,1,fptri);
for(j=0;j<N;j++)
{
xr=(double)buffi[2*j];
xi=(double)buffi[2*j+1];
theta=atan2(xi,xr);
buffo[2*j]=100.0*(float)cos(theta);
buffo[2*j+1]=100.0*(float)sin(theta);
}
fwrite(buffo,NT,1,fptrt);
}
fclose(fptri);
rewind(fptrt);

/* Allocating memory for bit reversal LUT.*/
L=(unsigned int *)malloc(N*sizeof(unsigned int));

/* Generate Look-up table for bit reversal.*/
bit_reversal(L,m,N);


/* Allocating memory for twiddle factors.*/
129
n2=(N>>1)-1;
wr=(float *)malloc(n2*sizeof(float));
wi=(float *)malloc(n2*sizeof(float));
fptro=fopen("temp2.img","wb+"),
WTS(wr,wi,N,1);
FFT2D(fptrt,fptro,wr,wi,L,N,m,1);
fptro=fopen("temp2.img","rb");
max=0.0; min=1.e10;
for(i=0;i<(N-30);i++)
{
fread(buffi,NT,1,fptro);
if(i<11) continue;
for(j=0;j<N;j++)

H×nh 7.2 T¸ch riªng biªn ®é cña ¶nh "IKRAM.IMG".

{
if(buffi[2*j]>max) max=buffi[2*j];
if(buffi[2*j]<min) min=buffi[2*j];
}
}
rewind(fptro);
scale=255.0/(max-min);
for(i=0;i<N;i++)
130
{
fread(buffi,NT,1,fptro);

for(j=0;j<N;j++)
buff[j]=(char)((buffi[2*j]-min)*scale);
fwrite(buff,N,1,fptrr);
}
fcloseall();
remove("temp.jmq");
remove("tempLimg");
}

Thử nghiệm 2:

1. Rút ra FFT của một ảnh.
2. Rút ra đặc tính biên độ

| | ( ) ( )H x k x k
k
r i

2 2

3. Chứa trong một file dữ liệu phức
(| | . )H i
k

0 0
4. Rút ra biến đổi ngợc FFT của file cuối cùng.

Chơng trình 7.1 có thể dễ dàng thay đổi lại để kết hợp với các bớc
trên. Kết quả chạy thử nghiệm 2 trên ảnh IKRAM.IMG đợc cho hình
7.2.

Có thể thấy rõ ràng từ hai thử nghiệm trên rằng đặc tính pha mang gần
hết các thông tin trong ảnh. Điều này đúng với hầu hết các ảnh, bởi vậy
khi thực hiện các phép toán nh lọc 2-D với mục đích tăng cờng ảnh ta
nên tránh làm biến dạng pha. Điều này cho thấy sự cần thiết của các toán
tử 2-D tuyến tính hoặc có pha zero.
7.3 Định lý lấy mẫu Whittaker-Shannon
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.

Định lý: 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
131
T
W

1
2

ở đây T tính theo giây và W tính theo herzt.
Chứng minh. Xem xét biểu diễn Fourier của một dãy các tín hiệu liên
tục x
a
(t)





dejXtx

tj
aa
)(
2
1
)(

(7.1a)





dtetxjX
tj
aa
)()( (7.1b)
Nếu x(n) biểu diễn một dãy đợc rút ra từ việc lấy mẫu x
a
(t) tại các
khoảng bằng nhau T, chúng ta có thể dùng biểu thức (7.1a) để viết:





dejXnTxnx
nTj
aa
)(

2
1
)()(

(7.2)
Từ biến đổi rời rạc Fourier chúng ta cũng rút ra









deeXnx
njj
)(
2
1
)(
(7.3)
ở đây
X e
j
( )

là biến đổi Fourier rời rạc của x(n). Bây giờ cần tính mối
quan hệ )( jX
a

theo X e
j
( )

.
Để xem xét mối quan hệ giữa các biểu thức (7.2) và (7.3) ta cần xem
xét biểu thức (7.2) nh một tổng của các tích phân trong các khoảng có
độ dài 2

/T.









r
T
r
T
r
nTj
a
dejXnx




)12(
)12(
)(
2
1
)( (7.4)
Mỗi phần trong tổng có thể quy về tích phân trong khoảng từ
T

đến
T

bằng cách thay đổi biến để rút ra








r
T
T
rnjnTj
a
dee
T
r
jjXnx






2
)
2
(
2
1
)( (7.5)
132
Nếu thay đổi thứ tự của tích phân và tính tổng và chú ý rằng 1
2

rnj
e


với mọi giá trị nguyên của r và n, thì chúng ta rút ra

















de
T
r
jjXnx
nTj
T
T
r
a




)
2
(
2
1
)( (7.6)
Với thay thế , biểu thức (7.6) trở thành








de
T
r
j
T
jX
T
nx
nj
r
a













)
2

(
1
2
1
)( (7.7)
có cùng dạng với biểu thức (7.3). Vì vậy, chúng ta có thể xác định





r
a
j
T
r
j
T
jX
T
eX )
2
(
1
)(


(7.8)
Tơng tự, chúng ta có thể biểu diễn biểu thức (7.8) theo biến tần số
tơng tự nh







r
a
Tj
T
r
jjX
T
eX )
2
(
1
)(

(7.9)

Biểu thức (7.8) và (7.9) cung cấp mối quan hệ giữa biến đổi Fourier
thời gian liên tục và biến đổi Fourier của một dãy các mẫu. Cho ví dụ,
nếu X j
a
( )

đợc giới thiệu trong hình 7.3a, thì X e
j
( )


sẽ đợc giới thiệu
trong hình 7.3b nếu W (/T) (hoặc T (2/2W)), cụ thể, nếu W tính
theo hezt )2/1( WT

. Vì thế, nếu lấy mẫu tại tốc độ tối thiểu gấp đôi tần
số cao nhất trong x j
a
( )

, thì X e
j
( )

đợc xác định thành X j
a
( )

trong
khoảng
T
T



. Tần số lấy mẫu này thờng đợc gọi là tần số
Nyquist. Nếu T 1/(2W), thì các bản dịch của X j
a
( )


sẽ bị chồng lên
nhau nh trong hình 7.3c. Vấn đề này gọi là hiện tợng trùm phổ
(aliasing).
Nếu T 1/(2W) (W tính theo hezt), thì có khả năng khôi phục x
a
(t) từ
x(nT) bởi một phép nội suy xấp xỉ, mà sẽ đợc chúng ta đề cập đến phần
tiếp theo.
Từ phép biến đổi Fourier thời gian liên tục:
133





T
T
tj
aa
dejXtx



)(
2
1
)(
134
(7.10)


















w

-w

X
a
(j)
BiÕn ®æi Fourier cña tÝn
hiÖu liªn tôc
(a)

w
T




-w

w


X(e
j

)

(b)

T


T


w

)(

j
eX

w
T




-w
(c)
T


T


×