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

Phân tích và xử lý ảnh

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 (2.85 MB, 57 trang )

Lời nói đầu
Xử lý ảnh số (Digital Image Processing) hiểu theo nghĩa rộng bao gồm tất cả
các thao tác trên ảnh số như tăng cường ảnh, phục hồi ảnh, nhận dạng, phân đoạn
ảnh,. . . Tuy nhiên nếu xét theo nghĩa hẹp, hay nghĩa cổ điển, thì nó là một quy trình
xử lý mà đầu vào là ảnh số, và đầu ra cũng là ảnh số. Nói như vậy nghĩa là việc nhận
dạng ảnh không nằm trong phạm vi xử lý theo nghĩa này. Thay vào đó, việc xử lý
ảnh hiểu theo nghĩa tự nhiên nhất chính là tăng cường ảnh, tức là làm ảnh trở nên
đẹp hơn, tốt hơn hay rõ hơn. Ở đây chúng tôi cũng chỉ quan tâm đến khía cạnh này.
Về mặt lý thuyết, có nhiều phương pháp tăng cường ảnh, nhưng nhìn chung chúng
chỉ thuộc một trong hai loại sau: xử lý trên miền không gian và xử lý trên miền tần
số. Xử lý ảnh trên miền không gian tuy trực quan hơn nhưng không đủ sắc sảo và
không đáp ứng được những yêu cầu cao về ảnh. Với lý do như vậy, bài viết này nhằm
giới thiệu tổng quan phương pháp tăng cường ảnh trên miền tần số. Ở đây, chúng tôi
mô tả một cách chi tiết cơ sở lý thuyết của phương pháp này, hơn là tập trung vào
các ứng dụng cụ thể của nó.
Tuy đã hết sức cố gắng nhưng bài viết này chắc chắn khơng thể tránh khỏi những
sai sót. Vì vậy chúng tôi rất mong nhận được những ý kiến chân thành từ độc giả.
Mọi đóng góp xin liên hệ nhóm tác giả:
Phạm Ngọc Tuân
Số điện thoại: 0955330136 / 0873074243
Email: pntuanaaa[at]yahoo.com.vn
Nguyễn Quốc Thông
Số điện thoại: 01283596421 / 0838109167
Email: hitman4756[at]yahoo.com
Đặng Nguyễn Đăng Nguyên
Số điện thoại: 0989983266 / 06503715263
Email: dangnguyen325[at]yahoo.com.vn

Thành phố Hồ Chí Minh,
Ngày 13 tháng 11 năm 2009.


1

CuuDuongThanCong.com

/>

Mục lục
1 Cơ
1.1
1.2
1.3

sở xử lý ảnh trên miền tần số
Hạn chế của xử lý ảnh trên miền không gian . . . . . . . . . . . . . .
Ý tưởng xử lý trên miền tần số . . . . . . . . . . . . . . . . . . . . .
Tính tốn chi tiết . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
4
5
17

2 Cải
2.1
2.2
2.3

tiến kỹ thuật
Hạn chế của kỹ thuật trước . . . . . . . . . . . . . . . . . . . . . . .
Phương pháp cải tiến . . . . . . . . . . . . . . . . . . . . . . . . . . .

Biến đổi Fast Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . .

23
23
23
40

3 Ứng dụng
3.1 Làm trơn ảnh . .
3.1.1 Lọc tần số
3.1.2 Lọc tần số
3.1.3 Lọc tần số
3.2 Làm sắc ảnh . . .
3.2.1 Lọc tần số
3.2.2 Lọc tần số
3.2.3 Lọc tần số

. . . . . . . . . . .
thấp Ideal . . . . .
thấp Butterworth .
thấp Gauss . . . .
. . . . . . . . . . .
cao Ideal . . . . .
cao Butterworth .
cao Gauss . . . . .

4 Chương trình Matlab
4.1 Dùng khai triển Fourier
4.2 Dùng FFT . . . . . . . .
4.2.1 Làm trơn ảnh . .

4.2.2 Làm sắc ảnh . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.

.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.


.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.

.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.


.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.

.
.
.
.
.

.
.
.
.

Tài liệu tham khảo

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.

.

.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.


.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.

.
.

.
.
.
.
.
.

45
46
46
48
48
50
50
50
50

.
.
.
.

51
51
53
54
55
57

2


CuuDuongThanCong.com

.
.
.
.
.
.
.
.

/>

Danh sách hình vẽ
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9

Đồ thị hàm f (x) . . . . . . . . . . . . . . .
Đồ thị hàm y = b1 sin x . . . . . . . . . . . .
Đồ thị hàm y = b2 sin 2x . . . . . . . . . . .
Đồ thị hàm y = b3 sin 3x . . . . . . . . . . .
Đồ thị hàm y = b4 sin 4x . . . . . . . . . . .

Đồ thị hàm y = b5 sin 5x . . . . . . . . . . .
Đồ thị hàm y = 5k=1 bk sin kx và y = x . . .
Đồ thị hàm y = cos x, y = cos 3x, y = cos 9x
Các pixel của ảnh số . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

5
7
7
7
8

8
8
9
17

2.1
2.2
2.3
2.4
2.5

Đồ thị hàm |G| . . . . . . . . . . . . . . .
Đồ thị hàm g . . . . . . . . . . . . . . . .
Đồ thị hàm |F | . . . . . . . . . . . . . . .
(a) Trước khi dời trục, (b) Sau khi dời trục
Sơ đồ xử lí ảnh màu . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.

.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.

.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.

.
.
.
.

