1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

71 338 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 2,12 MB

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

Nội dung

Bài viết này nhằm thiết lập mô hình toán học cho bàitoá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.. Ta biết r

Trang 1

BM TỐN – TIN ỨNG DỤNG

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

Phạm Ngọc Tuân

Trang 2

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ăngcườ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ộttrong 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àitoá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úngtô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ómtác giả:

Trang 3

Mục lục

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

Trang 4

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 hn 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 B2 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 x0 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á C1 và C2 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 C2 47

3.14 Điều chỉnh một khoảng C 47

Trang 5

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

Trang 6

AB = ` tan α

Trang 7

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ậnthấy được là ABmin = ` tan αmin Đối với những người có thị lực tốt, như trẻ con hay nhữngngườ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

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ậnkhi 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ộtphé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ềunà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ụ quanghọ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 ốngnhò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 hoahậ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áchnà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ónglớ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

Trang 8

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ảichí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 Zoomthô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ệntượ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é

Trang 9

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íchthướ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à

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àmviệ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ạicá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 ảnhcho 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ângiả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 = 512Kí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 × 109Nghĩ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ôngthể 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 trongmộ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

Trang 10

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ònlạ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ácpixel 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ình1.6a), hoặc bằng trungbì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 pixelvớ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ấyhì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á

Trang 11

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 Trongtrườ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 = 3Như 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ếtquả 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ệcsắ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ưngvớ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 đếnviệ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ần1.1 đã có nói, ta phóng to ảnh cốt là để xem rõ hơn các chi tiếttrong ả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ình1.7 cho thấy các pixel khi phóng to ảnh ở Hình1.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 trungbì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 đó

Trang 12

khá nhòe (Hình ??) và không đáp ứng được nhu cầu cao về chất lượng ảnh Do đó, ta cầnphả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 R2, 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 [xj, xj+1] × [yk, yk+1], trong

Hình 1.8: Lưới các pixel trên ảnh ban đầu

đó xj = j, yk = 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ậcthang, 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ếuphóng to ảnh lên 150% thì mỗi ô mà g là hằng trên đó chỉ có kích thước 2

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úptrướ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ừ "trungbì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 trungbình nào đó của ảnh cũ

Trang 13

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éttrường hợp ảnh một chiều Giả sử ảnh có M pixel, đó là các khoảng Ak =



k −1

2, k +

12



với k = 0, 1, 2, , M − 1 như ở Hình 2.1

Giá trị của f trên mỗi khoảng Ak là fk = 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ươngphá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

Trang 14

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ỉ fbở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

đượ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ơnhà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étnhữ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à



Trang 16

