1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình xử lý ảnh y tế Tập 1a P13 pptx

10 334 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 208,13 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lý do của sự biến dạng này là tất cả các điểm đều phải chịu một sự dịch chuyển vị trí khác nhau tuỳ theo vị trí của ảnh.. Rút ra 1-D FFT cho tất cả các hàng của mảng dịch chuyển trung gi

Trang 1

ip=1;

kk=(N>>1 );

incr=2;

for(iter=0; iter<m_output; iter++)

{

for(j=0; j<N; j+=incr)

{

i=j+ip;

Tr=xr[i];

Ti=xi[i];

xr[i]=xr[i]-Tr;

xi[i]=xi[i]-Ti;

xr[j]=xr[j]+Tr;

xi[j]=xi[j]+Ti;

}

if(iter!=0)

{

for(k=1;k<ip; k++)

{

l=k*kk-1 ;

for(j=k; j<N; j+=incr)

{

i =j+ip;

Tr=xr[i]*wr[l]-xi[i]*wi[l];

Ti=xr[i]*wi[l]+xi[i]*wr[l];

xr[i]=xr[j]-Tr;

xi[i]=xi[j]-Ti;

xr[j]=xr[j]+Tr;

xi[j]=xi[j]+Ti;

}

}

}

kk>>=1;

ip<<=1;

incr<<=1;

}

for(iter=m_output; iter<m; iter++)

{

for(j=0; j<N; j+=incr)

{

Trang 2

i=j+ip;

xr[j]=xr[j]+xr[i];

xi[j]=xi[j]+xi[i];

}

for(k=1; k<N_output; k++)

{

l=k*kk-1 ;

for(j=k; j<N; j+=incr)

{

i=j+ip ;

Tr=xr[i]*wr[l]-xi[i]*wi[l];

Ti=xr[i]*wi[l]+xi[i]*wr[i];

xr[j]=xr[j]+Tr;

xi[j]=xi[j]+Ti;

}

}

kk>>=1;

ip<<=1;

incr<<=1;

}

}

Bài tập 6.4 Cho một bộ lọc thông cao Butterword:

2

2 0 ) 1 2 ( 1

1 )

(

ở đây 0 = 0.3, phát triển một chương trình C tính ra 1024 mẫu của đặc tuyến tần số trên các khoảng bằng nhau của tần số  từ 0 đến  Dùng các mẫu này tính năm mẫu đầu tiên của đáp ứng xung dùng FFT giảm lược

6.4 2-D FFT

Một DFT hai chiều của tín hiệu lấy mẫu hai chiều h(k 1 ,k 2 ) cho bởi

)}

, ( {

) , ( )

, (

2 1

1 0

1 0

) (

/ 2 2 1 2

1

1 2

2 2 1 1

k k h DFT

e k k h n

n H

N k

N k

k n k n N j

ở đây n 1 = 0,1,2 , , N-1

Trang 3

n 2 = 0,1,2, , N-1

Biểu thức j2 /N( k1 n2k2)

e   trong hai dấu tổng gọi là hạt nhân của phép biến đổi

H(n 1 ,n 2 ), trong trường hợp tổng quát, đầy đủ có thể biểu diễn theo:

H(n 1 , n 2 )A(n 1 , n 2 ) e j  (n 1 , n 2 )

Trong không gian ba chiều, A(n 1 ,n 2 ) và  (n 1 ,n 2 ) nằm tại vị trí của n 1 và n 2

gọi là phổ tần số và phổ pha của H(n 1 ,n 2 )

6.4.1 Biến đổi ngược 2-D DFT

Hàm h(k 1 ,k 2 ) là biến đổi ngược của 2-D DFT (IFFT) của H(n 1 ,n 2 ) và được cho

bởi biểu thức

1 0

1 0

) (

/ 2 2 1 2

2 1

1 2

2 2 1 1 )

, (

1 ) , (

N n

N n

k n k n N j e n n H N

k k

6.4.2 Một số tính chất của 2-D DFT

Chuyển đổi Từ định nghĩa của 2-D DFT và IDFT cho thấy

) ,

( )

,

2 2 1

2 1

b n a n H e

k k

j

(6.43) )

( 2 2 1 2

1

2 1

) , ( ) ,

j

e n n H b k a k

(6.44) Điều đó có nghĩa là một dịch chuyển pha tuyến tính trong một miền biểu diễn

bằng một dịch chuyển hằng số trong một miền khác Xem xét biểu thức (6.43),

trường hợp đặc biệt khi a = b = N/2

2 1 2

1 2

) , (k1 k2 e j (k k ) h k1 k2 e j k k ) h k1 k2 k k