.
.
.
.
.

29
29
35
36
39

3.1
3.2
3.3

Hàm lọc ILPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
(a)Văn bản bị rỗ. (b)Văn bản sau khi được lọc tần số thấp . . . . . .
(a) Ảnh với kích thước 500 x 500 pixels (b) Phổ Fourier của ảnh. Các
vòng tròn với bán kính lần lượt là 5, 15, 30, 80, và 230 pixel. . . . . .
Hàm lọc BLPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hàm lọc GLPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
(a) Ảnh nhòe, (b) Ảnh sau khi được lọc Butterworth với D0 = 320, n = 2

3.4

3.5
3.6

.
.
.
.
.

3

CuuDuongThanCong.com

/>
47
47
48
49
49
50


Chương 1
Cơ sở xử lý ảnh trên miền tần số
1.1

Hạn chế của xử lý ảnh trên miền không gian

Biện pháp xử lý ảnh trên miền không gian là khá trực quan. Trên miền không gian,
độ xám tại một pixel trong ảnh mới bằng một biểu thức tuyến tính giữa độ xám của

các pixel kế cận trong ảnh cũ. Như vậy, để làm các chi tiết trên ảnh trơn hơn, ta có
thể tính độ xám tại pixel (x,y) trên ảnh mới bằng trung bình cộng độ xám của chính
nó và 8 pixel lân cận trong ảnh cũ
1

1
f (x + i, y + j)
g(x, y) =
9 i,j=−1

(1.1)

Nếu muốn làm các chi tiết trên ảnh nổi bật hơn, ta có thể tính độ xám tại pixel (x,y)
trên ảnh mới bằng một trung bình có trọng số độ xám của chính nó và 8 pixel lân
cận trong ảnh cũ, trong đó trọng số ứng với f (x, y) là lớn nhất, chẳng hạn:
g(x, y) =

1
(f (x − 1, y − 1) + f (x, y − 1) + f (x + 1, y − 1)
10
+f (x − 1, y) + 2f (x, y) + f (x + 1, y)
+f (x − 1, y + 1) + f (x, y + 1) + f (x + 1, y + 1))

(1.2)

Nói tóm lại, xử lý trên miền không gian là một phương pháp rất trực quan, phù hợp
với cảm giác tự nhiên của chúng ta: nhìn vào các biểu thức (1.1) và (1.2), ta cũng
hình dung được phần nào về ảnh kết quả.
Tuy nhiên, cũng chính do tính đơn giản như trên mà phương pháp xử lý trên miền
không gian là không được tinh tế. Chẳng hạn hệ số của mặt nạ (filter mask) thường

được chọn là dương
1 1 1
1
× 1 1 1
9
1 1 1

hay

1 2 1
1
× 2 4 2
16
1 2 1

4

CuuDuongThanCong.com

/>

Dĩ nhiên, trong mơt số trường hợp, mặt nạ có thể chứa các hệ số âm. Một thí dụ khác
là các mặt nạ thường là ma trận đối xứng. Hiển nhiên ta thấy rằng mặt nạ không
nhất thiết phải là ma trận đối xứng. Hơn nữa, các hệ số của mặt nạ cũng không nhất
thiết nguyên hay hữu tỷ. Đối với các trường hợp như vậy, các hệ số phải được chọn
bằng một phương pháp nào đó, chứ khơng cịn là bằng trực quan như trước đây.
Phương pháp xử lý ảnh trên miền tần số là một trong số đó. Sự can thiệp sâu sắc
của toán học cho ta những đối tượng, những đại lượng ẩn dưới lớp vỏ trực quan của
ảnh. Do đó, nếu chỉ đơn thuần quan sát, phân tích ảnh bằng thị giác thì ta khơng dễ
gì cảm nhận được các đại lượng này. Thay vì thao tác trực tiếp trên độ xám của các

pixel (trường độ xám), ta sẽ thao tác, xử lý trên các đối tượng mới này.

1.2

Ý tưởng xử lý trên miền tần số

Giả sử ta có một máy chụp ảnh đặc biệt, có thể chụp được đúng một đoạn thẳng trên
một vật phẳng. Khi đó, ảnh ta nhận được là một đoạn thẳng mà trên mỗi điểm có
một độ xám nào đó. Độ xám này có thể được mơ tả bởi hàm một biến f như Hình
1.1, ở đây đoạn [a, b] là miền không gian ảnh. Miền không gian ảnh lúc này được xem

Hình 1.1: Đồ thị hàm f (x)
như miền liên tục, chứ không phải là miền rời rạc gồm các pixel như trước đây. Hơn
nữa, ta có thể xem [a, b] = [−π, π].
Ta nhắc lại một định lý quan trọng về chuỗi Fourier như sau:
Cho Φ ∈ L2 (−π, π). Khi đó ta có khai triển


a0
+
Φ(x) =
(an cos nx + bn sin nx)
2
n=1




||Φ||2 = π


|a0 |2
+
(|an |2 + |bn |2 )
2
n=1
5

CuuDuongThanCong.com

/>

trong đó
1
π
1
bn =
π

π

an =

Φ(x) cos nxdx

∀n = 0, 1, 2, . . .

Φ(x) sin nxdx

∀n = 1, 2, 3, . . .


−π
π
−π

Áp dụng với Φ là trường độ xám f :
Nếu f ∈ L2 (−π, π) thì ta có khai triển


a0
+
(an cos nx + bn sin nx)
f (x) =
2
n=1


(1.3)



||f ||2 = π

