3. Cấu trúc luận văn
2.1.3. Các phép toán hình thái học trên ảnh xám
2.1.3.1. Phép giãn
Phép toán giãn ảnh của ảnh xám I với cấu trúc phần tử không phẳng H tại vị trí (x, y) của ảnh I được xác định như sau [11][16][19]:
𝑫(𝒊) = (𝑰 ⊕ 𝑯)(𝒙, 𝒚) = 𝐦𝐚𝐱(𝑰(𝒙 + 𝒊, 𝒚 + 𝒊) + 𝑯(𝒊, 𝒋) ∣ (𝒊, 𝒋) ∈ 𝑫𝑯) (2.7) Trong đó
• I: Ma trận điểm ảnh của ảnh xám. • H: Là phần tử cấu trúc.
Hình 2.15. Phép toán dãn ảnh trên ảnh xám với phần tử cấu trúc không phẳng.
Trong đó, DH là không gian ảnh của phần tử cấu trúc không phẳng H. Quá trình trên có thể được tính toán theo các bước sau:
B1: Vị trí gốc của phần tử cấu trúc đặt trên điểm ảnh đầu tiên của ảnh được dãn ta gọi vị trí đó là m.
B2: tính tổng của mỗi cặp điểm tương ứng của phần tử cấu trúc và ảnh B3: Tìm giá trị lớn nhất của tất cả những giá trị tổng ở trên và đặt giá trị lớn nhất vào vị trí m của ảnh kết quả.
B4: Lặp lại quá trình từ b1 tới b3 cho các điểm còn lại của ảnh
2.1.3.2. Phép co
Phép toán co ảnh của ảnh xám I với cấu trúc phần tử không phẳng H tại vị trí (x, y) của ảnh I được xác định như sau [11][16][19]:
𝐄(𝐢) = (𝐈 ⊖ 𝐇)(𝐱, 𝐲) = 𝐦𝐢𝐧(𝐈(𝐱 + 𝐢, 𝐲 + 𝐣) − 𝐇(𝐢, 𝐣)|(𝐢, 𝐣) ∈ 𝑫𝑯) (2.8) Trong đó:
• I: Ma trận điểm ảnh của ảnh xám. • H: Là phần tử cấu trúc.
Hình 2.16. Phép toán co ảnh trên ảnh xám với phần tử cấu trúc không phẳng.
Trong đó, DH là không gian ảnh của phần tử cấu trúc không phẳng H. Quá trình trên có thể được tính toán theo các bước sau:
B1: Vị trí gốc của phần tử cấu trúc đặt trên điểm ảnh đầu tiên của ảnh được dãn ta gọi vị trí đó là m.
B2: tính hiệu của mỗi cặp điểm tương ứng của phần tử cấu trúc và ảnh
B3: Tìm giá trị nhỏ nhất của tất cả những giá trị hiệu ở trên và đặt giá trị nhỏ nhất vào vị trí m của ảnh kết quả.
B4: Lặp lại quá trình từ b1 tới b3 cho các điểm còn lại của ảnh
2.1.3.3. Phép toán đóng mở ảnh
Gọi A là hình ảnh gốc và B là phần tử cấu trúc, (O) là ký hiệu của phép mở ảnh giữa tập hợp A và phần tử cấu trúc B.
+ Phép mở ảnh được xác định bởi công thức:
A ∘ B = (A ⊖ B) ⊕ B (2.9) + Phép đóng ảnh của tập hợp A bởi phần tử cấu trúc B, kí hiệu là A●B, xác định bởi:
A ∙ B = (A ⊕ B) ⊖ B (2.10)
2.2. Các tính chất nội suy của phép toán hình thái học
Bài toán nội suy ảnh có thể được phát biểu như sau: cho trước hai ảnh I0 (nguồn) và I1 (đích), hãy tìm dãy ảnh Zα; α Î [0, 1] sao cho Z0 = I0 và Z1 = I1. Bài toán nội suy hình ảnh yêu cầu câu trả lời phải “hấp dẫn, trực quan” về mặt hình ảnh mà rất khó để mô tả một cách chặt chẽ.[7]
Nói một cách dễ hiểu, các toán tử MM cơ bản - giãn nở, xói mòn, mở và đóng, được xác định trên hình ảnh nhị phân và có thể được mở rộng sang hình ảnh thang độ xám. Điều này đạt được trên mức trừu tượng bằng cách xác định các toán tử trên cấu trúc trừu tượng được gọi là Lưới hoàn chỉnh. Tuy nhiên, ở đây chỉ xem xét các toán tử cơ bản trên nhị phân và hình ảnh thang độ xám.
Ta có một số tính chất nội suy của phép toán hình thái học như sau [14]:
-Hình ảnh nhị phân
-Thang độ sáng hình ảnh
-Khoảng cách Hausdorff
-Vùng ảnh hưởng
2.3. Ứng dụng của phép toán hình thái
Ứng dụng chủ yếu của hình thái học đối với ảnh nhị phân là phân tích các thành phần của ảnh, chính vì nó rất có hiệu quả trong biểu diễn và mô tả hình dạng đối tượng cho nên phần này sẽ tập trung đưa ra các thuật toán về hình thái để trích đường biên, các thành phần liên thông, đường bao lồi, hay tìm xương làm mảnh.
2.3.1. Ứng dụng làm trơn ảnh
Thao tác làm trơn trên ảnh xám có thể được coi như là một phép mở mà tiếp theo sau đó là một phép đóng ảnh. Hiệu quả của thao tác này là nó có thể xóa đi những điểm quá sáng hoặc tối trên ảnh gốc. Do vậy, có những điểm ảnh thực sự là nhiễu sẽ được xử lý, nhưng cũng không tránh khỏi những giá trị ảnh thực sự cũng bị ảnh hưởng và nhìn chung, giá phải trả cho việc giảm nhiễu là ảnh bị mờ đi so với ban đầu. Hình 2.17a miêu tả ảnh của một chiếc bảo vệ đĩa mà đã được liệt vào dạng nhiễu Gauss (theo phân loại thông dụng) với độ lệch chuẩn 30. Hình 2.17c trình bày kết quả của phép làm nhiễu hình thái được áp dụng cho cả ảnh này; ta thấy có khi ảnh được làm trơn ở hình 2.17c lại không rõ bằng ảnh ban đầu hình 2.17a. Tuy nhiên, so hai ảnh 2.17b và 2.17d ta thấy sự khác biệt giữa chúng là: Ảnh lúc đầu được phân ngưỡng, sau đó ta mới làm trơn thì kết quả thật là tuyệt vời, ảnh thu được ảnh 2.17d đã hết nhiễu. Điều đó cho thấy rằng, việc phân ngưỡng là có tác dụng tốt đối với phép làm trơn. Phần tử cấu trúc được sử dụng ở đây chỉ đơn giản, nhưng việc lựa chọn phần tử cấu trúc nào còn phải tùy thuộc vào kiểu nhiễu nào để mà sử dụng cho thích hợp.
Hình 2.17. Làm trơn ảnh đa cấp xám
(a). Ảnh miếng bảo vệ đĩa có kèm theo nhiễu Gaus có độ lệch chuẩn 30 (b). Sau khi phân ngưỡng từ (a), ảnh như được rắc thêm “muối và hạt tiêu” (c). Ảnh (a) sau khi được làm trơn.
(d). Ảnh được làm trơn và khi phân ngưỡng, nó đã hết nhiễu.
2.3.2. Trích biên (Boundary Extraction)
Với ảnh đầu vào là ảnh xám, thì ta có thể xử lý phân đoạn ảnh bằng các ngưỡng của ảnh. Trong hình ảnh mỗi điểm ảnh có giá trị xám riêng, giá trị này được giới hạn trong khoảng 0 tới 255. Vì vậy ta có thể thông qua lược đồ màu để lựa chọn các mức xám thích hợp. Khi chuyển sang ảnh nhị phân các điểm ảnh có giá trị lớn hơn ngưỡng này đều được gán là 255 hoặc nếu không thì sẽ được gán là 0. Ngược lại những điểm ảnh nào có giá trị nằm trong ngưỡng đều được đặt là 1, những điểm ảnh này là điểm ảnh cấu thành đối tượng trong ảnh nhị phân.
Trong ảnh nhị phân, đối tượng được cấu thành bởi các điểm ảnh liên thông có giá trị là 1. Xét một ví dụ ở hình 2.18 có 9 điểm ảnh dọc, 9 điểm ảnh ngang. Những điểm ảnh tạo lên biên là những điểm ảnh thuộc đối tượng đó nhưng trong 8 điểm lân cận phải có ít nhất một điểm ảnh có giá trị là 0.
Biên của tập hợp A phụ thuộc vào kích thước của phần tử cấu trúc. Độ dày của đường viền bao quanh đối tượng phụ thuộc vào kích thước của phần tử cấu trúc. Cho 1 thí dụ, nếu một phần tử cấu trúc có kích thước 3x3 sinh ra độ dày đường viền là 1 thì với phần tử cấu trúc có kích thước 5x5 sẽ sinh ra đường viền của đối tượng có độ dày
Để trích lọc biên của ảnh nhị phân A, chúng ta thực hiện hai bước sau: B1: Thực hiện co ảnh với phần tử cấu trúc B
B2: Thực hiện khử nền của ảnh A bằng cách lấy ảnh gốc A trừ cho ảnh đã thực hiện ở bước 1.
Khi đó, biên của tập hợp A, ký hiệu là 𝜕𝐴, được xác định bởi công thức:
𝜕𝐴 = 𝐴 − (𝐴 ⊖ 𝐵) (2.11)
Hình 2.18. Quá trình tìm biên của đối tượng trên ảnh nhị phân.
Hình 2.19. Trích lọc biên của đối tượng (a) Ảnh gốc.
(b) Hình dáng của phần tử cấu trúc.
(c) Ảnh sau khi thực hiện phép co ảnh với phần tử cấu trúc. (d) Ảnh kết quả theo công thức trích lọc biên.
2.3.3. Tô đầy vùng (Region Filling)
Ảnh nhị phân thường là kết quả của các phép thực hiện phân ngưỡng hoặc phân đoạn ảnh xám hoặc ảnh màu đầu vào. Những phép biến đổi này rất hiểm khi “hoàn hảo” do những nhân tố bên ngoài mà trong quá trình lấy mẫu ảnh chúng ta không kiểm soát được như cường độ sáng hay độ chói xuất hiện trong ảnh và nó có thể để lại những “lỗ hổng” sau khi thực hiện lấy ngưỡng hoặc phân đoạn ảnh. Sử dụng các phép xử lý hình thái học để lấp đầy các lỗ hổng thực sự rất hiệu quả.
Làm đầy vùng của một đối tượng từ biên là bổ sung giá trị 1 vào toàn bộ vùng ở phía bên trong biên của đối tượng. Cho một ảnh nhị phân A, các điểm ảnh ở biên của đối tượng trong hình ảnh A có giá trị là 1 và các điểm ảnh khác có giá trị là 0. Ta bắt đầu quá trình làm đầy bằng cách gán giá trị 1 vào điểm ảnh p ở bên trong biên của đối tượng, sau đó lặp đi lặp lại phép giãn nhị phân giữa điểm ảnh với phần tử cấu trúc B
dưới giới hạn đặt ra bởi phép bù của tập hợp A (Ac). Bởi vì nếu hạn chế không được đặt thì chương trình sẽ lặp đi lặp lại phép gán này, dẫn tới xảy ra hiện tượng tràn qua các vùng khác trên ảnh, thậm chí toàn bộ ảnh.
Với X0=p và B là phần tử cấu trúc, phép làm đầy vùng trong ảnh sẽ được xác định bởi công thức:
𝑋𝑘 = (𝑋𝑘−1⊕ 𝐵) ∩ 𝐴𝑐 (2.12) Với k=1, 2, 3, …, k-1
Thuật toán sẽ dừng khi Xk=Xk-1.
Thí dụ, ở hình 2.20, A là ảnh ban đầu chỉ chứa biên của đối tượng (giá trị là 1), B
là phần tử cấu trúc có kích thước 3x3 và hình dạng chữ thập. Khi đó thuật toán sẽ thực hiện lần lượt theo trình tự như sau:
Bước 1: Thuật toán sẽ gán giá trị 1 cho một điểm ảnh p bên trong vùng biên. Bước 2: Áp dụng phép giãn nhị phân từ điểm ảnh p với phần tử cấu trúc B, đồng thời lấy giao của kết quả phép giãn với phần bù của tập hợp A. Như vậy, sau khi lấy giao của hai tập hợp thì phần nào có giá trị là 1 tương xứng với giá trị 1 của phần bù tập hợp A thì được giữ nguyên, phần nào có giá trị 1 tương xứng với giá trị 0 của phần bù tập hợp A thì sẽ được gán là 0. Quá trình này sẽ được lặp đi lặp lại cho đến khi tất cả các điểm ảnh tương ứng bên trong biên của đối tượng được gán là 1.
Bước 3: Cuối cùng lấy hợp giữa X7 và biên A ta sẽ được đối tượng đã được làm đầy từ biên vùng trong ảnh (Hình 2.20).
Hình 2.20. Quá trình lấp đầy vùng đối tượng trong ảnh
2.3.4. Trích chọn các thành phần liên thông (Extraction of Connected Components)
Trong thực tế, bài toán trích chọn thành phần liên thông trong ảnh nhị phân đóng vai trò quan trọng trong các ứng dụng phân tích ảnh tự động. Tương tự như phép làm đầy vùng, quá trình thực hiện thuật toán cũng được lặp đi lặp lại với phép trích chọn các thành phần liên thông.
Cho một ảnh nhị phân trong đó đối tượng là tập hợp A bao gồm một số thành phần liên thông. Những điểm ảnh nào thuộc đối tượng thì được đánh dấu là 1 và điểm ảnh nào nằm ngoài đối tượng thì được đánh dấu là 0. Ta có thể tách các thành phần liên thông bằng cách gán một điểm ảnh ở trong đối tượng rồi từ điểm ảnh đó, lặp đi lặp lại phép giãn nhị phân với phần tử cấu trúc dưới hạn chế đặt ra bởi tập hợp A.
Cho bước khởi tạo X0=p và B là phần tử cấu trúc 3×3 với các giá trị là 1. Quá trình lặp tại bước thứ k như sau:
𝑋𝑘 = (𝑋𝑘−1⊕ 𝐵) ∩ 𝐴, 𝑘 = 1,2,3 … (2.13)
Hình 2.21. Quá trình trích chọn các thành phần liên thông trong ảnh bằng phép toán hình thái
Quá trình lặp sẽ dừng tại bước k nếu Xk = Xk-1. Do đó, Xk-1 được chọn là thành phần liên thông.
2.3.5. Làm mảnh ảnh (Thinning)
một điểm ảnh, tạo ra một trục liên thông nhỏ hơn mà cách đều từ các đối tượng cạnh. Làm mảnh ảnh được thực hiện sớm, các bước cơ bản của xử lý ảnh trong việc biểu diễn hình dạng cấu trúc của mẫu như một đồ thị.
Thuật toán làm mảnh thường bao gồm nhiều lần lặp, mỗi lần lặp tất cả các điểm ảnh của đối tượng sẽ được kiểm tra, các phần tử cấu trúc được thiết kế để tìm các điểm biên mà khi loại bỏ điểm ảnh trên đối tượng thì sẽ không làm ảnh hưởng tới các liên thông. Nếu điểm ảnh nào mà thỏa mãn điều kiện của phần tử cấu trúc thì sẽ bị loại bỏ. Quá trình này cứ lặp đi lặp lại cho tới khi không còn điểm biên nào được xóa nữa.
Làm mảnh tập hợp A bởi phần tử cấu trúc B, ký kiệu 𝐴 ⊗ 𝐵, xác định bởi công thức sau:
𝐴 ⊗ 𝐵 = 𝐴 − (𝐴 𝑠 ∗ 𝐵) = 𝐴 ∩ (𝐴 𝑠 ∗ 𝐵)𝑐 (2.14) Để có thể làm mảnh một đối tượng A một cách hiệu quả hơn, ta dựa vào dãy các phần tử cấu trúc.
{𝐵} = {𝐵1, 𝐵2, … , 𝐵𝑛} (2.15) Trong đó Binhận được từ Bi-1, qua phép quay quanh tâm điểm của nó. Với khái niệm này ta định nghĩa phép làm mảnh bởi một dãy các phần tử cấu trúc theo công thức. 𝐴 ⊗ {𝐵} = ((… ((𝐴 ⊗ 𝐵1) ⊗ 𝐵2) … ) ⊗ 𝐵𝑛) (2.16) Nói cách khác, quá trình làm mảnh A bởi Bi, kết quả lại tiếp tục được làm mảnh bởi B2 cho đến Bn. Lúc này, đối tượng trong ảnh hầu như không thay đổi nữa.
Xét thí dụ quá trình làm mảnh (Hình 2.22). Quá trình làm mảnh đối tượng sẽ được lặp đi lặp lại cho đến khi đối tượng không có sự thay đổi nào thì dừng lại.
Theo công thức tổng quát ta có:
Như vậy, trong thí dụ này quá trình làm mảnh được lặp đi lặp lại 2 lượt. Trong mỗi lần lặp đối tượng phải trải qua quá trình làm mảnh với 8 phần tử cấu trúc: B1, B2, B3, …, B8.
Hình 2.22. Quá trình làm mảnh đối tượng trong hình ảnh
Hình 2.23. Ví dụ về làm mảnh đối tượng (a) ảnh gốc, (b) ảnh kết quả làm mỏng
(c) ảnh gốc, (d) ảnh kết quả làm mỏng
2.3.6. Làm dày đối tượng trong ảnh (Thickening)
Làm dày đối tượng tương tự như phép giãn ảnh, nhưng nó không sát nhập/gộp các đối tượng không kết nối với nhau. Nó được sử dụng để làm to các đối tượng bị lõm và có thể biểu diễn qua công thức sau:
𝐴 ⊙ 𝐵 = 𝐴 ∪ (𝐴 ⊗ 𝐵) (2.18) Với B là phần tử cấu trúc thích hợp. Tương tự như quá trình làm mảnh, quá trình làm dày đối tượng có thể được biểu diễn như sau:
𝐴 ⊙ {𝐵} = (… ((𝐴 ⊙ 𝐵1) ⊙ 𝐵2) … ) ⊙ 𝐵𝑛 (2.19)
Hình 2.24. Kết quả làm dày đối tượng (a) ảnh gốc, (b) ảnh kết quả làm dày.
(c) ảnh gốc, (d) ảnh kết quả làm dày.
2.3.7. Tìm khung xương (Skeletonization)
Xương ảnh được sử dụng nhiều trong ứng dụng lĩnh vực máy tính, phân tích hình ảnh và xử lý hình ảnh số bao gồm nhận dạng ký tự quang học, nhận dạng vân tay, kiểm tra thị giác, nhận dạng mẫu, …
Tìm xương của ảnh tương tự như làm mảnh ảnh, nhưng nó tìm chi tiết hơn cấu trúc của đối tượng. Tìm xương nhấn mạnh các thuộc tính rõ của các ảnh.
Cho A là một tập ảnh nhị phân chứa các đối tượng điểm ảnh 1 và các điểm ảnh nền là 0. B là phần tử cấu trúc 3×3 với các giá trị 1. Khi đó, nếu ký hiệu S(A) là khung xương của tập hợp A thì thuật toán tìm khung xương được xác định qua công thức:
𝑆(𝐴) = ⋃ 𝑆𝑘(𝐴) 𝐾 𝑘=0 (2.20) Trong đó: 𝑆𝑘(𝐴) = ⋃𝐾 {(𝐴 ⊖ 𝑘𝐵) − [(𝐴 ⊖ 𝑘𝐵) ∘ 𝐵]} 𝑘=0 (2. 𝑥𝑥), (2.21) (𝐴 ⊖ 𝑘𝐵) là thực hiện k phép trừ liên tiếp của (𝐴 ⊖ 𝐵)
K là bước lặp cuối cùng trước khi A suy biến thành một tập rỗng.
Hình 2.25. Quá trình thực hiện thuật toán tìm xương
Hình sau là ví dụ về việc thực hiện tìm xương của các đối tượng trong ảnh.
Hình 2.26. Ví dụ tìm xương của các đối tượng (a) là ảnh gốc,
(b) là ảnh kết quả sử dụng phép biến đổi tìm xương của đối tượng trong ảnh gốc.
2.3.8. Phép toán hình thái Gradient (Morphology Gradient Operator)
Phép toán này là sự kết hợp của: Phép mở ảnh, phép đóng ảnh bởi cùng phần tử cấu trúc và phép trừ giữa 2 ảnh đó.
Trong đó S là phần tử cấu trúc. Thay vì lấy ảnh ban đầu trừ ảnh co, ở đây ta lấy