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

phân tích xử lý ảnh xử lý bể hình khi phóng to

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.12 MB, 71 trang )



BM. TỐN – TIN ỨNG DỤNG


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









Phạm Ngọc Tuân
0611241
Nguyễn Quốc Thông
0611196
Đặng Nguyễn Đăng Nguyên
0611137
GVHD: TS. Phạm Thế Bảo
TP. HCM 26-12-2009

Lời nói đầu
Xử lý ảnh số bao gồm nhiều loại thao tác trên ảnh như khử nhiễu, làm trơn, làm sắc
ảnh, nén ảnh, phóng to, phục hồi ảnh,. . . Tuy nhiên từ trước đến nay, các thao tác giúp tăng
cường ảnh, tức là làm cho ảnh đẹp hơn, tốt hơn để phục vụ những mục đích thiết thực trong
đời sống, luôn được quan tâm, ưu ái hơn cả. Bên cạnh việc làm trơn, hay làm sắc ảnh mà
chúng tôi đã có dịp đề cập, một thao tác tăng cường ảnh cực kỳ phổ biến khác là xử lý bể
hình khi phóng to.


Hiện nay đã có nhiều phương pháp được đưa ra nhưng nhìn chung chúng chỉ thuộc một
trong hai loại sau: trung bình hóa - sử dụng nhiều công cụ toán học phức tạp, và làm sắc góc
- dựa trên cảm giác của ta là chính. Bài viết này nhằm thiết lập mô hình toán học cho bài
toán xử lý bể hình khi phóng to ảnh và phân tích chi tiết ý tưởng cũng như các vấn đề kỹ
thuật của hai phương pháp nêu trên.
Dù đã hết sức cố gắng nhưng bài viết khó lòng tránh khỏi những sai sót. Vì vậy chúng
tôi rất mong nhận được những đóng góp chân thành từ độc giả. Mọi 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]gmail.com
Thành phố Hồ Chí Minh,
Ngày 26 tháng 12 năm 2009.
2
Mục lục
1 Giới thiệu bài toán và hướng giải quyết 6
1.1 Nhu cầu thực tế . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Mô hình hóa bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Phương pháp trung bình hóa 13
2.1 Ý tưởng chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Nhân láng giềng gần nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Nhân tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Nhân bậc hai, bậc ba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5 Nhân B-spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.6 Xử lý trên ảnh hai chiều . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3 Phương pháp làm sắc góc 36
3.1 Dời điểm nội suy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2 Điều chỉnh giá trị nội suy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4 Chương trình Matlab 53
4.1 Trung bình hóa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.1 Láng giềng gần nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.2 Tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.1.3 Bậc 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.1.4 Bậc 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.1.5 B-spline bậc 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.1.6 B-spline bậc 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 Làm sắc góc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2.1 Dời điểm nội suy (Ramponi) . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2.2 Điều chỉnh giá trị nội suy (Taguchi) . . . . . . . . . . . . . . . . . . . . 59
4.2.3 Phương pháp kết hợp Ramponi-Taguchi . . . . . . . . . . . . . . . . . 61
A Phụ lục 64
A.1 Chứng minh Định lý 1 ở trang 15 . . . . . . . . . . . . . . . . . . . . . . . . . 64
A.2 Chứng minh Định lý 2 ở trang 16 . . . . . . . . . . . . . . . . . . . . . . . . . 69
Tài liệu tham khảo 71
3
Danh sách hình vẽ
1.1 Nhãn cầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Góc nhìn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Các pixel trên ảnh số kích thước 7×7 . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Zoom thông thường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 a. Ảnh ban đầu, b. Ảnh sau khi phóng to 200% . . . . . . . . . . . . . . . . . 10
1.6 Những phương án giải quyết đơn giản . . . . . . . . . . . . . . . . . . . . . . . 10
1.7 a. 133%, b. 200% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.8 Lưới các pixel trên ảnh ban đầu . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1 Trường độ xám trên ảnh một chiều . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Hai thí dụ cho hàm h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Đồ thị của h
n
với n = 2 và 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Xấp xỉ ảnh f một cách toàn cục . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Phân hoạch lân cận của x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Cách làm trơn hàm của nhân h . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.7 Nhân láng giềng gần nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.8 Nhân tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.9 Đồ thị của B
2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.10 Nội suy lần lượt theo 2 trục . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1 Thay đổi giá trị nội suy bằng cảm giác . . . . . . . . . . . . . . . . . . . . . . 36
3.2 Dời điểm nội suy x thành x

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3 A = 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4 A > 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 A < 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.6 Kết quả thí nghiệm với f(x) = x − x sin x, β = 2, M = 15 . . . . . . . . . . . 41
3.7 Dời điểm nội suy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.8 Tính toán dựa trên định lý Talet . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.9 Điều chỉnh giá trị xấp xỉ bằng cảm giác . . . . . . . . . . . . . . . . . . . . . . 45
3.10 Các trị giá C
1
và C
2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3.11 Không cần điều chỉnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.12 Không cần điều chỉnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.13 Điều chỉnh một khoảng
C
2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.14 Điều chỉnh một khoảng C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4
3.15 Kết quả thí nghiệm với f(x) = x − x sin x, γ = 2, M = 15 . . . . . . . . . . . 49
3.16 Điểm cần nội suy (x, y) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.17 Kết quả thí nghiệm với f(x) = x − x sin x, β = 2, γ = 0.5, M = 15 . . . . . . 52
3.18 a)Ảnh gốc; b)Láng giềng gần nhất; c)Tuyến tính; d)Bậc ba e)B-Spline bậc 3;
f)Kết hợp hai phương pháp làm sắc góc . . . . . . . . . . . . . . . . . . . . . . 52
5
Chương 1
Giới thiệu bài toán và hướng giải
quyết
1.1 Nhu cầu thực tế
Ta bắt đầu từ một đặc tính sinh lý thú vị của mắt. Mắt người là một hệ thống gồm nhãn
cầu và các dây thần kinh thị giác nối từ nhãn cầu đến não. Phần trước của nhãn cầu hơi lồi
ra để đón các tia sáng đến mắt. Bộ phận quan trọng nhất của mắt chính là thấu kính ở ngay
sau con ngươi (Hình 1.1). Trục thị giác là một đường thẳng đi qua quang tâm của thấu kính
Hình 1.1: Nhãn cầu
và điểm vàng - một điểm rất nhạy với ánh sáng ở trên võng mạc. Khoảng cách giữa quang
tâm và điểm vàng là khoảng 22mm đối với mắt bình thường.
Giả sử AB là một vật được đặt trên trục thị giác có góc nhìn là α. Kết quả thí nghiệm
cho thấy ở mỗi người tồn tại một góc α
min
- năng suất phân ly - sao cho khi α > α
min