|a0 |2
+
(|an |2 + |bn |2 )
2
n=1

(1.4)


trong đó
1
π
1
bn =
π

π

an =

f (x) cos nxdx

∀n = 0, 1, 2, . . .

f (x) sin nxdx

∀n = 1, 2, 3, . . .

−π
π
−π

Cơng thức (1.3) nói lên rằng hàm f có thể được phân tích thành tổng của vơ hạn các
hàm hình sin hoặc cos, mà ta gọi là các sóng.
Thí dụ
Với f (x) = x thì
an
bn


1
=
π
1
=
π

π

x cos nxdx = 0
−π
π

x sin nxdx =
−π

Do đó

2
π



f (x) =


n=1

π


x sin nxdx = 2π
0

(−1)n+1
n

(−1)n+1
sin nx
n

Trên Hình 1.7, ta thấy chỉ cần lấy tổng 5 số hạng đầu trên trong chuỗi Fourier
của f là đã có một xấp xỉ tốt cho hàm f rồi.
Một điểm đáng lưu ý nữa từ (1.3) là: khi n càng lớn thì các hàm an cos nx và bn sin nx
dao động càng nhanh quanh giá trị 0. Đó là bởi vì chu kỳ tuần hồn của nó càng nhỏ
khi n càng lớn.

6

CuuDuongThanCong.com

/>

Hình 1.2: Đồ thị hàm y = b1 sin x

Hình 1.3: Đồ thị hàm y = b2 sin 2x

Hình 1.4: Đồ thị hàm y = b3 sin 3x

7


CuuDuongThanCong.com

/>

Hình 1.5: Đồ thị hàm y = b4 sin 4x

Hình 1.6: Đồ thị hàm y = b5 sin 5x

Hình 1.7: Đồ thị hàm y =

5
k=1 bk

sin kx và y = x

8

CuuDuongThanCong.com

/>

Hình 1.8: Đồ thị hàm y = cos x, y = cos 3x, y = cos 9x
n
Các sóng an cos nx và bn sin nx đều có chu kỳ là 2π
, tức là có tần số 2π
. Hình 1.8
n
cho ta thấy sự dao động của hàm cos nx với n = 1, 3, 9. Sự dao động nhanh của các
sóng an cos nx và bn sin nx như trên gây ra sự biến đổi đột ngột giá trị của f . Chính
những thành phần này (khi n lớn) gây ra sự xáo trộn mạnh mẽ cho giá trị của hàm

f , và do đó làm giảm tính trơn của f (tức là sự liên tục hay khả vi của f ). Tuy nhiên,
nếu nhìn vào (1.4) thì ta thấy các chuỗi số




|bn |2 phải hội tụ.

2

|an | và
n=1

n=1

Vì vậy, ta phải có
lim |an | = 0 và lim |bn | = 0.

n→∞

n→∞

Do đó, các sóng an cos nx và bn sin nx thay đổi giá trị nhanh nhưng biên độ thay đổi
càng nhỏ khi n càng lớn. Đối với trường hợp f (x) = x ở Hình 1.7, ta thấy điều đó rất
rõ: biên độ của sóng bn sin nx là |bn | = 2π
→ 0 khi n → ∞.
n
Như vậy, ta rút ra nhận xét: khi n càng lớn thì các sóng an cos nx và bn sin nx dao
động càng dày đặc nhưng với biên độ càng nhỏ.
Vì vậy, các sóng này càng thể hiện tính "nhiễu". Nhiễu ở đây được hiểu theo nghĩa

làm mất tính ổn định giá trị của f và dẫn đến làm giảm tính trơn của f .
Nếu loại bỏ các sóng an cos nx và bn sin nx thì khi n đủ lớn, hàm f được xấp xỉ bằng
N

f (x) ≈

a0
+
(an cos nx + bn sin nx)
2
n=1

(1.5)

Vế phải của (1.5) là hàm khả vi liên tục mọi cấp, nghĩa là nó rất trơn. Điều này khá
phù hợp với phân tích về ảnh hưởng của các sóng với n lớn mà ta đã nêu ở trên.
9

CuuDuongThanCong.com

/>

Quay lại với ý nghĩa là "trường độ xám" của f , ta nhận xét, trường độ xám mà máy
ảnh thu được từ vật được chụp thường khó liên tục. Chẳng hạn như khi ta chụp mặt
người, đường biên ngăn cách mặt người với môi trường xung quanh rõ ràng là bước
nhảy lớn về giá trị mức xám. Đối với các ảnh sắc nét, ta thấy có nhiều đường biên
ngăn cách các miền có mức xám khác nhau. Vì vậy, f bị gián đoạn hoặc không trơn
tại các đường này.
Như đã nói ở trên, việc loại bỏ các sóng có tần số cao sẽ làm tăng tính trơn của hàm
f . Do đó, ảnh mới thu được sẽ có trường độ xám thay đổi mềm mại hơn, hệ quả là

sẽ mờ hơn, nhòe hơn, kém sắc nét hơn ảnh ban đầu. Ngược lại, nếu loại bỏ các sóng
có tần số thấp (tức là những số hạng ứng với n nhỏ), ta thu được hàm


g(x) =

(an cos nx + bn sin nx)
n=N