Hay là

) 2

, 2 ( )

1 )(

,

n

N n H k

k

Nói cách khác, bằng cách nhân vào mỗi điểm (-1) k  1 k 2

trước khi lấy DFT, chúng

ta sẽ rút ra được một phổ tần số mà điểm tần số (0,0) của nó sẽ nằm giữa mảng

2-D Biểu thức này rất hữu dụng trong hiển thị phổ tần số, phổ biên độ và lọc dùng

DFT

Từ biểu thức (6.44) chúng ta rút ra kết luận rằng dịch chuyển một hằng số

trong ảnh sẽ không tác động đến phổ biên độ

) (

) (n1 n2 e 2 / .( 1 2 ) H n1 n2

Trang 4

Biểu thức (6.46) cũng quan hệ đến bộ lọc D Xem xét đặc tính của bộ lọc

2-D cho bởi

H(n1,n2)  A(n1,n2)ej2/N.(n1an2b)

ở đây A(n 1 ,n 2 ) là phổ biên độ Nếu một ảnh với phổ tần số cho bởi I(n 1 ,n 2 ) được lọc qua bộ lọc có đặc tuyến pha tuyến tính cho bởi biểu thức ở trên, kết quả sẽ là

a) -n a, -(n

)] , ( ) , ( [ ) , ( ] ) , ( [| 2 1 ) ( / 2 2 1 2 1 2 1 ) ( / 2 2 1 1 2 1 2 f b n a n N j b n a n N j i e n n A n n I n n I e n n A         (6.47) ở đây i f (n 1 -a, n 2 -b) ký hiệu cho ảnh đã được lọc Một bộ lọc với đặc tuyến pha tuyến tính có nghĩa là không dịch chuyển biên độ Trong khi đó nếu bộ lọc có đặc tuyến pha không tuyến tính thì pha của ảnh cũng bị biến dạng Lý do của sự biến dạng này là tất cả các điểm đều phải chịu một sự dịch chuyển vị trí khác nhau tuỳ theo vị trí của ảnh Tổng quát, ảnh đã được lọc có thể cho bởi i f (n 1 - f (n 1 , n 2 ), n 2 - f( n 1 , n 2 ))

ở đây f là hàm dịch chuyển vị trí Chú ý rằng một ảnh biến dạng pha sẽ xuất hiện trên màn hình như một ảnh mờ Tính đối xứng liên hợp và tuần hoàn Biến đổi2-D DFT và IDFT tuần hoàn với chu kỳ N có nghĩa là : N) n N, H(n

N) n , H(n ) n N, H(n ) n , (n 2 1 2 1 2 1 2 1        H (6.48)

N) k N, h(k

N) k , h(k ) k N, h(k ) k , h(k 2 1 2 1 2 1 2 1        (6.49)

Biến đổi DFT đối xứng liên hợp khi ) n , (-n * H ) n , H(n 1 21 2 (6.50) hoặc

) n , H(-n ) n ,

Quay Nếu chúng ta đặt k 1 và k 2 dưới dạng

k 2r cos 

sin r

Trang 5

thì h(k 1 , k 2 ) h( rsin  , rcos  )h(r,  )

Và tương tự cho n 1 , n 2

 sin n

cos n

1

2

hoặc H(n 1 , n 2 ) H(r,  )

từ định nghĩa của DFT chúng ta có thể có

h r( ,0) H( , 0) (6.52) Điều đó có nghĩa là nếu ảnh bị quay đi một góc  0 thì phổ của nó cũng bị quay

đi một góc như vậy

Phân phối và chia độ Từ biểu thức (6.1) chúng ta dễ thấy

a h 1 (k 1 , k 2 )b h 2 (k 1 , k 2 )aH 1 (n 1 , n 2 )bH 2 (n 1 , n 2 ) (6.53)

ở đây a,b là những độ chia Cũng như vậy

( 1, 2) 1 ( 1, 2)

b

n a

n H ab bk

ak

h  (6.54)

6.4.3 Giá trị trung bình

Mức cường độ sáng trung bình trong một ảnh cho bởi :

h

N k

N

1

0 1

0 1

1 1

( , ) (6.55) hoặc từ biểu thức (6.1) ta có thể viết

hH( , ) 0 0

Điều này có nghĩa là H(0,0) biểu diễn mức sáng của ảnh

6.4.4 Tích chập và sự tương quan

Tích chập của tín hiệu 2-D h 1 (k 1 ,k 2 ) và h 2 (k 1 ,k 2 ) cho bởi

k N

k

N

( 1, 2) 1( 1, 2) 2( 1 1, 2 2)

0 1

0 1

2 1

Nếu h 1 (k 1 ,k 2 ) được xác định trên miền

 k1 0,A1   k1 0,B1  

và nếu h (k ,k ) được xác định trên miền

Trang 6

 

k1  0,C1  k1 0,D1  

thì chúng ta có thể thấy rằng nếu hai tín hiệu có giá trị zero ngoài miền xác định

của chúng thì M = A + C - 1 và N = B + D - 1

Tích chập của hai tín hiệu 2-D được viết trong dạng ký hiệu như sau:

h 1 (k 1 , k 2 ) * h 2 (k 1 , k 2 )

Có thể thấy rằng

) n , (n )H n , (n H ) k , (k h

* ) k , (k

Điều này có nghĩa là, tích chập trong miền không gian biến thành phép nhân

bình thường trong miền tần số Tính chất này có thể dùng cho lọc 2-D qua DFT

Chúng ta cần nhớ lại rằng bạn đã dùng kỹ thuật lọc FIR trong các chương trước

cho chức năng này Khi áp dụng các lọc bộ lọc FIR cho chức năng lọc bạn cần lấy

tín hiệu khoảng cách 2-D đã được biến thành tín hiệu có chu kỳ trước khi tiến

hành lấy DFT Sự không đồng bộ của chu kỳ trong biến đổi này cũng gây ra lỗi

như trong biến đổi 1-D Vì vậy, để tránh trường hợp này ta cần thêm các số 0 vào

cả hai các hàm không gian để cho chúng có kích thước M  N với M  A + C - 1

và N  B + D - 1

Tương quan hoặc tương quan chéo của tín hiệu 2-D định nghĩa bởi

g n n h k k h n k n k

k N

k

N

( 1, 2) 1( 1, 2) 2( 1 1, 2 2)

0 1

0 1

2 1

 (6.58)

Biểu thức này được viết dưới dạng ký hiệu

g n n( 1, 2)h k k1( 1, 2)h k k2( 1, 2) (6.59) Tương quan chéo thường được gọi là lọc kết hợp và dùng để phát hiện ra phần

đầu dấu hiệu các vết sắc nổi trên ảnh Nó có thể cho thấy rằng

h k k1( 1, 2)h k k2( 1, 2) H n n1( ,1 2).H n n2( ,1 2) (6.60)

6.5 2-D FFT

Biểu thức cho 2-D DFT có thể dưới dạng

1 1

1 2

2

2 2 / 1

0

1 0

/ 2 2 1 2

N k

N k

k n N j

e e

k k h n

n

 

2

/ 2 1

0

2 1 2

N k

e k k h k

k

Trang 7

với k 1 = 0,1,2, , N-1 Vì vậy mà biểu thức (6.61) có thể viết lại dưới dạng

k

N

j N n k

( ,1 2) ( 1, 2) . / .

0

1

2

1

1 1

với n 1 =0,1,2, ,N-1

Biểu thức (6.62) có thể mở rộng ra thành

2

/ 2 1

0 2

2) (0, ) ,