thì
người đó vẫn còn phân biệt được A và B, còn nếu α ≤ α
min
thì A và B được cảm thấy như
trùng nhau. Nếu gọi  là khoảng cách từ mắt đến vật thì chiều cao của vật được cho bởi
AB =  tan α
6
Hình 1.2: Góc nhìn
Như vậy chiều cao tối thiểu của một vật đặt cách mắt một khoảng  mà ta vẫn còn nhận
thấy được là AB
min
=  tan α
min
. Đối với những người có thị lực tốt, như trẻ con hay những
người thường xuyên luyện tập mắt, góc α
min
này là khoảng 1 phút. Ta biết rằng
1

=
1
60
độ =
π
10800
radian
Do đó
AB
min
=  tan

π
10800
≈ 2.9 × 10
−4

Rõ ràng khi  càng lớn thì chiều cao tối thiểu này phải càng lớn, còn khi vật được để càng
gần mắt thì chiều cao tối thiểu này càng nhỏ. Thông thường khi ngồi trước máy vi tính, mắt
ta cách màn hình khoảng  = 75cm = 750mm. Khi đó
AB
min
= 2.9 × 10
−4
× 750 = 0.2175mm
Điều đó có nghĩa là ta chỉ phân biệt được hai điểm trên màn hình nếu chúng cách nhau hơn
0.2175mm.
Như vậy, rõ ràng sự hạn chế của thị lực con người là một trở ngại không thể phủ nhận
khi chúng ta muốn quan sát từng li từng tí các chi tiết trên vật thể. Do đó, giá như có một
phép màu nào đó làm cho kích thước vật thể to lên, để hai điểm trước đây gần nhau quá trở
nên xa ra và ta có thể phân biệt được. Đối với vật thể thực AB, ta dễ dàng làm được điều
này nhờ kính lúp hoặc ống nhòm. Đó là các phương pháp phóng to vật nhờ dụng cụ quang
học. Tuy nhiên, không phải ai cũng có cơ hội được tiếp cận với vật thể thực tế để dùng ống
nhòm hay kính lúp mà quan sát. Điều này rất đúng khi vật thể thực của chúng ta là các hoa
hậu, người mẫu. Thay vào đó, hầu như ta chỉ có được ảnh chụp của các vật thể này mà thôi.
Các ảnh chụp được lưu trữ trong máy tính dưới dạng ảnh số. Nếu vật thể thực được phóng
to một cách rất hiệu quả nhờ các dụng cụ quang học thì ảnh số được phóng to bằng cách
nào? Rõ ràng ta hoàn toàn có thể đặt một kính lúp ngay trước màn hình máy tính để phóng
lớn ảnh. Tất cả các phần mềm xem ảnh như ACDSee, IrfanView, Picasa, Inzomia, đều có
chức năng Zoom (thường là biểu tượng cái kính lúp). Và quả thật, chức năng này hoạt động
y hệt một kính lúp. Ta biết rằng ảnh số chính là một ma trận hai chiều mà giá trị trên mỗi
ô, hay pixel, là độ xám của ảnh tại đó. Do vậy, độ xám của ảnh trên mỗi pixel là không đổi.

7
Hình 1.3: Các pixel trên ảnh số kích thước 7×7
Với điều kiện như vậy, rõ ràng ảnh số chỉ là hình ảnh xấp xỉ của vật thể thực, chứ không phải
chính xác như ảnh thu được bằng các dụng cụ quang học. Rõ ràng nếu các pixel càng nhỏ
thì ảnh số càng trung thực, tức là càng xấp xỉ tốt vật thực. Tuy nhiên, vì chức năng Zoom
thông thường giống như việc đặt một kính lúp trước màn hình nên các pixel trở nên to ra,
và khuyết điểm do xấp xỉ trên ảnh số càng trở nên rõ hơn, thô thiển hơn. Đó chính là hiện
tượng bể ảnh (Hình 1.4).
Thực tế thì ta không muốn thấy rõ các pixel, vì nó chỉ là công cụ giúp thể hiện hình ảnh
Hình 1.4: Zoom thông thường
trên máy tính mà thôi. Cái mà ta cần khi phóng to ảnh là được nhìn thấy các chi tiết rất
bé, thậm chí là những chi tiết bên trong một pixel. Hiển nhiên rằng các chi tiết này đã vượt
ra khỏi phạm vi dữ liệu mà ta đang có. Chúng là những chi tiết mới, những dữ liệu mới mà
ta mong muốn có được. Do đó, vấn đề đặt ra là làm sao xác định được những độ xám trên
ảnh nếu như các pixel được chia nhỏ hơn nữa.
Đây là bài toán không chỉ được đặt ra bởi nhu cầu muốn quan sát những chi tiết bé
8
của chúng ta, mà trong nhiều trường hợp, nó là vấn đề không thể bỏ qua. Ta biết rằng kích
thước ảnh (giả sử là 500 × 500) xác định số pixel cho chiều ngang và chiều dọc của ảnh.
Ở màn hình kích thước 35cm×27cm, với độ phân giải 800 × 600, ảnh này có chiều dài là
d =
500
800
× 35 = 21.875cm, chiều rộng là r =
300
600
× 27 = 13.5cm. Cũng ở màn hình này, nếu
ta chọn độ phân giải là 1280 × 1024 thì ảnh lúc này có chiều dài d =
500
1280