Hàm g chỉ dao động khá bé quanh giá trị 0 nên không thể là một xấp xỉ của hàm
f . Việc loại bỏ các sóng có tần số thấp đã làm mất đi giá trị trung bình của f . Tuy
nhiên, hàm g phản ánh sự nhiễu loạn của f xung quanh "đường trung bình" của nó.
Do đó, ảnh g cho thấy các chi tiết sắc nét của f như đường biên, các đỉnh, các nốt,
các đốm cô lập. Vì g(x) dao động xung quanh giá trị 0 nên màu nền của ảnh mới sẽ
là đen.
Nếu quan sát kỹ hơn cơng thức (1.11) thì ta thấy rằng để làm ảnh trơn hơn, ta không
nhất thiết phải chặt cụt chuỗi Fourier của f . Thay vào đó, ta có thể nhân mỗi số
hạng của nó với một số h(n) nào đó


a0
h(n) (an cos nx + bn sin nx)
f1 (x) = h(0) +
2
n=1

(1.6)

trong đó |h(n)| phải càng nhỏ khi n càng lớn nhằm làm giảm biên độ của các sóng
tần số cao. Chú ý rằng tổng hợp của hai sóng an cos nx và bn sin nx cũng là một sóng

hình sin. Thật vậy, ta có
an cos nx + bn sin nx =

Gọi α ∈ (−π, π] là góc thỏa

an
cos nx +
a2n + b2n

a2n + b2n

bn
sin nx
a2n + b2n


 sin αn = √ a2n
 cos αn =

an +b2n
√ b2n 2
an +bn

Thế vào (1.7), ta được
an cos nx + bn sin nx =
=

a2n + b2n (sin αn cos nx + cos αn sin nx)
a2n + b2n sin(nx + αn )


Do đó (1.6) được viết lại thành


a0
f1 (x) = h(0) +
h(n) a2n + b2n sin (nx + αn )
2
n=1
10

CuuDuongThanCong.com

/>
(1.7)


Lúc này f1 (x) là tổng hợp của các sóng có biên độ dạng |h(n)| a2n + b2n . Do đó, lý
do để chọn h sao cho |h(n)| càng nhỏ khi n càng lớn rõ ràng.
Ngược lại, để làm nổi bật lên các chi tiết của f , ta chọn h sao cho |h(n)| lớn khi n
bé, và bé khi n lớn. Tóm lại, ta hồn tồn có hướng để xử lý ảnh nếu trường độ xám
của nó được phân tích thành tổng của các sóng hình sin hay cos như trên. Muốn vậy,
hàm f phải thuộc không gian L2 (−π, π). Tiếp theo, ta xem xét tính hợp lý của giả
thiết này.
Độ xám của ảnh là do nguồn sáng chiếu tới vật được chụp và sự phản xạ ánh sang
của vật đó. Do năng lượng sóng ứng với các bước sóng trong vùng nhìn thấy được là
hữu hạn nên độ xám cũng phải hữu hạn. Hơn nữa, độ xám khi được mã hóa thành
số lưu trong máy tính bao giờ cũng có giá trị bị chặn (tùy thuộc vào số bit biểu diễn
của nó). Do đó, hàm f ln bị chặn trên (−π, π):
|f (x)| ≤ M, ∀x ∈ [−π, π]
Do đó


π

π
2

|M |2 dx = 2M 2 π.

|f (x)| dx ≤
−π

−π

2

Cho nên f ∈ L (−π, π).
Thật ra với cách thể hiện độ xám thông qua các pixel, ta dễ dàng nhận ra f là hàm
bậc thang. Như vậy, ta vừa chứng minh xong f ∈ L2 (−π, π), tức là f luôn đáp ứng
là điều kiện đủ để nó có khai triển chuỗi Fourier.
Trên đây ta đã phân tích ứng dụng của khai triển Fouirer vào xử lý ảnh một chiều.
Tuy nhiên, ảnh một chiều mà ta vừa nói trên chỉ là một mơ hình tưởng tượng nhằm
phát sinh ý tưởng. ảnh thực tế mà ta thấy phải là ảnh hai chiều. Như vậy, ta cần
phải tìm một thủ thuật nào đó nhằm tổng quát ý tưởng ở một chiều lên hai chiều.
Ở trường hợp một chiều, ta tìm cách biểu diễn hàm một biến thành tổng của vơ số
sóng dạng sin và cos. Ta cũng sử dụng lại ý tưởng đó ở đây, tức là ta sẽ cố gắng biểu
diễn hàm hai biến f = f (x, y) thành tổng của nhiều sóng dạng sin(mx + ny) hoặc
cos(mx + ny).
Giả sử hàm f = f (x, y) xác định trên Ω = [−π, π] × [−π, π]. Ứng với mỗi y ∈ [−π, π],
ta có khai triển Fourier của f theo biến x:



ay
(aym cos mx + bym sin mx)
f (x, y) = 0 +
2
m=1

(1.8)

trong đó
π

1
aym =
π

f (x, y) cos mxdx

(1.9)

f (x, y) sin mxdx

(1.10)

−π
π

bym =

1

π
−π

11

CuuDuongThanCong.com

/>

Ứng với mỗi x ∈ [−π, π], ta lại có khai triển Fourier của f theo biến y:


a0
(axn cos ny + bxn sin ny)
f (x, y) =
+
2
n=1

(1.11)

trong đó
π

axn

1
=
π


f (x, y) cos nydy

(1.12)

f (x, y) sin nydy

(1.13)

−π
π

bxn =

1
π
−π

Thế (1.11) vào (1.9) và (1.10), ta được
π

1
aym =
π
−π
π

bym

1
=

π
−π



ax0
+
(axn cos ny + bxn sin ny) cos mxdx,
2
n=1


ax0
(axn cos ny + bxn sin ny) sin mxdx.
+
2
n=1