0

N k

e k h n

2 2 2

/ 2 1

0 2

2) (1, ) ,

1

N k

e k h n

v.v

Mỗi biểu thức trên biểu diễn DFT của một hàng trong ảnh

Biểu thức (6.63) cũng có thể mở rộng ra thành:

1

/ 2 1

0 1

1,0) ( ,0)

N k

e k G n

2 2 1

/ 2 1

0 1

1,1) ( ,1)

N k

e k G n

.v.v

Các biểu thức này dẫn ta đến giải thuật sau đây tính FFT hai chiều:

1 Tính 1-D FFT cho tất cả các hàng, và chứa kết quả vào mảng trung gian

2 Dịch chuyển mảng trung gian

Trang 8

3 Rút ra 1-D FFT cho tất cả các hàng của mảng dịch chuyển trung gian Kết quả là dịch chuyển của mảng 2-D FFT

Chúng ta có thể viết biểu thức (6.61) có dạng

2 1

12

1 2 / 1

0

1 0

/ 2 2 1 2

N k

N k

k n N j

e e

k k h n

n

 

Nếu chúng ta đặt

1

/ 2 1

0

2 1 2

N k

e k k h k

n

với k 2 = 0,1,2, , (N-1) thì

1 2 1

/ 2 1

0

1 1 2

N k

e k n G n

n

với n 1 = 0,1,2, , (N-1)

Các biểu thức này dẫn chúng ta đến thuật toán tính 2-D FFT sau

1 Dịch chuyển file ảnh

2 Tính FFT theo từng hàng một của ảnh đã được đọc

3.Dịch chuyển kết quả trung gian