× 35 ≈ 13.67cm,
chiều rộng là r =
300
1024
× 27 ≈ 7.91cm. Như vậy ảnh thể hiện ở độ phân giải càng cao sẽ có
kích thước thực tế càng nhỏ. Điều này làm chúng ta cảm thấy không được thoải mái khi làm
việc với các màn hình độ phân giải cao như vậy: chúng trông có vẻ sắc nét hơn nhưng bù lại
các hình ảnh lại bị nhỏ đi. Do đó, ta mong muốn có thể giữ được kích thước thực của ảnh
cho dù đã tăng độ phân giải. Nói như vậy nghĩa là ta phải tăng kích thước lưu trữ của ảnh.
Cụ thể đối với thí dụ ở trên, để giữ cho ảnh ở kích thước thực 21.875cm×13.5cm ở độ phân
giải 1280 × 1024, kích thước lưu trữ của ảnh phải là M × N với
M =
21.875
35
× 1280 = 800
N =
13.5
27
× 1024 = 512
Kích thước lưu trữ 800 × 512 lớn hơn nhiều so với kích thước 500 × 300 ban đầu. Như vậy,
ta phải làm sao đó để "bịa" ra những dữ liệu mới này, tất nhiên là không thể tùy tiện mà
phải làm ảnh trung thực hơn.
Một trường hợp nữa cho thấy sự tất yếu phải "bịa" ra dữ liệu là ở đầu video. Giả sử ta
có một tivi có độ phân giải khá cao 5000 × 5000. Trong một giây, tivi phải hiện lên 24 hình.
Như vậy số các ô nhớ mà đầu video phải truyền lên tivi trong một giây là 24 × 5000 × 5000.
Mỗi ô nhớ (hay pixel) này gồm 3 byte (ứng với chuẩn RGB), tức là 24 bit. Do đó số bit mà
đầu video tải qua tivi trong một giây là
24 × 5000 × 5000 × 24 = 14.4 × 10
9
Nghĩa là tốc độ tải dữ liệu của hẽ thống dây dẫn là 14.4 Gbps. Điều này trên thực tế không

thể có, vì băng thông của hệ cáp dữ liệu chỉ khoảng 800Mbps. Do đó, cho dù đã dùng các
kỹ thuật nén dữ liệu, người ta cũng không thể để đầu video truyền đủ số lượng dữ liệu trong
một giây, mà chỉ truyền một phần trong đó. Phần dữ liệu còn lại sẽ được "bịa" ra theo một
cơ chế thích hợp nào đó mà ta hiện đang quan tâm.
Tóm lại, qua các ứng dụng được đề cập bên trên, vấn đề tạo những dữ liệu mới từ dữ liệu
cũ là không thể bỏ qua. Đó chính là bài toán nội suy dữ liệu. Dữ liệu mà ta đang nói đến ở
đây chính là độ xám ở các pixel trên ảnh.
Một bài toán thực tế như vậy bao giờ cũng chỉ được giải quyết thấu đáo nếu ta mô hình
được dạng toán học của nó, nghĩa là diễn đạt nó thông qua các phương trình và ý toán.
1.2 Mô hình hóa bài toán
Giả sử ta đang có một ảnh kích thước 3 ×3, và ta muốn nó trở thành ảnh 6 ×6, tức là phóng
to 200%. Thật là tự nhiên khi ta vẽ ra hai bảng, một có kích thước 3 × 3, một có kích thước
9
6 × 6, và mỗi ô trong hai bảng này có kích thước bằng nhau như Hình 1.5.
Ở đây các pixel trên ảnh ban đầu được đánh số từ 1 đến 3 × 3 = 9. Vì ảnh kích thước
Hình 1.5: a. Ảnh ban đầu, b. Ảnh sau khi phóng to 200%
6 × 6 có thể được phân hoạch thành 3 × 3 ảnh con có kích thước 2 × 2. Mỗi pixel được đánh
số trên ảnh ban đầu ứng với pixel có tọa độ (1,1) trên mỗi ảnh con 2 × 2 này. Những ô còn
lại trên ảnh mới được đánh dấu hỏi, biểu thị rằng ta phải tìm các mức xám thích hợp tại các
pixel này.
Giá trị xám tại mỗi pixel này có thể được tính bằng nhiều cách, chẳng hạn bằng giá trị
xám tại pixel được đánh số gần nó nhất về phía trên bên phải (Hình 1.6a), hoặc bằng trung
bình cộng của các pixel được đánh số nằm trong lân cận 8 của nó (Hình 1.6b).
Trường hợp a) rõ ràng là kết quả phóng to không tốt vì nó chẳng khác gì phóng đại từng
Hình 1.6: Những phương án giải quyết đơn giản
pixel một. Trường hợp b) cho kết quả đúng nghĩa cái mà ta đang cần. Ở đó có những pixel
với các độ xám mới, không nằm trong những giá trị xám cũ. Nhìn vào Hình 1.6b, ta thấy
hình này giống như kết quả làm trơn ảnh của Hình 1.6a trên miền không gian. Đó là vì giá
10
trị xám tại mỗi pixel cũng được tính như trung bình mức xám của các pixel lân cận. Trong

trường hợp tổng quát, ảnh ban đầu có kích thước M × N. Sau khi phóng to 200%, ta thu
được ảnh với kích thước 2M × 2N. Do đó tỷ lệ các pixel mới được tạo ra so với các pixel ban
đầu là
2M × 2N − M × N
M × N
= 3
Như vậy số lượng các pixel mới hoàn toàn vượt trội so với số lượng pixel đã có. Hơn nữa, độ
xám của các pixel này chỉ là tổ hợp một cách khá đơn điệu (trung bình cộng) của các pixel
đã biết kế cận. Do đó ảnh sau khi phóng to cũng còn khá mờ.
Cách giải quyết tự nhiên nhất để tránh sự mờ, nhòe hình khi phóng to là giảm tỷ lệ zoom.
Ta có thể phóng to 150%, 120% hay 110% thay cho 200%. Sau đó ta lại phóng to ảnh kết
quả một lần nữa, rồi lần nữa,. . . Giả sử ta cần phóng to ảnh ở Hình 1.5a lên 150%, tức là
ảnh mới sẽ có kích thước là 4.5 × 4.5 ≈ 5 × 5. Khi đó ta lập tức gặp khó khăn trong việc
sắp đặt vị trí các pixel đã biết mức xám như Hình1.5b vì lúc này 5 không phải là bội của
3. Đối với ảnh 3 × 3 như thí dụ nêu trên thì ta còn bố trí một cách thủ công được, nhưng
với ảnh M × N thì công việc lại vô cùng rắc rối. Hơn nữa, nếu bố trí không khéo thì có chỗ
các pixel đã biết tập trung lại dày quá, còn có chỗ các pixel lại thưa quá. Thậm chí còn có
trường hợp có một pixel nào đó chẳng có pixel đã biết nào trong lân cận 8 của nó, dẫn đến
việc mức xám tại đó là vô định.
Như vậy, quan niệm ảnh mới có kích thước lớn hơn ảnh cũ như ở Hình 1.5 xem ra có
nhiều bất tiện. Như ở phần 1.1 đã có nói, ta phóng to ảnh cốt là để xem rõ hơn các chi tiết
trong ảnh, chứ không phải các pixel. Do đó, thay vì cho rằng ảnh mới phải to hơn ảnh cũ,
ta quan niệm rằng ảnh mới chỉ có kích thước bằng ảnh cũ mà thôi, nhưng các pixel cuả nó
nhỏ hơn. Nghĩa là mạng lưới các pixel của nó mịn hơn, nhuyễn hơn mạng lưới các pixel ban
đầu. Hình 1.7 cho thấy các pixel khi phóng to ảnh ở Hình 1.5a lên 133% và 200%.
Một khi việc chia lưới đã thực hiện được, các lý luận như trên (Hình 1.6) đều áp dụng
Hình 1.7: a. 133%, b. 200%
được. Đó là việc làm trơn hóa ảnh cũ trên miền pixel mịn hơn. Tuy nhiên, việc lấy trung
bình số học như trên là khá đơn giản nên rõ ràng không được tinh tế. Ảnh kết quả khi đó
11