Giả sử dấu tổng có thể lấy ra ngồi tích phân được, ta có
 π

π

x
1  a0
aym =
cos (mx) dx+
(axn cos (ny) cos (mx) + bxn sin (ny) cos (mx)) dx ,
π
2

n=1−π
−π
 π

π

x
1  a0
bym =
sin (mx) dx+
(axn cos (ny) sin (mx) + bxn sin (ny) sin (mx)) dx
π
2
n=1
−π

−π

12

CuuDuongThanCong.com

/>

Thế (1.12) và (1.13) vào hai biểu thức trên, ta được
aym

=

1

π2

1
2

π

π

−π

−π

f (x, y) cos (0y) cos (mx)dydx+



π

π

n=1

−π

−π

+

f (x, y) cos (ny) cos (mx)dydx cos ny+

π

π

f (x, y) sin (ny) cos (mx)dydx sin ny

+
−π

bym =

1
π2

1
2

−π
π
π

f (x, y) cos (0y) sin (mx)dydx+
−π

−π



π


π

n=1

−π

−π

+

f (x, y) cos (ny) sin (mx)dydx cos ny+
π

π

−π

−π

+

f (x, y) sin (ny) sin (mx)dydx sin ny

Chuyển tích phân hai lớp thành tích phân bội để viết lại gọn
aym =

1
π2

1

2

f (x, y) cos (0y) cos (mx)dA+




f (x, y) cos (ny) cos (mx)dA cos ny+

+


n=1

f (x, y) sin (ny) cos (mx)dA sin ny

+


bym =

1
π2

1
2

f (x, y) cos (0y) sin (mx)dA+





+

f (x, y) cos (ny) sin (mx)dA cos ny+


n=1

f (x, y) sin (ny) sin (mx)dA sin ny

+


13

CuuDuongThanCong.com

/>

Thế hai biểu thức trên vào (1.8), ta được

1 1
f (x, y) =
f (x, y) cos(0y) cos(0x)dA+
2π 2  2

Ω



+

f (x, y) cos(ny) cos(0x)dA cos(ny)+


n=1





+  f (x, y) sin(ny) cos(0x)dA sin(ny) +


  

∞ 

1
1
+
f (x, y) cos(0y) cos(mx)dA cos mx+
2


π
2
m=1










(f (x, y) cos(ny) cos(mx)dA) cos(ny) cos(mx)+


n=1





 f (x, y) sin(ny) cos(mx)dA sin(ny) cos(mx)


 

1 1 
f (x, y) cos(0y) sin(mx)dA sin mx+
+ 2
π 2
 Ω








+

(f (x, y) cos(ny) sin(mx)dA) cos(ny) sin(mx)+


n=1







(f (x, y) sin (ny) sin(mx)dA) sin(ny) sin(mx)



+


14

CuuDuongThanCong.com

/>

Viết gọn lại:

1
2π 2

f (x, y) =

1
2

f (x, y)dA




+

f (x, y) cos nydA cos ny +
n=1

+

f (x, y) sin nydA sin ny




1
π2




1
2

m=1

f (x, y) cos mxdA cos mx +

f (x, y) sin mxdA sin mx







+

f (x, y) cos ny cos mxdA cos ny cos mx +


n=1

f (x, y) cos ny sin mxdA cos ny sin mx +

+

f (x, y) sin ny cos mxdA sin ny cos mx





f (x, y) sin ny sin mxdA sin ny sin mx


hay
f (x, y) =

1
4π 2

1
+ 2

+
+

1
π2

1
2π 2

f (x, y)dA




f (x, y) sin nydA sin ny

f (x, y) cos nydA cos ny +

i=1






f (x, y) sin mxdA sin mx

f (x, y) cos mxdA cos mx +
m=1







f (x, y) sin ny cos mxdA sin ny cos m

f (x, y) cos ny cos mxdA cos ny cos mx +




m,n=1

f (x, y) sin ny sin mxdA sin ny sin mx

f (x, y) cos ny sin mxdA cos ny sin mx +


+





15

CuuDuongThanCong.com

/>

Tóm lại,
f (x, y) =

1
1
a00 +
4
2



(a0n cos ny + b0n sin ny)
n=1



1

+
(am0 cos mx + cm0 sin mx)
2 m=1


+

(amn cos mx cos ny + bmn cos mx sin ny
m,n=1

+cmn sin mx cos ny + dmn sin mx sin ny)

(1.14)

trong đó
amn
bmn
cmn
dmn

1
π2
1
= 2
π
1
= 2
π
1
= 2

π
=

f (x, y) cos mx cos nydA

(1.15)

f (x, y) cos mx sin nydA

(1.16)

f (x, y) sin mx cos nydA

(1.17)

f (x, y) sin mx sin nydA

(1.18)









Khi m, n càng lớn thì các sóng amn cos mx cos ny, bmn cos mx sin ny, cmn sin mx cos ny,
dmn sin mx sin ny dao động càng nhanh, nhưng biên độ của chúng (là |amn |, |bmn |, |cmn |,
|dmn |) càng lúc càng bé. Do đó, những sóng này chỉ đóng vai trị nhiễu. Vì vậy, cũng

giống như trường hợp một chiều, ta nhân mỗi số hạng chuỗi Fourier của f ở (1.14)
với hàm hai biến h = h(m, n) để được
1
1
f (x, y) = h(0, 0)a00 +
4
2



h(0, n)(a0n cos ny + b0n sin ny)
n=1



+

1
h(m, 0)(am0 cos mx + cm0 sin mx)
2 m=1



