Các thuộc tính của ảnh số trong Xử lý ảnh số
Trang 1Chơ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
)(tan
k x
k x
r
i k
4 Rút ra biến đổi ngợc FFT của file cuối cùng
Để đ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>
Trang 2#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 *,
float *buffi,*buffo, max,min,scale;
unsigned char file_name[14], *buff,file_name2[14];
Trang 3/* Allocating memory for bit reversal LUT.*/
L=(unsigned int *)malloc(N*sizeof(unsigned int));
/* Generate Look-up table for bit reversal.*/
Trang 4Hình 7.2 Tách riêng biên độ của ảnh "IKRAM.IMG".
Trang 5Chơ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ácthô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ácphé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 đâychú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ấymẫu đợc cho bởi
T W
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)
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:
Để 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/TT.
T r
nT j
X n
) 1 2 (
) ( 2
1 )
Trang 6rn j nT j
T
r j j X n
2
1 )
Nếu thay đổi thứ tự của tích phân và tính tổng và chú ý rằng e j2rn 1 với mọi
giá trị nguyên của r và n, thì chúng ta rút ra
r j T j X T
n
r a
T
r j j X T
e
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êntục và biến đổi Fourier của một dãy các mẫu Cho ví dụ, nếu X a(j đợ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 T ( 1 / 2W) 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 a(j , thì ) X e( j )đợc xác định thành
X a(j 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 a(j 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:
130
Trang 8Hì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 )
T e
T k
Tk j a
x
/ /
) (
2 ) ( )
kT t T
kT t T kT x t
x
)(
)(
sin)()
(
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
ở đâ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à 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:
132
) (
) (
sin
2
2
H H
H H
T k y T
T k y T
Trang 9(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àntrong 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áchtá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épchiế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 ảnhkhô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ể
Trang 10ở đâ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ì
H T
V T
V T
H W V W
Trang 11Hì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
1 1
2
1 6
10 6
10
W W
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ù saochă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 quantâ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ềnkhô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
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ùngvớ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ẫuWhittaker-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 ( , )1 2 FFT i n n { ( , )( )1 2 1 n n1 2}
phổ tần số sẽ phải có gốc toạ độ ở trung tâm của mảng FFT
Trang 123 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à ảnhgố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ẫutrong ả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ả ápdụ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ỡitrê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.*/
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 *,
Trang 13N 2
Trang 14}
}
Hình 7.7 "CAMEL.IMG" và ảnh đã đợc phóng to.
N2=N<<1;
/* Allocating memory for bit reversal LUT.*/
L=(unsigned int *)malloc(N2*sizeof(unsigned int));
/* Generate Look-up table for bit reversal.*/
Trang 15/* Adding zeros to double the size of the FFT.*/
/* 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++)
/* Taking the inverse FFT.*/
printf("Taking the inverse FFT.\n");
Trang 167.5.2 Nhân đôi độ phân giải trên ảnh dùng phép nội suy không gian
Trong phơng pháp này ảnh đầu tiên đợc chứa lên một mảng có kích thớc 2N 2N với tất cả các hàng và các cột đợc xoá về không ảnh đợc chiếu lần lợt với các
phép nội suy Hình 7.8 liệt kê các phần của các phép nội suy phổ biến nhất Giảithuật nội suy vuông là thao tác sao chép trong đó những điểm ảnh về cơ bản đợc saoché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ợphai toán tử nội suy vuông, vì vậy ta có thể thu đợc cùng kết quả nếu ta áp dụng liêntiế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ọcthô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ợptoá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 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à lu 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ủaphé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áptrong 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ùngcủ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ạicủ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ácgiá trị 0 Thủ tục thực hiện thuật toán này đợc cho trong chơng trình 7.3
Trang 17int 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 } };
unsigned int **a,n1,n2,k1,k2,sum,max,min,*bufft;
unsigned char **w,*buffi,*buffo,*temp;
printf("%s does not exist.",file_name);
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)
{
Trang 19/*Allocating memory for image transfer buffer.*/
w=(unsigned char **)malloc(N*sizeof(char *));
Trang 20ta sẽ đề cập nhiều hơn về vấn đề này trong chơng 8 Tổng quan về ảnh mờ sẽ đợcthảo luận trong chơng 10.
7.6 Bộ lọc sai phân thống kê Wallis
Bởi vì phóng đại ảnh là một dạng của tăng cờng ảnh, sẽ là thích hợp khi giới thiệu
bộ lọc sai phân thống kê tại thời điểm này Kiểu lọc này đợc phát triển bởi Wallis là
đặc biệt hữu ích trong việc tăng cờng các chi tiết trong vùng tối Vấn đề này nảysinh trong ảnh x-quang nh chỉ trên hình 7.10 Trong giải thuật lọc Wallis mỗi điểm
đợc điều chỉnh bằng phép trừ giá trị trung bình của các điểm lân cận và chia với độlệch chuẩn của các điểm lân cận của nó ảnh lọc Wallis thờng đợc trung bình với ảnhgốc Nguyên nhân phải thực hiện việc trung bình ảnh này là để ngăn cản việc loại bỏtoàn bộ nền Kích thớc của vùng lân cận thờng đợc nói đến nh bậc của bộ lọc Kếtquả của áp dụng bộ lọc Wallis bậc 5 đợc chỉ trên hình 7.11
144
Trang 22Hình 7.11 Xử lý ảnh hình 7.10 với bộ lọc Wallis.
Bài tập 7.2
Viết chơng trình C cho bộ lọc thống kê Wallis Cho phép ngời sử dụng có thểtrung bình ảnh đầu ra với ảnh gốc Cho phép ngời sử dụng nhập bậc của bộ lọc.Kiểm tra chơng trình trên ảnh XRAY.IMG và RIBS.IMG có sẵn trên đĩa kèmtheo
146