khá nhòe (Hình ??) và không đáp ứng được nhu cầu cao về chất lượng ảnh. Do đó, ta cần
phải đưa vào các công cụ giải tích đủ sâu sắc để diễn đạt và giải quyết vấn đề trơn hóa hàm.
Để sử dụng được các công cụ giải tích, miền xác định của ảnh phải là miền liên tục. Vì vậy
ta xem miền ảnh như một ô trong R
2
, mà mỗi pixel là một miền con trong đó. Trường độ
xám f ứng với ảnh ban đầu cũng phải được xem như hàm bậc thang (Hình 1.8).
Giả sử f là hàm bậc thang, và nó là hằng trên các ô dạng [x
j
, x
j+1
] × [y
k
, y
k+1
], trong
Hình 1.8: Lưới các pixel trên ảnh ban đầu
đó x
j
= j, y
k
= k, với 0 ≤ j ≤ M − 1, 0 ≤ k ≤ N − 1. Như trên đã nói, việc phóng to f
được xem như việc chia mịn lưới pixel hơn. Do đó ảnh kết quả g cũng phải là một hàm bậc
thang, nhưng nó là hằng trên các ô có kích thước nhỏ hơn các ô ứng với f. Chẳng hạn nếu
phóng to ảnh lên 150% thì mỗi ô mà g là hằng trên đó chỉ có kích thước
2
3
×
2
3

mà thôi. Do
đó ảnh g có những pixel nằm lưng chừng giữa các pixel của f, vị trí

4
3
,
4
3

hay vị trí (x, y)
trên Hình 1.7a chẳng hạn. Hiển nhiên rằng giá trị của g tại (x, y) có thể lấy bằng giá trị của
f trên ô chứa (x, y), nhưng như đã nói ở trên, cách làm này không khác gì đặt một kính lúp
trước màn hình. Do đó, bài toán đặt ra là làm sao làm trơn hàm f trên [0, M] × [0, N ] để
giá trị xám trên mỗi pixel (x, y) bằng một con số nào đó, chứ không đơn giản là bằng giá trị
trên pixel chứa (x, y) ở ảnh f ban đầu. Đó chính là phương pháp trung bình hóa. Từ "trung
bình hóa" ở đây có nghĩa là ảnh mới g trơn hơn ảnh cũ f, và được tính bằng một dạng trung
bình nào đó của ảnh cũ.
12
Chương 2
Phương pháp trung bình hóa
2.1 Ý tưởng chung
Ta cần làm trơn một hàm bậc thang f xác định trên miền chữ nhật [0, M ] × [0, N ] như Hình
1.8. Để thấy rõ ý tưởng, ta xét trường hợp f là hàm một biến trước, nghĩa là ta đang xét
trường hợp ảnh một chiều. Giả sử ảnh có M pixel, đó là các khoảng A
k
=

k −
1
2

, k +
1
2

với k = 0, 1, 2, . . . , M − 1 như ở Hình 2.1.
Giá trị của f trên mỗi khoảng A
k
là f
k
= f(k). Ta cần tìm một đường cong trơn xấp xỉ
Hình 2.1: Trường độ xám trên ảnh một chiều
f. Rõ ràng bản thân cách mô hình f như trên thì f cũng là một xấp xỉ của f, tức là giá trị
của f tại một x ∈ (0, M) nào đó được xấp xỉ bằng giá trị của f tại số nguyên gần x nhất.
Cụ thể
f(x) := f(round(x))
Cách xấp xỉ này được gọi là phương pháp láng giềng gần nhất. Dĩ nhiên đây là một phương
pháp xấp xỉ đơn giản nhất, và cũng thô thiển nhất do f được xấp xỉ bởi chính nó - một hàm
13
bậc thang (và đương nhiên không trơn). Vì vậy, ta phải tìm phương pháp khác để xấp xỉ f
bởi một đường cong mềm mại. Tích chập là một phương án như vậy.
Định nghĩa 1. Cho φ và h là các hàm khả tích trên R. Khi đó ánh xạ φ ∗ h : R → R cho bởi
(φ ∗ h)(x) =
+∞

−∞
φ(y)h(x − y)dy
được gọi là tích chập của φ và h.
Ta cần phân tích rõ khả năng làm trơn hàm của tích chập ở đây. Giả sử ta cần làm trơn
hàm φ. Vấn đề là với những h nào thì φ ∗ h có thể xem như một trơn hóa của φ. Ta xét
những hàm h dương, có tích phân bằng 1 và giá chứa trong khoảng [−1, 1], nghĩa là

+∞

−∞
h(z)dz = 1

supp h = {x ∈ R : h(x) = 0} ⊂ [−1, 1]
Những hàm h như vậy nhiều vô số kể. Ta lấy thí dụ như hai hàm sau (Hình 2.2):
h(x) =

1 − |x| nếu −1 ≤ x ≤ 1
0 nếu x < −1 hay x > 1
h(x) =

e

1
1−x
2
nếu −1 ≤ x ≤ 1
0 nếu x < −1 hay x > 1
Với mỗi n ∈ N, ta đặt h
n
(x) = nh(nx). Khi đó
Hình 2.2: Hai thí dụ cho hàm h
supp h
n
= {x ∈ R : h
n
(x) = 0} = {x ∈ R : h(nx) = 0} ⊂



1
n
,
1
n

14

+∞

−∞
h
n
(z)dz =
+∞

−∞
nh(nz)dz =
+∞

−∞
h(t)dt = 1
Điều đó có nghĩa là mỗi h
n
cũng dương và có tích phân bằng 1 nhưng giá thì nhỏ dần, thu
hẹp về 0 khi n càng lớn. Hình 2.3 là đồ thị của h
2
, h
3

ứng với hàm h cho ở Hình 2.2a.
Hiện giờ ta đặc biệt quan tâm đến tích chập φ ∗ h
n
. Ta có
Hình 2.3: Đồ thị của h
n
với n = 2 và 3
(φ ∗ h
n
)(x) =
+∞