+

h(m, n)(amn cos mx cos ny + bmn cos mx sin ny
m,n=1

+cmn sin mx cos ny + dmn sin mx sin ny)


(1.19)

Nếu muốn thu được ảnh trơn hơn thì hàm h phải được chọn sao cho |h(m, n)| khá bé
khi m, n lớn; cịn nếu muốn có ảnh nổi bật, sắc nét hơn thì chọn h sao cho |h(m, n)|
nhỏ khi m, n bé.
Như vậy, ý tưởng dùng khai triển Fourier để xử lý ảnh hai chiều đã rõ. Tiếp theo, ta
sẽ đi chi tiết hơn về mặt tính tốn.

16

CuuDuongThanCong.com

/>

1.3

Tính tốn chi tiết

Ta tốn cơng đi tìm khai triển Fourier cho hàm hai biến f = f (x, y) ở mục trên là để
có được cơng thức (1.19). Hàm f = f (x, y) ở (1.19) chính là ảnh kết quả mà ta nhận
được. Như vậy, để ý tưởng bên trên thực hiện được, ta phải tìm ra giải pháp tính số
cho f (x, y).
Trong cơng thức (1.19), hàm h = h(m, n) được quyền chọn nên dĩ nhiên ta biết giá
trị số của nó. Vấn đề bây giờ nằm ở chỗ làm thế nào tính được các hệ số Fourier amn ,
bmn , cmn , và dmn của f .
Trên thực tế, ảnh dược máy tính biểu diễn bằng một ma trận độ xám, kích thước
M × N . Mỗi hệ số của ma trận này là độ xám trên pixel vị trí của nó. Như vậy,
trường độ xám f lúc này là một hàm bậc thang, xác định trên hình chữ nhật kích
thước M × N .


Hình 1.9: Các pixel của ảnh số
Khoảng [−π, π] trên trục hoành được chia làm M khoảng bằng nhau bởi x0 < x1 <
. . . < xM , với xj = 2π
j − π.
M
Khoảng [−π, π] trên trục tung được chia làm N khoảng bằng nhau bởi y0 < y1 <
17

CuuDuongThanCong.com

/>

. . . < yN , với yk = 2π
k − π.
N
Trị giá của f trên ô Ajk = [xj , xj+1 ] × [yk , yk+1 ] là fmn . Khi đó:
f (x, y) =

fjk χAjk (x, y)
0≤j≤M −1
0≤k≤N −1

Từ đây, ta có thể tính được các amn , bmn , cmn , và dmn .
• Tính amn từ (1.15):
1
π2
1
=
π2


amn =

=

=

1
π2
1
π2

f (x, y) cos mx cos nydA


fjk cos mx cos ny χAjk dA
Ω j,k

fjk

cos mx cos nydA
Ajk

j,k

xj+1

xj+1

cos nydy


cos mxdx

fjk

xj

xj

j,k

* Nếu m, n ≥ 1
amn =

1
π 2 mn

fjk (sin(mxj+1 )−sin(mxj ))(sin(nyk+1 )−sin(nyk )) (1.20)
j,k

* Nếu m = 0, n ≥ 1
a0n =
=

1
π2
1
π2

tức là
a0n =

tức
a0n =

xj+1

fjk

xj+1

dx
xj

j,k

fjk (xj+1 − xj )
j,k


π2M n
2
M nπ

cos nydy
xj

sin(nyk+1 ) − sin(nyk )
n