Độ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 φ ∗ hn xấp xỉ được φ trong không gian cáchàm khả tích L1(R), chứ không khẳng định sự xấp xỉ từng điểm, nghĩa là ta chưa chắc có(φ ∗ hn)(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

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 φ ∗ hn được quyết định bởi tính trơn của hàm h Áp dụngđịnh lý2khi thay φ bởi trường độ xám f , ta có f ∗ hn khá trơn nếu h khá trơn Kết hợp khảnăng xấp xỉ f của f ∗ hn 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

Trang 17

1 và có giá chứa trong [−1, 1] thì tích chập f ∗ hn 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à

Hơn nữa, ta biết rằng hncó giá nằm trongx − 1

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

Phân hoạch khoảng x − 1

n, x + n1 thành 2K khoảng con bằng nhau nởi các nút x − 1

Trang 18

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ủacác giá trị f (yk), với −K ≤ k ≤ K Hơn nữa, vì các yk đều nằm trong x − 1

n, x + n1 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 fn 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 hn đóng vai trò như một tác nhân thựchiện phép lấy trung bình này Để ý rằng tác nhân hn ở (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 hn(x − y) chỉ khác 0 khi x − y ∈ supp hn⊂−1

n,n1,tức là chỉ khi y ∈x − 1

n, x + n1 - là một lân cận của x Do đó tác nhân này chỉ trung bìnhhó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 ftạ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ừngpixel 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 hn 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 fchỗ đó (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 hn khá trơn và có giá là lâncận của 0, có tích phân bằng 1 Sau đó ta tính tích chập f ∗ hn Đó 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 hn Vì lẽ đó mà hnđượ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ântrê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

với k = 0, 1, 2, , M − 1

Trang 19

Hình 2.6: Cách làm trơn hàm của nhân h

Trang 20

hn xác định trên cả R nên wk xác định trên cả R, dẫn đến fn 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ố

w0(x), w1(x), wM −1(x) là khác nhau Do đó, ảnh mới fn có bao nhiêu pixel thì ta phải tínhlạ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ố wj(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à tacầ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à M N = 100 × 200 = 2 × 104 Chú ý rằng mỗi trọng số wj(x) này là mộttí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ướidạng gọn nhất có thể:

wk(x) =

Z

x−A k

hn(z)dzhay

do phải chắp vá nhiều mảnh đa thức lại (Hình2.2a) Trong trường hợp hn có biểu thức đẹp

đi chăng nữa (Hình2.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,

Trang 21

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ố wk(x) ở (2.8) là một phép tính phức tạp, dẫn đến việc tính

M N = 2 × 104 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 w0, w1, , wM −1 thì (2.7) hoàn toàn có thểcho ta ảnh kết quả fn Tuy nhiên, để có M hàm này, ta phải dùng (2.8), tức là liên quan đếntính tích phân của hn - đ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 hn, ta tự cho luôn các hàm trọng w0, w1, , wM −1 Thế nhưng các hàmnày đều là tích phân của hn ở (2.8) nên chúng phải có ràng buộc nào đó với nhau, chứ khôngtù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 hn như tínhdươ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 w0, w1, , wM −1phả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 hn 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

x +1

2 ≥ 0 + 1

2 =

12

Điều này cho thấy chỉ khi hn có giá nằm trong −1

2,12 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ôngthứ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

Trang 22

hóa", tổng của các trọng số wk(x) phải bằng 1 Do đó kể từ giờ ta chỉ xét những nhân hn có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ì

wk(x) ở (2.8):

¯h(x − k) =

M −1

X

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 hn hiểnnhiê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 hn không phụ thuộc vào ảnh mà nó sẽ làm trơn, nghĩa lànhân hn có thể làm trơn bất kỳ ảnh nào Còn ¯h là một đại diện cho hn để công việc tínhtoá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ỳ ảnhnà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ỡ Mcủ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ì ứngvớ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ũngrấ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ìnhhó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

X

k=−∞

¯h(x − k) =

bé Thực tế là trước đó ta đã khẳng định rằng tổng này bằng 1 khi supp hn⊂−1

2,12

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ôngphụ thuộc vào kích thước M của ảnh mà nó sẽ làm trơn

Trang 23

Vừa rồi ta đã khai thác tính chất tích phân bằng 1 của hn để 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 hn 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) =

!0

= −hn



x −12

Trang 24

Còn hơn cả mong đợi, công thức (2.17) cho ta cách tìm lại hn 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ì ảnhmới fn mới tính được (2.12) cho phép ta tính fn với bất kỳ nhân ¯h nào Tất nhiên là nếu ¯hcà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ì fn= f ∗ hn càng xấp xỉ tốt ảnh f Mặt khác, vì supp hn⊂

−1

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

2,12 thì ảnh fn 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

fn 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 fn 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

fn xấp xỉ không tốt f , nghĩa là giá của ¯h càng khác−1

Nếu giá của ¯h càng gần −1

2,12 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 pixellâ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ềuhơ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,12thì 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,12 Xét nhân ¯hsau (Hình 2.7)

¯h(x) = 1 nếu |x| < 1

Trang 25

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ình2.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ả

Trang 26

Do −1 ≤ x − m − 1 ≤ 0 ≤ x − m ≤ 1 nên

¯

f (x) = f (m) (1 − |x − m|) + f (m + 1) (1 − |x − m − 1|) = f (m) (1 − s) + f (m + 1) sNhư vậy, đây chính là phép xấp xỉ bằng cách nối f (m) và f (m + 1) bằng một đường thẳng,rồi sau đó lấy độ cao của đoạn thẳng đứng kẻ từ x như Hình 2.3

Nghĩa là khi đó tại những vị trí cũ trên miền ảnh, độ xám của ảnh mới bằng độ xám ở ảnh

cũ Lúc này phép xấp xỉ bằng cách trơn hoá ảnh f của ta đã trở thành phép nội suy Trêntinh thần đó ta mở rộng giá của ¯h thành [−2, 2] để được ảnh kết quả tốt hơn Đồ thị của ¯hđược dự đoán sẽ giống như Hình 2.4

Nhân ¯h như trên là hàm chẵn Do đó ta chỉ cần xác định ¯h trên miền [0, 2] Giả sử trênmiền [0, 1], ¯h là đa thức r, còn trên miền [1, 2], ¯h là đa thức s, ta xét trường hợp đơn giảnnhất là r và s đều là các parabol Vì r(0) = 1, r0(0) = 0 nên r có dạng

r(x) = ax2+ 1

Trang 27

1 − x2 nếu |x| < 12(|x| − 1)(|x| − 2) nếu 1 ≤ |x| < 2

Do đó, để cải tiến nhân này, ta xem r và s là các đa thức bậc ba luôn Mỗi đa thức bậc ba

có 4 hệ số Như vậy hiện ta đang cần xác định 8 hệ số Trước hết ta bám sát vào điều kiện(2.18): rõ ràng (2.18) thỏa với mọi x ∈ R khi và chỉ khi nó thỏa với mọi x ∈ [0, 1) Với mỗi

x ∈ [0, 1), theo Hình 2.4 ta có

¯h(x − 0) = ¯h(x) = r(x)

¯h(x − 1) = ¯h(1 − x) = r(1 − x)

¯h(x − 2) = ¯h(2 − x) = s(2 − x)

¯h(x + 1) = s(1 + x)

¯h(x − j) = 0 với mọi k 6= −1, 0, 1, 2

Trang 28

Do đó (2.18) được thỏa khi và chỉ khi

¯

h (x − 0) + ¯h (x − 1) + ¯h (x − 2) + ¯h (x + 1) = 0tức là

r (x) + r (1 − x) + s (2 − x) + s (1 + x) = 0 (2.24)(2.24) phải đúng với mọi x ∈ [0, 1) Hơn nữa, vế trái của nó là một đa thức nên đa thức nàyphải đồng nhất 0 Vì đây là đa thức bậc ba nên (2.24) cho ta 4 phương trình ràng buộc cho

8 hệ số cần tìm Hơn nữa, ta lại có thêm 3 phương trình ràng buộc nữa như sau

r(0) = 1, r(1) = 0, s(1) = 0 (2.25)Điều kiện s(2) = 0 không cần đưa vào vì nó hiển nhiên suy ra được từ (2.24) và (2.25) Do

đó (2.24) và (2.25) cho ta 7 phương trình xác định 8 hệ số, nghĩa là sẽ có một hệ số tự do.Giải cụ thể ra, ta thu được

r (x) = (a + 2) x3− (a + 3) x2 + 1

s (x) = ax3− 5ax2+ 8ax − 4atrong đó a ∈ R là hệ số tự do Nó xác định tuyến tính của ¯h tại x = 1 Do đó



−3

2,

32

, rồi [-3, 3] , rồi



−7

2,

72

, được dự báo là cực kỳ phức tạp Vìvậy, ta cần một quy tắc nào đó đơn giản hơn cách đồng nhất hệ số của đa thức như ở (2.24)

để mở rộng giá của ¯h Họ các đường cong B-spline được đưa ra để giải quyết vấn đề này.Đây là họ các đường công được sinh ra bởi hàm cơ sở sau

 Hàm B-spline bậc 1 được định nghĩa là

B1 = B0∗ B0

Trang 29

− 1 2



−1

2,

12



Do đó

B1(x) =

1 2

Z

x− 1

B0(z) dz =

1 2

B2 = B1∗ B0tức là

Trang 31

Hình 2.9: Đồ thị của B2

Đây là hàm liên tục Vì vậy B2 khả vi liên tục trên R Ta thấy rằng sự trơn của các hàmB-spline cứ tăng dần từ B0 đến B2 Đi kèm với đó, giá của chúng cũng được mở rộng rasupp B0 ⊂



−1

2,

12

, supp B1 ⊂ [−1, 1], supp B2 ⊂



−3

2,

32

 Vì vậy, từ đây ta đưa ra côngthức chung cho họ các hàm B-spline như sau:

Thật vậy, giả sử ta đã có Bnkhả vi liên tục đến cấp n−1 trên R và supp Bn ⊂−n+1

2 ,n+12 

Ta sẽ chứng minh rằng Bn+1 khả vi liên tục đến cấp n trên R và supp Bn+1 ⊂−n+2

2 ,n+22 .Trước hết ta chứng minh tính chất về giá của Bn+1 Ta có

Trang 32

x − 1

2, x +

12



x − 1

2, x +

12

.Tiếp theo ta giải quyết vấn đề khả vi của Bn+1 Áp dụng Định lý 2với φ là B0, còn h là Bn,

ta có ngay tích chập Bn∗ B0 khả vi liên tục đến cấp n − 1 trên R Hơn nữa, theo chứng minhcủa Định lý 2ở Phụ lục A.2, ta còn có

Bn+1(k) = Bn(k)∗ B0trong đó k ∈ {0, 1, , n − 1} là cấp lấy đạo hàm Đặc biệt, khi lấy k = n − 1 ta được

Bn+1(n−1) = Bn(n−1)∗ B0

Do Bn khả vi liên tục đến cấp n − 1 nên Bn(n−1) là ánh xạ liên tục Để chứng minh Bn+1 khả

vi liên tục đến cấp n, ta chỉ cần chứng minh rằng Bn+1(n−1) khả vi liên tục trên R Muốn vậy,

ta chỉ cần chứng minh tích chập của một hàm liên tục φ với B0 là khả vi liên tục Ta có



− φ



x − 12



tức là đạo hàm này cũng liên tục

Tóm lại, Mệnh đề 1 cho ta một khẳng định rất như mong muốn của ta Đó là việc làmB-spline bậc n là Bn càng trơn khi n càng lớn, và giá của nó cũng ngày càng mở rộng Tuynhiên, để có thể chọn nhân ¯h là Bn, hàm Bn còn phải thỏa thêm điều kiện (2.18) nữa, tức là

+∞

X

k=−∞

Bn(x − k) = 1 (2.31)

Trang 33

Vì B0 và B1 lần lượt là nhân láng giềng gần nhất và nhân tuyến tính nên dĩ nhiên chúng thỏa(2.31) Giả sử Bn thỏa (2.21), ta xem xem Bn+1 có thỏa (2.31) không

¯h(1) = B2(1) = 1

8 6= 0Tuy nhiên dù sao đây cũng chỉ là khuyết điểm nhỏ, có thể bỏ qua vì ảnh cũ và ảnh mớicũng chẳng nhất thiết phải trùng nhau từng điểm một Việc tính các hàm B-spline bằng cách

đệ quy giúp ta tìm ra biểu thức của chúng nhanh hơn nhiều so với cách đồng nhất hệ số của

đa thức như ta đã làm với nhân bậc ba Thí dụ, dùng biểu thức của B2 ở (2.29) và công thức

2.6 Xử lý trên ảnh hai chiều

Giả sử ta cần tìm độ xám của ảnh mới tại (x,y) Từ điểm này, ta dựng một đường thẳngđứng cắt các đường lưới tại các điểm (x, y0), (x, y1), (x, y2) và (x, y3) Giả sử rằng ta biết độxám tại 4 điểm này Khi đó, ta áp dụng phương pháp xấp xỉ ảnh, một chiều để tìm ra độ

Trang 34

Hình 2.10: Nội suy lần lượt theo 2 trục

xám tại (x,y) Để tính (x, y0), ta áp dụng phương pháp xấp xỉ ảnh một chiều gồm các pixel(x0, y0), (x1, y0), (x2, y0), (x3, y0) Điều đó có nghĩa là để tìm độ xám tại (x, y) trên ảnh haichiều, dùng hai lần phép xấp xỉ ảnh một chiều, một theo chiều dọc và một theo chiều ngang.Một cách tổng quát, ảnh f có kích thước MxN Ta mô hình hóa ý toán trên như sau: vớimỗi yk= k, ta tiến hành xấp xỉ ảnh theo chiều ngang thì được

Trang 35

pháp trung bình hóa.

Trên đây ta vừa phân tích một cách chi tiết ý tưởng cũng như các thủ thuật tính toáncủa phương pháp trơn hóa, hay trung bình hóa Ở đó, ảnh đã được phóng to bằng cách lấytrung bình độ xám tại các pixel trong ảnh cũ Hệ quả là ảnh mới tuy chi tiết hơn nhưng

mờ hơn Độ xám ở các pixel trong ảnh mới không mang tính đột phá, không có những biếnđổi bất thường so với ảnh cũ Thay vào đó, độ xám tại một điểm cứ hao hao, bắt chước độxám tại những điểm xung quanh nó Điều này thôi thúc ta đi tìm một phương pháp khác đểlàm sao cho những góc cạnh của ảnh được sắc bén hơn, tinh xảo hơn, chứ không lờ mờ nhưphương pháp trơn hóa Đó chính là phương pháp làm sắc góc

Ngày đăng: 05/04/2015, 17:38

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Nhãn cầu - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 1.1 Nhãn cầu (Trang 6)
Hình 1.2: Góc nhìn - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 1.2 Góc nhìn (Trang 7)
Hình 1.4: Zoom thông thường - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 1.4 Zoom thông thường (Trang 8)
Hỡnh 1.3: Cỏc pixel trờn ảnh số kớch thước 7ì7 - phân tích xử lý ảnh xử lý bể hình khi phóng to
nh 1.3: Cỏc pixel trờn ảnh số kớch thước 7ì7 (Trang 8)
Hình 1.5: a. Ảnh ban đầu, b. Ảnh sau khi phóng to 200% - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 1.5 a. Ảnh ban đầu, b. Ảnh sau khi phóng to 200% (Trang 10)
Hình 1.6: Những phương án giải quyết đơn giản - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 1.6 Những phương án giải quyết đơn giản (Trang 10)
Hình 1.8: Lưới các pixel trên ảnh ban đầu - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 1.8 Lưới các pixel trên ảnh ban đầu (Trang 12)
Hình 2.1: Trường độ xám trên ảnh một chiều - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 2.1 Trường độ xám trên ảnh một chiều (Trang 13)
Hình 2.2: Hai thí dụ cho hàm h - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 2.2 Hai thí dụ cho hàm h (Trang 14)
Hình 2.4: Xấp xỉ ảnh f một cách toàn cục - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 2.4 Xấp xỉ ảnh f một cách toàn cục (Trang 16)
Hình 2.6: Cách làm trơn hàm của nhân h - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 2.6 Cách làm trơn hàm của nhân h (Trang 19)
Hình 2.7: Nhân láng giềng gần nhất - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 2.7 Nhân láng giềng gần nhất (Trang 25)
Hình 2.8: Nhân tuyến tính - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 2.8 Nhân tuyến tính (Trang 25)
Hình 2.9: Đồ thị của B 2 - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 2.9 Đồ thị của B 2 (Trang 31)
Hình 2.10: Nội suy lần lượt theo 2 trục - phân tích xử lý ảnh xử lý bể hình khi phóng to
Hình 2.10 Nội suy lần lượt theo 2 trục (Trang 34)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w