−∞
φ(y)h
n
(x − y)dy =
x+
1
n

x−
1
n
φ(y)h
n
(x − y)dy
Trên miền

x −
1

n
, x +
1
n

, giá trị của hàm φ nhìn chung gần với φ(x). Do đó
(φ ∗ h
n
)(x) ≈
x+
1
n

x−
1
n
φ(x)h
n
(x − y)dy = φ(x)
x+
1
n

x−
1
n
h
n
(x − y)dy
hay

(φ ∗ h
n
)(x) ≈ φ(x)
+∞

−∞
h
n
(x − y)dy = φ(x)
+∞

−∞
h
n
(z)dz = φ(x)
Do đó (φ ∗ h
n
)(x) ≈ φ(x). Nghĩa là φ ∗ h
n
có thể xấp xỉ được hàm φ. Định lý sau đây khẳng
định điều đó.
Định lí 1. Với φ là hàm khả tích trên R, ta có φ ∗ h
n
→ φ trong L
1
(R), tức là
+∞

−∞
|(φ ∗ h

n
)(x) − φ(x)|dx → 0 khi n → ∞
15
Độc giả có thể tham khảo chứng minh của định lý này ở phần Phụ lục A.1.
Chú ý rằng định lý 1 chỉ khẳng định rằng φ ∗ h
n
xấp xỉ được φ trong không gian các
hàm khả tích L
1
(R), chứ không khẳng định sự xấp xỉ từng điểm, nghĩa là ta chưa chắc có
(φ ∗ h
n
)(x) → φ(x) khi n → ∞ với mọi x ∈ R. Đó là do lý luận rằng giá trị của φ trên miền

x −
1
n
, x +
1
n

là gần bằng φ(x), chỉ đúng khi φ liên tục tại x. Vì φ chỉ là hàm khả tích nên
nói chung φ có thể gián đoạn tại một số điểm, chẳng hạn với φ là trường độ xám f, tức là φ
là hàm bậc thang như ở Hình 2.1.
Áp dụng định lý 1 khi thay φ bởi trường độ xám f , ta được f ∗ h
n
→ f trong L
1
(R).
Điều đó có nghĩa là trường độ xám mới f ∗ h

n
có thể xấp xỉ được trường độ xám cũ. Sự xấp
xỉ trong L
1
(R) này, chứ không phải xấp xỉ từng điểm, cho thấy ảnh mới không hoàn toàn
trùng khớp với ảnh cũ tại từng pixel, mà chỉ xấp xỉ theo nghĩa toàn cục (Hình 2.4):
+∞

−∞
|(f ∗ h
n
)(x) − f (x)|dx → 0
Khả năng xấp xỉ ảnh f của tích chập f ∗ h
n
đã rõ. Như trên đã nói, ta không những cần
Hình 2.4: Xấp xỉ ảnh f một cách toàn cục
xấp xỉ được ảnh f , mà còn mong muốn xấp xỉ này phải trơn. Do đó ta phải quan tâm đến
tính trơn của tích chập f ∗ h
n
. Tính chất này của f ∗ h
n
được khẳng định bởi định lý sau:
Định lí 2. Cho φ là hàm khả tích trên R. Nếu h là hàm khả vi liên tục đến bậc k, với k ≥ 1,
thì với mọi n ∈ N, tích chập φ ∗ h
n
cũng khả vi liên tục đến bậc k trên R.
Phần chứng minh của định lý này cũng được nêu trong phần Phụ lục A.2.
Như vậy, tính trơn của tích chập φ ∗ h
n
được quyết định bởi tính trơn của hàm h. Áp dụng

định lý 2 khi thay φ bởi trường độ xám f , ta có f ∗ h
n
khá trơn nếu h khá trơn. Kết hợp khả
năng xấp xỉ f của f ∗ h
n
và tính trơn của nó, ta đưa ra kết luận sau:
Nếu hàm dương h : R → R là hàm khả vi liên tục đến bậc k, với k ≥ 1, có tích phân bằng
16
1 và có giá chứa trong [−1, 1] thì tích chập f ∗ h
n
cũng khả vi liên tục đến bậc k, và xấp xỉ
được ảnh f một cách toàn cục khi n khá lớn.
Kết luận trên hoàn toàn đã giải quyết được nhu cầu trơn hóa ảnh f của ta. Với mỗi n ∈ N,
ảnh kết quả sẽ là
f
n
(x) = (f ∗ h
n
)(x) =
+∞

−∞
f(y)h
n
(x − y)dy (2.1)
Hơn nữa, ta biết rằng h
n
có giá nằm trong

x −

1
n
, x +
1
n

nên với mọi x ∈ R, h(x−y) = 0
nếu y < x −
1
n
hay y > x +
1
n
. Do đó tích phân trên miền vô hạn ở trên chỉ là tích phân trên

x −
1
n
, x +
1
n

mà thôi:
f
n
(x) =
x+
1
n


x−
1
n
f(y)h
n
(x − y)dy (2.2)
Phân hoạch khoảng

x −
1
n
, x +
1
n

thành 2K khoảng con bằng nhau nởi các nút x −
1
n
=
Hình 2.5: Phân hoạch lân cận của x
y
−K
< . . . < y
−2
< y
−1
< y
0
= x < y
1

< y
2
< . . . < y
K
= x +
1
n
như Hình 2.5.
Đặt ∆y = y
1
− y
0
. Khi đó tích phân ở (2.2) được viết lại thành
f
n
(x) = lim
K→∞

K

k=−K
f(y
k
)h
n
(x − y
k
)∆y

Khi lưới chia đủ mịn, tức là khi K khá lớn, ta có thể xem như

f
n
(x) =
K

k=−K
f(y
k
)h
n
(x − y
k
)∆y (2.3)
Đặt w
k
= h
n
(x − y
k
)∆y. Khi đó (2.3) thành
f
n
(x) =
K

k=−K
f(y
k
)w
k

(2.4)
17
Để ý rằng
K

k=−K
w
k
=
K

k=−K
h
n
(x − y
k
)∆y ≈
x+
1
n

x−
1
n
h
n
(x − y)dy
=
+∞


−∞
h
n
(x − y)dy
= 1
Điều đó có nghĩa là tổng của các w
k
bằng 1. Trong (2.4), các w
k
này đóng vai trò là trọng số.
Do tổng của các trọng số này bằng 1 nên vế phải của (2.4) chính là trung bình có trọng của
các giá trị f(y
k
), với −K ≤ k ≤ K. Hơn nữa, vì các y
k
đều nằm trong