fjk (sin(nyk+1 ) − sin(nyk )
j,k


fjk (sin(nyk+1 ) − sin(nyk ))

(1.21)

j,k

* Nếu m ≥ 1, n = 0, tương tự như trên, ta cũng có
am0 =

2
N mπ

fjk (sin(myk+1 ) − sin(myk ))
j,k

18

CuuDuongThanCong.com

/>
(1.22)


* Nếu m = n = 0
a00

1
=
π2

1
π2

=

1
π2

=

xj+1

fjk

xj+1

dx

dy

xj

j,k

xj

fjk (xj+1 − xj )(yk+1 − yk )
j,k

fjk


2π 2π
M N

a00 =

4
MN

j,k

tức là

fjk

(1.23)

j,k

• Tính bmn từ (1.16)
1
π2
1
=
π2

f (x, y) cos mx sin nydA

bmn =


=

=

1
π2
1
π2



fjk cos mx sin ny χAjk dA
Ω j,k

fjk

cos mx sin nydA
Ajk

j,k

yk+1

xj+1

sin nydy

cos mxdx

fjk


yk

xj

j,k

* Nếu m ≥ 1
bmn =

1
π 2 mn

fjk (sin(mxj+1 )−sin(mxj ))(cos(nyk )−sin(nyk+1 )) (1.24)
j,k

* Nếu m = 0
b0n =
=
=

1
π2
1
π2
1
π2

xj+1


xj+1

dx

fjk
xj

j,k

fjk (xj+1 − xj )
j,k

fjk
j,k

sin nydy
xj

cos(nyk ) − cos(nyk+1 )
n

2π cos(nyk ) − cos(nyk+1 )
M
n

hay
b0n =

2
M nπ


fjk (cos(nyk ) − cos(nyk+1 ))
j,k

19

CuuDuongThanCong.com

/>
(1.25)


• Tính cmn từ (1.17)
1
π2
1
=
π2

cmn =

=

=
* Nếu n ≥ 1
1
cmn = 2
π mn

1

π2
1
π2

f (x, y) sin mx cos nydA


fjk sin mx cos ny χAjk dA
Ω j,k

fjk

sin mx cos nydA
Ajk

j,k

xj+1

fjk

yk+1

cos nydy

sin mxdx
yk

xj


j,k

fjk (cos(mxj )−cos(mxj+1 ))(sin(nyk+1 )−sin(nyk )) (1.26)
j,k

* Nếu n = 0
cm0

1
=
π2
=

1
π2

1
=
π2

xj+1

xj+1

xj

xj

fjk (yk+1 − yk )
j,k


fjk
j,k

dy

sin mxdx

fjk
j,k

cos(mxj ) − cos(mxj+1 )
m

2π cos(mxj ) − cos(mxj+1 )
N
m

hay
cm0 =

2
N mπ

fjk (cos(mxj ) − cos(mxj+1 ))
j,k

• Tính dmn từ (1.18)
1
π2

1
=
π2

dmn =

=

1
π2

1
=
π2
=

1
π2

f (x, y) sin mx sin nydA


fjk sin mx sin nyχAjk dA
Ω j,k

fjk

sin mx sin nydA
Ajk


j,k

xj+1

fjk
fjk
j,k

sin mxdx
xj

j,k

yk+1

sin nydy
yk

cos(mxj ) − cos(mxj+1 ) cos(nyk ) − cos(nyk+1 )
m
n
20

CuuDuongThanCong.com

/>
(1.27)


hay

dmn =

2
N mπ

fjk (cos(mxj ) − cos(mxj+1 ))(cos(nyk ) − cos(nyk+1 ))

(1.28)

j,k

Từ các cơng thức (1.20)-(1.28), ta hồn tồn tính được f ở (1.19).
Trên thực tế thì miền khơng gian ảnh là [0, M ]×[0, N ] chứ khơng phải [−π, π]×[−π, π]
nên ta dùng phép biến đổi sau
[0, M ] × [0, N ] → [−π, π] × [−π, π]
2πy
2πx
, −π +
(x, y) →
−π +
M
N
Do đó, khai triển Fourier cho ảnh [0, M ] × [0, N ] là:
1
1
f (x, y) = a00 +
4
2




a0n cos n −π +
n=1

2πy
N

+ b0n sin n −π +

2πy
N

+ cm0 sin m −π +

2πx
M



+

1
2πx
am0 cos m −π +
2 m=1
M


amn cos m −π +


+
m,n=1

2πx
M

cos n −π +

2πy
N

2πx
2πy
sin n −π +
M
N
2πx
2πy
+cmn sin m −π +
cos n −π +
M
N
2πx
2πy
+dmn sin m −π +
sin n −π +
M
N
+bmn cos m −π +


trong đó
4
MN
4
=
MN
4
=
MN
4
=
MN

amn =
bmn
cmn
dmn

2πx
cos n
M

2πx
f (x, y) cos m −π +
sin n
M

2πx
f (x, y) sin m −π +
cos n

M

2πx
f (x, y) sin m −π +
sin n
M

f (x, y) cos m −π +

2πy
N
2πy
−π +
N
2πy
−π +
N
2πy
−π +
N
−π +

21

CuuDuongThanCong.com

/>
dA
dA
dA

dA


với Ω = [0, M ] × [0, N ]
Để tận dụng được kết quả tính tốn cho amn , bmn , cmn và dmn ở (1.20)-(1.28), ta dùng
phép đổi biến
[−π, π] × [−π, π] → [0, M ] × [0, N ]
(r + π)M (s + π)N
(r, s) → (x, y) =
,


Khi đó, ta đặt
f¯(r, s) = f (x, y) = f

(r + π)M (s + π)N
,



thì
1
π2
1
=
π2
1
=
π2
1

=
π2

f¯(x, y) cos mr cos nsdA

amn =
bmn
cmn
dmn



f¯(x, y) cos mr sin nsdA


f¯(x, y) sin mr cos nsdA


f¯(x, y) sin mr sin nsdA


với Ω = [−π, π] × [−π, π]
Khi đó, các hệ số amn , bmn , cmn , dmn và được cho bởi (1.20) – (1.28) với fjk là giá trị
xám của ảnh ban đầu trên ơ [j, j + 1] × [k, k + 1]. Tóm lại, ta đã tính tốn xong tất
cả các chi tiết cần thiết để tìm ảnh kết quả f khi biết hàm lọc h(m, n). Độc giả có
thể tham khảo phần cài đặt chương trình ở Chương 4.

22

CuuDuongThanCong.com


/>

Chương 2
Cải tiến kỹ thuật
2.1

Hạn chế của kỹ thuật trước

Quan sát công thức (1.19) ta thấy, khi đưa vào máy tính chuối Fourier phải được
chặt cụt. Giả sử miền chạy của các chỉ số m và n là 0, 1, 2, . . . , K − 1. Theo công thức
(1.20), để tính amn , ta phải dùng 2M N phép cộng, 2M N phép nhân và 4M N phép
tính lượng giác. Tương tự đối với bmn , cmn , và dmn .
Như vậy, với mỗi (x, y) với 0 ≤ x ≤ M + 1, 0 ≤ y ≤ N − 1, ta phải dùng khoảng
2K 2 M N phép cộng, 2K 2 M N phép nhân và 4K 2 M N phép tính lượng giác. Do đó,
để có được kết quả ảnh f , ta phải tốn 2K 2 M 2 N 2 phép cộng, 2K 2 M 2 N 2 phép nhân
và 4K 2 M 2 N 2 phép tính lượng giác.
Với ảnh có kích thước nhỏ 100 × 100, và K = 10 thì ta cần khoảng 20 triệu phép
cộng, 20 triệu phép nhân, 40 triệu phép tính lượng giác. Điều đó địi hỏi thời gian
chạy chương trình quá lớn. Sau đây là kết quả thử nghiệm:
Kích thước M × N
32x32
40x40
45x45
50x50
50x50

K Thời gian(giây)
10
116.237

10
275.96
10
420.518
10
648.992
5
165.553

Do vậy, một nhu cầu bức xúc đặt ra ở đây là làm sao giảm một cách đáng kể thời
gian thực hiện chương trình, hay nói cách khác là phải tìm một phương thức tính
tốn nào đó nhanh hơn. Biến đổi Fourier rời rạc là một trong những giải pháp như
vậy. ở đó, ta lợi dụng triệt để tính rời rạc của ảnh số.

2.2

Phương pháp cải tiến

Như mục trên đã nói, ý tưởng của việc áp dụng khai triển Fourier nằm ở chỗ ta muốn
phân tích một hàm hai biến f = f (x, y) bất kỳ thành tổng của vơ hạn các sóng dạng
23

CuuDuongThanCong.com

/>

sin hay cos. Tuy nhiên, khơng nhất thiết chỉ có khai triển Fourier mới cho tao một
cách phân tích như vậy. Hơn nữa, trường độ xám f mà ta đang xét là hàm bậc thang,
tức là có hữu hạn giá trị nên f hồn tồn có thể được phân tích thành sóng một
cách đơn giản hơn. Ta bắt đầu xét cách phân tích "đơn giản hơn" này dưới dạng một

chiều để thấy rõ ý tưởng.
Định nghĩa 2.2.1. Gọi g là một hàm có miền xác định rời rạc như sau
g : {0, 1, ..., M − 1} → R
khi đó hàm G : {0, 1, . . . , M − 1} → C xác định bởi
1
G(u) =
M

M −1
ux

g(x)e−i2π M

(2.1)

x=0

được gọi là biến đổi Fourier rời rạc (Discrete Fourier Transform hay viết tắt là DFT)
của g.
Công thức (2.1) cho thấy mỗi hàm rời rạc g đều có DFT. Hơn nữa, khi biết DFT
của g là G, ta có thể tìm ngược trở lại g bằng công thức
M −1
ux

G(u)ei2π M

g(x) =

(2.2)


u=0

Thật vậy, ta có
1
G(u) =
M
i2π uy
M

Nhân e

M −1
ux

g(x)e−i2π M
x=0

ở hai vế của phương trình trên, ta được
i2π uy
M

G(u)e

1
=
M

M −1
u


g(x)e−i2π M (x−y)
x=0

Lấy tổng với u từ 0 đến M − 1, ta được
M −1

G(u)e

i2π uy
M

u=0

1
=
M

M −1 M −1
−i2π x−y
u
M

g(x)e
u=0 x=0

1
=
M

M −1 M −1


g(x)e−i2π

x−y
u
M

x=0 u=0

hay
M −1
i2π uy
M

G(u)e
u=0

1
=
M

M −1

M −1

e−i2π

g(x)
x=0


x−y
u
M

u=0

* Với x = y, ta có
M −1

M −1
−i2π x−y
u
M

g (x)

e
u=0

= g (y)

1 = M g (y)
u=0

24

CuuDuongThanCong.com

/>
(2.3)



M −1

* Với x = y, khi đó

e−i2π

x−y
u
M

là một cấp số nhân với công bội q = e−i2π

x−y
M

=1

u=0

nên
M −1

e−j2π

x−y
u
M


u=0

=

1 − qM
1 − e−i2π(x−y)
1 − cos (2π(x − y)) + i sin (2π(x − y))
=
=
=0
x−y
x−y
−i2π
1−q
M
1−e
1 − e−i2π M

Do đó

M −1

e−i2π

g (x)

x−y
u
M


= g (x) .0 = 0

u=0

Do vậy, từ (2.3), ta suy ra
M −1
uy

G(u)ei2π M = g(y)
u=0

Tóm lại ta đã chứng minh được (2.2).
Công thức (2.1) và(2.2) cho thấy sự tương ứng 1 - 1 giữa một hàm rời rạc và DFT
của nó. Khi biết g, ta có thể tìm được G và ngược lại. Tuy nhiên, điều đặc biệt lại
nằm ở công thức (2.2). Ta biết rằng
eiθ = cos θ + i sin θ
nên (2.2) được viết lại như sau
M −1

G (u) cos

g (x) =
u=0

2πxu
2πxu
+ i sin
M
M


(2.4)

Vì G là hàm nhận giá trị phức nên ta có thể biểu diễn nó dưới dạng
G (u) = R (u) − iI (u)

∀u ∈ {0, 1, ..., M − 1}

trong đó R và I chỉ nhận các giá trị thực. Thế vào (2.4), ta được
M −1

(R (u) − iI (u)) cos

g (x) =
u=0

2πxu
2πxu
+ i sin
M
M

hay
M −1

g (x) =
u=0

2πxu
2πxu
+i

R (u) cos
+ I (u) sin
M
M

M −1

R (u) sin
u=0

2πxu
2πxu
− I (u) cos
M
M

Vì g chỉ nhận giá trị thực nên phần ảo ở vế phải bằng 0. Do đó
M −1

g (x) =

R (u) cos
u=0

2πxu
2πxu
+ I (u) sin
M
M


25

CuuDuongThanCong.com

/>
(2.5)


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×