4 Rút ra một hàng kề hàng FFT của dịch chuyển kết quả trung gian Kết quả

ta sẽ được 2-D FFT

Trong cả hai phương pháp dùng để rút ra 2-D FFT, kết quả trung gian đều đã phải dịch chuyển Phương pháp đầu tiên thường hay được sử dụng hơn vì nó chỉ yêu cầu một phép toán dịch chuyển Kết quả là một dịch chuyển của mảng 2-D FFT, có thể dùng trực tiếp dưới dạng ấy mà không đòi hỏi một phép dịch chuyển thứ hai

Chắc bạn sẽ có một câu hỏi rằng tại sao chúng ta cần phải dịch chuyển Lý do của sự dịch chuyển này là hệ thống của bạn có thể không có đủ bộ nhớ kích hoạt (RAM) để lưu trữ kết quả trung gian hoặc là FFT của ảnh Nếu bạn có đủ bộ nhớ RAM thì việc dịch chuyển này là không cần thiết, và bạn có thể đọc thẳng từng

Trang 9

cột từ bộ nhớ kích hoạt Dù sao đi chăng nữa thì sự lựa chọn vẫn là đọc thẳng từng cột và có kết quả trung gian chứa theo hàng Nếu là như vậy, chúng ta sẽ cần

N  N dữ liệu thêm vào từ đĩa cứng, yêu cầu thời gian nhiều hơn Nói một cách

khác, dịch chuyển file dẫn đến từng hàng một trong FFT của kết quả trung gian,

đòi hỏi nhiều hơn N lần truy nhập đĩa

Câu hỏi bây giờ là làm thế nào chúng ta có thể dịch chuyển một file trong trường hợp không thể chuyển tất cả dữ liệu một lần vào bộ nhớ kích hoạt Trong phần tiếp theo chúng ta sẽ đề cập đến phương pháp Eklundh để giải quyết vấn đề này

6.5.1 Ma trận dịch chuyển từ bộ nhớ ngoài

Thuật toán được giải thích rõ ràng nhất bằng một ví dụ đặc biệt Xem xét ma trận có kích thước 7  7 ở hình 6.10 Các bước của thuật toán thể hiện rõ ràng trên hình 6.10 Bạn cần chú ý rằng chương trình đòi hỏi ba lần lặp lại để dịch chuyển một ma trận có kích thước 23  23 Trong tất cả các lần lặp lại bạn cần phải giữ lại trong bộ nhớ kích hoạt tại hai hàng cuối cùng, cho phép lặp, tất cả là yêu cầu

yêu cầu N lần truy nhập đĩa cho xử lý một ảnh có kích thước N  N Nếu N = 2 r

thì r  N số lần truy nhập đĩa để dịch chuyển một ảnh, ít hơn nhiều so với N  N

lần truy nhập trong cách xử lý đọc một ảnh cơ bản từng khối một Số lần truy nhập đĩa có thể giảm xuống bởi đọc, ví dụ, bốn hàng hoặc tám hàng một lúc Thuật toán trong trường hợp tổng quát có thể coi như là sự phát triển của giải thuật FFT Bạn cần phát triển hai lưu đồ, một để lựa chọn hàng có thể đã được thêm dữ liệu vào và một để phát hiện ra phần tử đã thay đổi Những thuật toán này coi như là một bài tập Mã của chương trình nguồn cho tất cả các thuật toán này cho ở chương trình 6.5

Chương trình 6.5 “TRANSPOS.C” chương trình cho dịch chuyển một ma trận

/******************************

******************************/

/*This program is for obtaining the transpose of a large binary file

stored on secondary memory We assume that the file

is large to the

Trang 10

point that it would not fit in active memory, and the data type in the

file is character.*/

#include <stdio.h>

#include <alloc.h>

#include <math.h>

#include <io.h>

#include <conio.h>

#include <stdlib.h>

void transpose(FILE *, int, int);

void main()

{

int N,n;

char file_name[11];

FILE *fptr;

float nsq;

clrscr();

printf("Enter file-name to be transposed >");

scanf("%s",file_name);

fptr=fopen(file_name,"rb+");

if(fptr==NULL)

{

printf("%s does not exist ");

exit(1);

}

nsq=filelength(fileno(fptr));

N=sqrt((double)nsq);

n=(int)(log10((double)(N))/log10((double)(2.0)));

clrscr();

transpose(fptr,N,n);

fclose(fptr);

}

void transpose(FILE *fptr, int N, int n)

/* Algorithm */

{

int N1,inc;

Ngày đăng: 10/07/2014, 21:20

TỪ KHÓA LIÊN QUAN