x −
1
n
, x +
1
n

như ở
Hình 2.5 nên (2.4) nói lên rằng giá trị xám tại mỗi điểm trên ảnh mới f
n
bằng trung bình
có trọng giá trị xám tại các điểm lân cận trong ảnh cũ f. Chính việc lấy trung bình này mà
trên ảnh mới, độ xám tại mỗi điểm gần bằng độ xám tại các điểm xung quanh nó hơn so với

ảnh cũ, dẫn đến việc ảnh mới sẽ trơn hơn ảnh cũ. Đó là lý do mà phương pháp xấp xỉ này
được gọi là phương pháp trung bình hóa, hay trơn hóa.
Trong quá trình trung bình hóa ảnh ở (2.1), hàm h
n
đóng vai trò như một tác nhân thực
hiện phép lấy trung bình này. Để ý rằng tác nhân h
n
ở (2.1) đã ứng xử rất thông minh: nếu
ta muốn làm trơn ảnh f tại điểm x, hàm h
n
(x − y) chỉ khác 0 khi x− y ∈ supp h
n



1
n
,
1
n

,
tức là chỉ khi y ∈

x −
1
n
, x +
1
n


- là một lân cận của x. Do đó tác nhân này chỉ trung bình
hóa một lân cận của x mà thôi, như ở phương trình (2.2), chứ không lấy trung bình của f
tại những nơi khác trên miền pixel. Muốn làm trơn toàn bộ ảnh f, ta sẽ làm trơn nó tại từng
pixel một, lần lượt từ pixel đầu trên đến pixel cuối cùng. Lúc này tác nhân h
n
giống như một
ông thợ chạy từ trái (pixel đầu tiên) sang phải (pixel cuối cùng), tới đâu là ổng làm trơn f
chỗ đó (Hình 2.6).
Tóm lại, để làm trơn một ảnh f, ta chỉ cần một hàm dương h
n
khá trơn và có giá là lân
cận của 0, có tích phân bằng 1. Sau đó ta tính tích chập f ∗ h
n
. Đó chính là ảnh kết quả.
Như vậy chất lượng của ảnh kết quả phụ thuộc hoàn toàn vào việc chọn h
n
. Vì lẽ đó mà h
n
được gọi là nhân (kernel) của phương pháp trung bình hóa.
Ý tưởng của phương pháp đã rõ. Tuy nhiên nếu tính trường độ xám mới bằng công thức
(2.1) thì xem ra công việc tính toán không đơn giản chút nào. Đó là vì ta phải tính tích phân
trên R. Do đó dưới đây ta sẽ bàn về thủ thuật tính toán sao cho thật hiệu quả.
Vì trường độ xám f là hàm bậc thang như ở Hình 2.1 nên ta có thể biểu diễn
f(y) =
M−1

k=0
f(k)χ
A

k
(y) (2.5)
Trong đó A
k
=

k −
1
2
, k +
1
2

với k = 0, 1, 2, . . . , M − 1.
18
Hình 2.6: Cách làm trơn hàm của nhân h
19
Thế (2.5) vào (2.1), ta được
f
n
(x) =
+∞

−∞
M−1

k=0
f(k)χ
A
k

(y)h
n
(x − y)dy
=
M−1

k=0
f(k)
+∞

−∞
χ
A
k
(y)h
n
(x − y)dy
=
M−1

k=0
f(k)

A
k
h
n
(x − y)dy
Nếu với mỗi k, ta đặt
w

k
(x) =

A
k
h
n
(x − y)dy (2.6)
thì ảnh kết quả sẽ là
f
n
(x) =
M−1

k=0
f(k)w
k
(x) (2.7)
Công thức (2.7) một lần nữa khẳng định vài trò quyết định của nhân h
n
trong việc nội suy
ảnh: ta chỉ biết độ xám của các pixel k = 0, 1, 2, . . . , M − 1 trên ảnh cũ mà thôi, nhưng do
h
n
xác định trên cả R nên w
k
xác định trên cả R, dẫn đến f
n
xác định trên cả R. Do đó ta
có thể biết được giá trị xám tại pixel

1
2
,
7
3
, từ (2.7).
Một nét đặc biệt của (2.7) mà ta đáng quan tâm là với các x khác nhau, bộ các trọng số
w
0
(x), w
1
(x), w
M−1
(x) là khác nhau. Do đó, ảnh mới f
n
có bao nhiêu pixel thì ta phải tính
lại bộ này bấy nhiêu lần. Giả sử ảnh mới có N pixel (tất nhiên là N > M) thì số các trọng
số w
j
(x) mà ta phải tính là M N. Để cụ thể, xét một ảnh một chiều có M = 100 pixel, và ta
cần phóng to nó lên 200%, tức là ảnh mới sẽ có N = 200 pixel, khi đó số lượng các trọng số
mà ta phải tính là MN = 100 × 200 = 2 × 10
4
. Chú ý rằng mỗi trọng số w
j
(x) này là một
tích phân như ở (2.6). Để thấy sự phức tạp của việc tính tích phân này, ta viết lại (2.6) dưới
dạng gọn nhất có thể:
w
k

(x) =

x−A
k
h
n
(z)dz
hay
w
k
(x) =
x−k+
1
2

x−k−
1
2
h
n
(z)dz (2.8)
Dĩ nhiên ta được quyền chọn nhân h
n
để xấp xỉ ảnh. Tuy nhiên, do những điều kiện khắt
khe của h
n
như là phải trơn, phải có tích phân bằng 1 nên biểu thức của nó không được đẹp
do phải chắp vá nhiều mảnh đa thức lại (Hình 2.2a). Trong trường hợp h
n
có biểu thức đẹp

đi chăng nữa (Hình 2.2b) thì việc tính tích phân hay nguyên hàm của nó cũng rất khó khăn,
20
và phần lớn phải nhờ đến tích phân số (như phương pháp cầu phương Gauss chẳng hạn).
Do đó việc tính mỗi trọng số w
k
(x) ở (2.8) là một phép tính phức tạp, dẫn đến việc tính
MN = 2 × 10
4
trọng số có độ phức tạp cao.
Như vậy, ta phải tìm con đường tính toán khác để tránh phải tính tích phân. Quan sát
(2.7) một lần nữa, ta thấy rằng nếu biết các hàm w
0
, w
1
, , w
M−1
thì (2.7) hoàn toàn có thể
cho ta ảnh kết quả f
n
. Tuy nhiên, để có M hàm này, ta phải dùng (2.8), tức là liên quan đến
tính tích phân của h
n
- điều mà ta đang muốn né tránh. Do đó, giải pháp tự nhiên nhất là
thay vì cho biết nhân h
n
, ta tự cho luôn các hàm trọng w
0
, w
1
, , w

M−1
. Thế nhưng các hàm
này đều là tích phân của h
n
ở (2.8) nên chúng phải có ràng buộc nào đó với nhau, chứ không
tùy tiện được. Vì vậy, vấn đề đặt ra là làm sao dựa vào những đặc tính của h
n
như tính
dương, tính trơn, tích phân bằng 1, giá be bé để định ra những tính chất nào w
0
, w
1
, , w
M−1
phải thỏa, để từ đó ta có thể chọn thẳng được những hàm này mà không cần biết h
n
tương
ứng với chúng là gì.
Trước hết ta khai thác tính chất của các hàm trọng này từ công thức (2.8). Lấy tổng hai
vế khi k chạy từ 0 đến M − 1, ta được
M−1

k=0
w
k
(x) =
M−1

k=0
x−k+

1
2

x−k−
1
2
h
n
(z)dz
=
x+
1
2

x−M+
1
2
h
n
(z)dz (2.9)
Vì kích cỡ ảnh lúc sau hay lúc đầu không đổi nên pixel x trên ảnh mới vẫn thuộc khoảng
[0, M − 1]. Do đó
x − M +
1
2
≤ (M − 1) − M +
1
2
= −
1

2
x +
1
2
≥ 0 +
1
2
=
1
2
Do đó


1
2
,
1
2



x − M +
1
2
, x +
1
2

Vì vậy nên h
n

có giá chứa trong


1
2
,
1
2

thì tích phân ở (2.9) có thể lấy từ −∞ đến +∞:
M−1

k=0
w
k
(x) =
+∞

−∞
h
n
(z)dz = 1 (2.10)
Điều này cho thấy chỉ khi h
n
có giá nằm trong


1
2
,

1
2

thì vế phải của (2.7) mới mang ý
nghĩa là trung bình có trọng của độ xám tại các pixel trên ảnh cũ. Vì ta chỉ muốn dùng công
thức (2.7) để tìm ảnh kết quả, chứ không phải (2.1), nên để đảm bảo ý nghĩa "trung bình
21
hóa", tổng của các trọng số w
k
(x) phải bằng 1. Do đó kể từ giờ ta chỉ xét những nhân h
n

giá chứa trong


1
2
,
1
2

thôi.
Quan sát lại (2.8), ta thấy vế phải của nó không phụ thuộc vào từng trị giá cụ thể của x
và k, mà chỉ phụ thuộc vào hiệu số x − k. Do đó thật có lý khi ta tính hiệu
¯
h(x − k) thay vì
w
k
(x) ở (2.8):
¯

h(x − k) =
x−k+
1
2

x−k−
1
2
h
n
(z)dz (2.11)
Do đó (2.7) được viết lại thành
f
n
(x) =
M−1

k=0
f(k)
¯
h(x − k) (2.12)
Việc tìm tính chất của các hàm trọng w
k
giờ đây quy về việc tìm tính chất của hàm
¯
h dựa
trên các tính chất của h
n
để từ đó ta có thể cho thẳng
¯

h là bao nhiêu luôn mà không cần
biết nhân h
n
tương ứng. Rõ ràng (2.10) là một tính chất quan trọng
M−1

k=0
¯
h(x − k) = 1 (2.13)
Tuy nhiên, nếu nhìn lại (2.13) thì ta thấy tính chất này không thật thỏa đáng: nhân h
n
hiển
nhiên có thể được chọn tùy ý, miễn là nó trơn, có tích phân bằng 1, và giá là lân cận của
0. Nói như vậy nghĩa là việc chọn h
n
không phụ thuộc vào ảnh mà nó sẽ làm trơn, nghĩa là
nhân h
n
có thể làm trơn bất kỳ ảnh nào. Còn
¯
h là một đại diện cho h
n
để công việc tính
toán được dễ dàng, tránh tính tích phân. Nó hiển nhiên phải có thể làm trơn bất kỳ ảnh
nào. Nhưng (2.13) lại không cho thấy điều đó vì nó là tính chất phụ thuộc vào kích cỡ M
của ảnh. Hàm
¯
h ở (2.13) chỉ áp dụng được cho nhưng ảnh có M pixel mà thôi. Do đó, tuy
(2.13) đảm bảo cho ảnh kết quả ở (2.12) là trung bình có trọng của các giá trị xám trên ảnh
cũ nhưng nó lại hạn chế phạm vi hiệu lực của

¯
h. Nếu ta khăng khăng giữ lại (2.13) thì ứng
với ảnh khác nhau ta lại phải cho các hàm
¯
h khác nhau. Đây là điều quá bất tiện mà ta cũng
rất muốn tránh. Do đó, ta đành không dùng (2.13), tức là không đảm bảo tính "trung bình
hóa" của phương pháp. Bù lại, lấy tổng hai vế ở (2.11) khi k chạy từ −∞ đến +∞, ta được


k=−∞
¯
h(x − k) =
+∞

−∞
h
n
(z)dz = 1 (2.14)
Do đó tuy
M−1

k=0
¯
h(x − k) không chắc bằng 1 nhưng nó cũng xấp xỉ bằng 1 nếu giá của h
n
đủ
bé. Thực tế là trước đó ta đã khẳng định rằng tổng này bằng 1 khi supp h
n




1
2
,
1
2

.
Vì lẽ đó mà ta sẽ dùng (2.14) thay cho (2.13). Hơn nữa (2.14) là tính chất của
¯
h mà không
phụ thuộc vào kích thước M của ảnh mà nó sẽ làm trơn.
22
Vừa rồi ta đã khai thác tính chất tích phân bằng 1 của h
n
để phát biểu tính chất (2.14)
của
¯
h. Tiếp theo, ta sẽ khai thác tính chất supp h
n
chứa trong một lân cận nhỏ của 0. Ở
(2.11), thay x − k bởi x ta được
¯
h(x) =
x+
1
2

x−
1

2
h
n
(z)dz (2.15)
Giả sử supp h
n
⊂ [−, ]. Khi đó
* Nếu x >  +
1
2
: x −
1
2
>  nên [−, ] ∩

x −
1
2
, x +
1
2

= ∅ tức là (2.15) cho ta
¯
h(x) = 0.
* Nếu x < −−
1
2
: x+
1

2
<  nên [−, ]∩

x −
1
2
, x +
1
2

= ∅ tức là (2.15) cũng cho ta
¯
h(x) = 0.
Vì vậy nếu |x| >  +
1
2
thì
¯
h(x) = 0, hay
supp
¯
h(x) ⊂

− −
1
2
,  +
1
2


(2.16)
(2.16) cho thấy
¯
h cũng là một hàm có giá là một lân cận nhỏ của 0, nhưng giá này lớn hơn
giá của h
n
.
Tiếp theo, ta khai thác tính trơn của h
n
. Ở (2.11), lấy tổng hai vế, ta được
0

k=−∞
¯
h(x − k) =
+∞

x−
1
2
h
n
(z)dz
Lấy đạo hàm hai vế, ta được

0

k=−∞
¯
h(x − k)



= −h
n

x −
1
2

hay
h
n
(y) = −

0

k=−∞
¯
h(y +
1
2
− k)


(2.17)

¯
h có giá chứa trong khoảng hữu hạn nên trổng vô hạn ở (2.17) thực tế chỉ là tổng hữu
hạn. Do đó để h
n

trơn,
¯
h phải trơn.
Tóm lại, ta đã thành công trong việc quy đổi các tính chất của h
n
thành tính chất của
¯
h
như sau:
+∞

k=−∞
¯
h(x − k) = 1 (2.18)
¯
h có giá là lân cận nhỏ nhỏ của 0 (2.19)
¯
h khá trơn (2.20)
23
Còn hơn cả mong đợi, công thức (2.17) cho ta cách tìm lại h
n
khi đã biết
¯
h. Như vậy,
kể từ nay ta có thể yên tâm dùng (2.12) để xấp xỉ ảnh, trong đó
¯
h được chọn sao cho thoả
(2.18) – (2.20). Theo (2.12) thì chất lượng của ảnh mới được quyết định hoàn toàn bởi hàm
¯
h nên ta cũng gọi

¯
h là nhân (kernel) của phép xấp xỉ.
Một điều đáng chú ý là không nhất thiết nhân
¯
h phải thoả đầu đủ (2.18) – (2.20) thì ảnh
mới f
n
mới tính được. (2.12) cho phép ta tính f
n
với bất kỳ nhân
¯
h nào. Tất nhiên là nếu
¯
h
càng xa rời các điều kiện (2.18) – (2.20) thì kết quả xấp xỉ càng không tốt ,và ngược lại.
Ta biết rằng khi n càng lớn thì f
n
= f ∗h
n
càng xấp xỉ tốt ảnh f. Mặt khác, vì supp h
n



1
n
,
1
n


nên khi n càng lớn thì giá trị của h
n
càng nhỏ. Do vậy, khi giá trị của h
n
càng nhỏ
thì f
n
càng xấp xỉ tốt ảnh f . Kết hợp với (2.16) khi  =
1
n
, ta suy ra rằng khi giá của
¯
h càng
gần


1
2
,
1
2

thì ảnh f
n
xấp xỉ càng tốt f. Có một điều quan trọng mà ta cần lưu ý là nếu
f
n
xấp xỉ càng tốt f thì ảnh kết quả càng giống ảnh bắt đầu - ảnh mà khi phóng to sẽ bị bể
hình. Do đó, một điều nghe có vẻ hợp lý là khi f
n

xấp xỉ càng tốt f thì ảnh kết quả càng có
chất lượng kém (vì nó càng giống f ). Vì vậy ta chỉ có thể thu được ảnh chất lượng tốt khi
f
n
xấp xỉ không tốt f, nghĩa là giá của
¯
h càng khác


1
2
,
1
2

càng tốt.
Điều tưởng chừng như vô lý này lại rất hợp lý khi ta quan sát kỹ hơn công thức (2.12).
f
n
(x) =
M−1

k=0
f(k)
¯
h(x − k)
Nếu giá của
¯
h càng gần



1
2
,
1
2

thì chỉ có khoảng từ 1 đến 2 số hạng trong tổng trên là
khác 0. Do đó độ xám tại pixel x trên ảnh mới chỉ được tính theo độ xám tại 1 đến 2 pixel
lân cận của nó trong ảnh cũ mà thôi. Thế thì rõ ràng ảnh mới cũng đâu khác nhiều so với
ảnh cũ, tức là cũng có chất lượng kém. Ngược lại, nếu giá của
¯
h càng lớn thì số lượng các số
hạng khác không ở tổng trên càng nhiều, tức là càng có nhiều pixel trên ảnh cũ tham gia,
đóng góp độ xám của mình cho pixel x của ảnh mới. Điều đó dẫn đến ảnh mới sẽ khác nhiều
hơn so với ảnh cũ. Tuy nhiên vì có nhiều pixel tham gia trong phép trung bình hoá hơn nên
ảnh mới sẽ mờ hơn ảnh cũ. Tóm lại, ta rút ra kết luận rằng: nếu giá của
¯
h càng gần


1
2
,
1
2

thì chất lượng ảnh mới càng kém, còn nếu nó càng lớn thì chất lượng ảnh mới càng tốt hơn.
2.2 Nhân láng giềng gần nhất
Nhận xét định hướng cho ta cách chọn nhân

¯
h, và cũng giúp ta dự đoán ảnh kết quả sẽ như
thế nào. Trước hết, ta đến với trường hợp tệ nhất, đó là khi supp
¯
h =


1
2
,
1
2

. Xét nhân
¯
h
sau (Hình 2.7)
¯
h(x) =

1 nếu |x| <
1
2
0 nếu |x| ≥
1
2
(2.21)
Thế vào (2.12), ta thu được f
n
(x) = f(round(x)), nghĩa là độ xám tại pixel x trong ảnh

mới bằng độ xám tại pixel cũ gần x nhất. Chính vì vậy
¯
h ở (2.21) còn được gọi là nhân láng
giềng gần nhất.
24
Hình 2.7: Nhân láng giềng gần nhất
2.3 Nhân tuyến tính
Tiếp theo, ta mở rộng giá của
¯
h để được ảnh kết quả tốt hơn (Hình 2.8):
¯
h(x) =

1 − |x| nếu |x| < 1
0 nếu |x| ≥ 1
(2.22)
Do
¯
h là hàm tuyến tính từng khúc nên nó còn được gọi là nhân tuyến tính. Để cảm nhận
Hình 2.8: Nhân tuyến tính
được trọn vẹn cách làm nội suy ảnh của nhân này, ta lây một pixel x cần tìm độ xám. Giả
sử x nằm giữa m và m + 1
Khi đó
¯
f (x) =
m−1

y=0
f (y)
¯

h (x − y) = f (m)
¯
h (x − m) + f (m + 1)
¯
h (x − m − 1)
25

×