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

5 giao trinh xulyanh chuong 3

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 (1.25 MB, 24 trang )

Chương 3

PHƯƠNG PHÁP PHÂN ĐOẠN ẢNH
Chương này trình bày một số phương pháp phân đoạn ảnh cơ bản như
phân ngưỡng thủ công, phân ngưỡng tự động, phân ngưỡng Otsu. Bên
cạnh đó, một số phương pháp xử lý nâng cao cũng được giới thiệu như
kỹ thuật phân đoạn ảnh bằng thuật toán phân cụm dữ liệu k-means, kỹ
thuật trung bình dịch chuyển Meanshift, kỹ thuật dâng nước vạch ngăn
cách Watershed, phân đoạn phân cấp.

3.1. TỔNG QUAN VỀ PHÂN ĐOẠN ẢNH
Trong lĩnh vực xử lý ảnh, phân đoạn ảnh (segmentation) được hiểu là
quá trình nhóm điểm ảnh thành các vùng sao cho các điểm ảnh trong
cùng một vùng có chung đặc điểm, tính chất nào đó, ví dụ như sự tương
tự về màu sắc, cường độ hoặc kết cấu. Nói cách khác, phân đoạn ảnh là
một quá trình chia một ảnh số thành nhiều vùng khác nhau, mỗi vùng
gồm tập hợp các điểm ảnh (có thể gọi là superpixels hoặc region) có cùng
tính chất. Trong một số tài liệu, phân đoạn hình ảnh còn được gọi là phân
vùng ảnh. Mục tiêu của việc phân đoạn là để đơn giản hóa hoặc thay đổi
cách biểu diễn một ảnh theo tiêu chuẩn nào đó nhằm làm cho nó ý nghĩa
hơn và dễ dàng trong phân tích, trích xuất đặc trưng[12]. Kết quả của quá
trình phân đoạn ảnh là tập hợp các vùng (region) hay còn gọi là các phân
đoạn (segments) có thể bao gồm toàn bộ ảnh hoặc tập hợp các vùng đối
tượng được trích xuất ra từ ảnh.
Phân đoạn ảnh có ý nghĩa quan trọng trong việc phát hiện các đặc tính
và cấu trúc đối tượng trong ảnh vì mỗi vùng thường miêu tả cấu trúc tương
ứng với đối tượng trong vùng đó. Ví dụ số lượng các vùng trong ảnh thể
hiện rằng trong ảnh đó có chứa nhiều đối tượng khác nhau và ngược lại
mỗi đối tượng chứa các vùng trong nó tương ứng với các phần khác nhau
của cùng đối tượng. Phân đoạn ảnh có nhiều ứng dụng quan trọng trong
nhiều lĩnh vực khác nhau như phân tích hình ảnh y học (medical imaging),


phát hiện và nhận dạng đối tượng, phát hiện hành động trong các hệ thống
camera giám sát thông minh, hệ thống điều khiển và giao thông thông
minh, xe không người lái, xử lý hình ảnh vệ tinh…
71


Phân đoạn ảnh được xem là quá trình tiền xử lý, có ý nghĩa quan trọng
trong hệ thống xử lý ảnh. Phân đoạn tốt sẽ giúp cho quá trình xử lý ở các
bước tiếp theo đạt hiệu quả cao hơn, nâng cao độ chính xác và cũng như
tiết kiệm chi phí tính toán.

H

3.1. Phân đoạn bằng phương pháp đồ thị và phương pháp Mean shift[13]

Các vùng phân tách được dùng trong nhiều ngữ cảnh khác nhau và
đặc biệt có thể được sử dụng làm đại diện thay thế cho đối tượng và biểu
diễn dưới dạng nhiều hình thức khác nhau[10]. Việc lựa chọn mô tả vùng
dữ liệu có nhiều cách thức khác nhau tùy thuộc vào tính chất, mục tiêu và
đảm bảo phù hợp cho từng ứng dụng cụ thể. Nhiều ứng dụng không chỉ
đòi hỏi mô tả các vùng riêng lẻ mà còn cần thể hiện được mối quan hệ
với nhau giữa các vùng trong ảnh.

H

(a)

(c)

(e)


(b)

(d)

(f)

3.2. Phân đoạn ảnh dựa vào ngưỡng đơn và ngưỡng kép[10] để trích xuất
các vùng đối tượng khác nhau

Hình minh họa trên thể hiện phân đoạn ảnh với các điều kiện ngưỡng
đơn và ngưỡng đôi dùng các giá trị ngưỡng khác nhau. Một hình ảnh
72


được phân vùng bằng cách sử dụng loại ngưỡng đơn và ngưỡng đôi để
cho ra các vùng có mức xám khác nhau. Hình (a) thể hiện ảnh gốc và (b)
lược đồ màu tương ứng với ảnh, hình (c) thể hiện kết quả phân đoạn với
ngưỡng đơn T1=70, hình (d) thể hiện kết quả phát hiện vùng lõi sử dụng
ngưỡng thứ hai T2=155, (e) phân đoạn thông thường với ngưỡng=T2,
(f) phân ngưỡng kép T1 và T2 để trích chọn vùng năm trong khoảng
T1<=Ngưỡng<=T2.

3.2. PHÂN ĐOẠN BẰNG NGƯỠNG
Ngưỡng (threshold) là một khái niệm phổ biến trong lĩnh vực phân
đoạn đối tượng của kỹ thuật xử lý ảnh. Ngưỡng được dùng để chỉ một giá
trị nào đó mà ta dùng để phân tách một tập hợp các điểm ảnh thành các
vùng phân biệt. Ví dụ sử dụng một ngưỡng th để phân đoạn ảnh thành
các vùng có cường độ sáng lớn hơn th và các vùng còn lại có giá trị
cường độ sáng nhỏ hơn hoặc bằng th. Giá trị ngưỡng thường được xác

định dựa vào giá trị đặc biệt như giá trị trung bình, giá trị trung vị hoặc
dựa vào khảo sát thống kê theo kinh nghiệm. Có nhiều cách phân loại
khác nhau, tuy nhiên nếu căn cứ vào số lượng ngưỡng dùng cho phân
đoạn thì có phương pháp phân đoạn sử dụng ngưỡng đơn, phân đoạn
ngưỡng kép hoặc phân đoạn đa ngưỡng. Nếu căn cứu vào tính chất biến
thiên của giá trị ngưỡng thì có thể phân thành phương pháp dùng ngưỡng
cố định (constant threshold) và ngưỡng động hay ngưỡng thích ứng
(adaptive threshold). Trong đó, ngưỡng động được hiểu theo nghĩa giá trị
của ngưỡng sẽ thay đổi tùy thuộc vào sự biến thiên của tập dữ liệu ảnh
theo không gian và thời gian. Thông thường giá trị ngưỡng được xác định
bằng cách áp dụng phương pháp phân tích thống kê.

3.2.1. P â

gưỡng thủ công

Phân ngưỡng thủ công là phương pháp đơn giản với chi phí tính
toán thấp, trong một số trường hợp đặc biệt với giá trị mức xám biết
trước, phương pháp này tỏ ra hiệu quả và có thể áp dụng trực tiếp được.
Quá trình phân đoạn dựa vào ngưỡng thủ công được thực hiện theo công
thức và kết quả thu được là ảnh nhị phân như sau:



F (i, j )  1 for I (i, j )  Th
0 otherwise

(3.1)
73



Với F là kết quả phân đoạn theo ngưỡng, I là ảnh đầu vào, Th là
ngưỡng đơn được dùng để phân đoạn.
Ví dụ đơn giản sử dụng ngưỡng cố định trong phân đoạn để trích xuất
ra các vùng đồng xu như sau:
I = imread('coins.png');
Th = 80;
BW = zeros(size(I),'logical');
BW(I>Th)=1;
subplot(1,2,1); imshow(I);
title('Original image');
subplot(1,2,2); imshow(BW);
title('Threshold segmentation');

H

3.3. Kết quả phân ngưỡng với giá trị ngưỡng Th=80.

3.2.2. Phân đoạn gưỡng tự động
Trong trường hợp tổng quát, ảnh biến đổi phức tạp yêu cầu phân đoạn
ảnh cần phải được thiết kế hiệu quả, linh động đáp ứng được với nhiều
tình huống khác nhau và kết quả bền vững. Vì vậy, việc lựa chọn ngưỡng
phân đoạn cần được thiết lập một cách linh động bởi hệ thống tự động
hoặc theo thống kê kinh nghiệm nào đó. Thông thường, quá trình phân
đoạn ảnh cần xét đến các yếu tố liên quan về thông tin đối tượng trong
ảnh, môi trường và nền nhằm xác định các vùng liên quan đến đối tượng
khác nhau hơn là chỉ sử dụng giá trị ngưỡng cố định. Các thông tin liên
quan để phân đoạn thường bao gồm các yếu tố sau[10]:
- Đặc điểm về cường độ sáng của các đối tượng.
- Kích thước của đối tượng.

- Tỷ lệ chiếm chỗ bởi các đối tượng trong ảnh.
- Số lượng đối tượng khác nhau xuất hiện trong cùng ảnh.
74


Như vậy, quá trình chọn ngưỡng tự động được hiểu là quá trình xác
định giá trị ngưỡng để phân đoạn ảnh được thực hiện hoàn toàn bằng
chương trình mà không nhờ sự can thiệp của con người. Việc xác định
ngưỡng tự động được thực hiện trên cơ sở phân tích sự phân bố cường độ
giá trị xám của hình ảnh. Lược đồ (histogram) ảnh thường được sử dụng
để phân tích phân bố giá trị xám và sử dụng kiến thức kinh nghiệm để lựa
chọn ngưỡng một cách thích hợp, thích ứng với từng trường hợp, điều
kiện sáng cụ thể. Khi thông tin được xác định càng mang tính tổng quát
thì miền áp dụng phân đoạn càng tăng lên.
Giả sử trong ảnh có n đối tượng là O1, O2,…, On bao gồm hình nền và
giá trị mức xám phân bố theo các giá trị , ,… , với hàm phân bố xác
suất tương ứng là P1(z),…, Pn(z). Trong nhiều ứng dụng, hàm phân bố xác
suất P1,…Pn của đối tượng xuất hiện trong hình có thể được biết trước thì
thông tin này có thể được sử dụng nhằm xác định ngưỡng phân đoạn. Khi
tính chất hình học, chiếu sáng của cảnh vật điều khiển theo hàm phân bố xác
suất về giá trị cường độ sáng Pi(z) thì ta không thể xác định được các giá trị
ngưỡng. Hầu hết phương pháp tự động thường lựa chọn ngưỡng sử dụng
kích thước đối tượng, xác suất xuất hiện và ước lượng phân phối cường độ
sáng bằng cách tính giá trị lược đồ cường độ sáng của ảnh.
h(i)

Đối tượng 2

Đối tượng 1


Giá trị
histogram

Ngưỡng k

Giá trị mức xám

H

i

3.4. Xác định ngưỡng phân đoạn bằng lược đồ ảnh

3.2.2.1. Phương pháp p-Tile
Phương pháp p-tile sử dụng các thông tin về vùng hoặc kích thước của
đối tượng để xác định ngưỡng phân đoạn ảnh. Giả sử đối tượng chiếm
diện tích %p của một vùng ảnh, sử dụng thông tin này để phân đoạn lược
đồ giá trị xám của hình đầu vào ta có thể chọn một hoặc nhiều ngưỡng
với %p điểm ảnh của đối tượng. Trong thực tế, phương pháp này được sử
dụng giới hạn trong một số ứng dụng đặc biệt khi có thể ước lượng được
diện tích đối tượng trong trường hợp tổng quát.
75


H

3.5. Phân ngưỡng p-tile sử dụng 2 ngưỡng

3.2.2.2. Phương pháp mode
Nếu các đối tượng trong hình có cùng (hoặc tương đồng) mức xám

còn vùng nền có giá trị mức xám khác biệt và hàm nhiễu của giá trị mức
xám bị ảnh hưởng theo hàm phân phối xác suất Gaussian thì có thể giả sử
giá trị mức xám được phân phối theo các hàm phân phối xác suất chuẩn
là (
và (
. Lược đồ ảnh được phân phối có hai đỉnh cực trị,
như ở ví dụ minh họa trên xác định ngưỡng phân đoạn bằng lược đồ
cường độ sáng.
Trong trường hợp lý tưởng, cường độ sáng là đồng nhất,
,
phân phối sẽ có hai đỉnh trong một lược đồ sáng và ngưỡng được thay thế
bất kỳ giữa hai đỉnh. Tuy nhiên trong thực tế, hai đỉnh này không tách biệt
một cách rõ ràng khi xác định đỉnh và rãnh của lược đồ xám thì ngưỡng có
thể được xác định bằng giá trị điểm ảnh tương ứng với vùng đó. Trong
phần lớn các ứng dụng thực tế, khi lược đồ ảnh phân phối thưa ở vùng
trũng thì việc phân đoạn không nhạy cảm với giá trị ngưỡng phân đoạn.
Bài toán xác định cực trị tại đỉnh lồi và lõm để phát hiện ngưỡng là bài
toán có nghiệm không tầm thường và có nhiều phương pháp khác nhau
được nghiên cứu nhằm giải quyết tìm nghiệm cho bài toán này. Trong bài
toán tìm ngưỡng tự động liên quan đến việc xác định các điểm lồi và
điểm lõm cực trị của một điểm trên lược đồ ảnh.
76


0

(a)

H


255

0

255X
(b) Miền không gian ban đầu

3.6. Cường độ xám của hình nền và các đối tượng:

(a) trường hợp lý tưởng ngưỡng T phân biệt rõ ràng
,
(b) trường hợp tổng quát mức xám chồng nhau, có thể xác định theo phân phối
chuẩn Gaussian (
và (
.

Thuật toán mô tả tìm kiếm các đỉnh cực trị phục vụ xác định ngưỡng
như sau:
Thuật toán: Xác định đỉnh cho lựa chọn ngưỡng xấp xỉ
1. Tìm hai cực trị lớn nhất trong lược đồ ảnh với một khoảng cách tối
thiểu nào đó, giả sử tại các mức xám tương ứng là gi và gj.
2. Tìm điểm thấp nhất gk trong lược đồ ảnh H sao cho nó nằm giữa gi
và gj.
3. Tìm đỉnh được xác định bởi min (H(gi), H(gj))/ H(gk)
4. Kết hợp bộ giá trị (gi, gj, gk) với đỉnh cao nhất để xác định ngưỡng
phân đoạn ảnh. Giá trị gk là ngưỡng tốt để phân tách đối tượng
tương ứng với gi và gj.
Cách tiếp cận này có thể tạo ra các hình chứa đối tượng với giá trị cường
độ xám trung bình khác nhau. Giả sử có n đối tượng với hàm mật độ phân
bố của giá trị cường độ xám lần lượt xác định theo (

,
(
và ảnh nền với cường độ xám phân bố theo (
.
Nếu các giá trị trung bình quá khác biệt, giá trị phương sai nhỏ và không có
đối tượng nào có kích thước quá nhỏ thì lược đồ ảnh sẽ chứa n+1 đỉnh. Vị trí
các rảnh T1, T2,…, Tn có thể được xác định và các điểm ảnh với mức xám
trong mỗi khoảng [Ti, Ti+1] có thể được gán cho đối tượng tương ứng.

H

3.7. Lược đồ cường độ xám (histogram) dùng để xác định ngưỡng cho
các đối tượng với các giá trị mức xám khác nhau

77


3.2.2.3. Phương pháp lặp chọn ngưỡng
Phương pháp lặp lựa chọn ngưỡng bắt đầu với một ngưỡng xấp xỉ nào
đó và thực hiện liên tục quá trình lặp để tinh chỉnh ngưỡng. Vấn đề này
được kỳ vọng có thể lựa chọn ngưỡng mới từ ngưỡng đã được chọn trước
đó sao cho việc phân đoạn được tốt hơn. Quá trình điều chỉnh ngưỡng
đóng vai trò rất quan trọng quyết định đến thành công của cách tiếp cận
này và được mô tả như sau:
Thuật toán. Phương pháp lặp chọn ngưỡng
1. Lựa chọn một ước lượng ngưỡng khởi tạo T. Ta có thể khởi tạo
giá trị này bằng giá trị trung bình cường độ xám của ảnh.
2. Chia hình ảnh thành hai nhóm R1 và R2 bằng cách sử dụng
ngưỡng T.
3. Tính các giá trị trung bình cường độ xám của 2 vùng R1 và R2

tương ứng là và
4. Chọn giá trị ngưỡng mới là T=
5. Lặp lại bước 2 đến 4 cho đến khi giá trị trung bình và
không
thay đổi.

3.2.2.4. Ngưỡng thích nghi cục bộ
Nếu ánh sáng chiếu lên vật thể (kể cả nền) không đồng nhất thì các
phương pháp chọn ngưỡng phân đoạn ở phần trước sẽ không phù hợp.
Ánh sáng không đồng nhất có thể do bóng (shadow) hoặc hướng của
nguồn sáng khi chiếu lên vật thể. Trong hầu hết các trường hợp, cùng
một giá trị ngưỡng có thể không phù hợp để áp dụng cho toàn bộ ảnh.
Khác với các phương pháp trước thực hiện phân tích lược đồ mức xám
ảnh áp dụng trên toàn bộ ảnh, phương pháp thích nghi cục bộ giải quyết
vấn đề ánh sáng không đồng nhất hoặc phân phối không đều giá trị xám
của nền, tập trung vào các vùng nhỏ của ảnh để chia ảnh thành các ảnh
con nhằm tiền hành xác định ngưỡng cho mỗi vùng con đó. Một số kỹ
thuật đã được nghiên cứu để giải quyết phù hợp vấn đề này một cách
hiệu quả như cách tiếp cận trực tiếp.
Cách tiếp cận trực tiếp là phân chia ảnh thành m×m vùng ảnh con nhỏ
hơn (chia thành lưới) và chọn ngưỡng Tij cho mỗi ảnh con thứ ij dựa vào
78


lược đồ xám tương ứng với
. Phân đoạn tổng thể thu được là
tập hợp các vùng phân đoạn ảnh nhỏ. Ví dụ kết quả phân đoạn thích nghi
cục bộ được thể hiện như sau: Trong hình là ảnh về nền và các hạt gạo,
với điều kiện ánh sáng không đều, phần trên của ảnh sáng và phần dưới
của ảnh tối hơn; hình giữa là lược đồ mức xám toàn cục của ảnh gốc, nếu

chọn ngưỡng đơn hoặc ngược kép cố định áp dụng cho toàn bộ ảnh sẽ
không hiệu quả; chia ảnh gốc thành m×m ảnh con và tiến hành tính lược
đồ xám và xác định ngưỡng cho cho mỗi ảnh con để phân đoạn cho ra kết
quả ở hình thứ 3 (hình bên phải).

H

3.8. Phân đoạn theo phương pháp ngưỡng thích nghi cục bộ

3.2.2.5. Phân đoạn ngưỡng kép
Trong nhiều ứng dụng, giá trị xám bất kỳ phụ thuộc vào đối tượng.
Tuy nhiên, các giá trị xám được thêm vào phụ thuộc vào đối tượng hoặc
hình nền. Trong trường hợp như vậy, ta sẽ sử dụng ngưỡng tích lũy T1
đến lõi của đối tượng và sau đó sử dụng phương pháp loang ảnh để phát
triển vùng đối tượng. Phương pháp này phát triển vùng đối tượng phụ
thuộc vào từng ứng dụng đặc biệt. Cách tiếp cận chung nhất bao gồm sử
dụng các ngưỡng khác nhau để xác định việc chấp nhận điểm ảnh nếu
vùng lân cận chứa điểm ảnh quan trọng (điểm chính) hoặc sử dụng tính
chất cường độ xám để xác định điểm ảnh có thuộc vùng đối tượng hay
không. Cách tiếp cận đơn giản nhất là chấp nhận tất cả điểm ảnh dưới
ngưỡng thứ hai T2 và liên kết lại thành một tập hợp các điểm.
79


Thuật toán sau mô tả cách thực hiện của phân ngưỡng kép được thể
hiện như sau.
Thuật toán: Ngưỡng kép để phát triển vùng
1. Lựa chọn 2 ngưỡng T1 và T2 theo thuật toán chọn ngưỡng.
2. Phân đoạn ảnh thành ba tập gồm R1, R2 và R3:
R1 tập gồm các điểm ảnh có giá trị cường độ xám dưới ngưỡng T1;

R2 tập gồm các điểm ảnh có giá trị xám trong khoảng ngưỡng từ T1
đến T2;
R3 tập gồm các điểm ảnh còn lại có giá trị cường độ xám trên
ngưỡng T2.
3. Duyệt qua mỗi điểm ảnh thuộc vùng R2, nếu điểm ảnh nào có một
vùng lân cận thuộc về R1 thì ta gán lại điểm ảnh này đến vùng R1.
4. Lặp lại bước 3 cho đến khi không có điểm ảnh nào cần được gán lại.
5. Gán lại bất cứ điểm ảnh nào còn lại ở vùng R2 và R3.

3.2.3. Phân đoạn bằng kỹ thuật Otsu
Phương pháp phân đoạn Otsu được đề xuất bởi Nobuyuki Otsu năm
1979[14] và tên của phương pháp được gọi theo tên ông. Kỹ thuật Otsu
được sử dụng để tự động phân cụm ảnh dựa trên kỹ thuật phân ngưỡng
hoặc chuyển đổi ảnh đa mức xám thành ảnh nhị phân. Thuật toán tính
ngưỡng một cách tự động dựa vào giá trị cường độ sáng của ảnh đầu vào
nhằm thay thế cho việc sử dụng ngưỡng cố định trong phân đoạn ảnh.
Thuật toán Otsu giả sử ảnh chứa 2 lớp điểm ảnh theo lược đồ gồm hai
trạng thái (điểm ảnh thuộc đối tượng và điểm ảnh thuộc nền). Sau đó
thực hiện tính ngưỡng tối ưu tách thành 2 lớp sao cho sự kết hợp giữa
chúng (phương sai trong lớp) là cực tiểu (tối thiểu) trong lớp và do đó
phương sai các lớp là cực đại và được xác định là tổng trọng số phương
sai của 2 lớp.

 w2 (t )  0 (t ) 02 (t )  1 (t )12 (t )

(3.2)

Các trọng số 0 và 1 là xác suất của 2 lớp được phân tách bởi
ngưỡng t, phương sai của hai lớp tương ứng là  02 và  12 .
Xác suất lớp 0,1 (t ) được tính từ L bin của histogram

80


t 1

L 1

i 0

i t

0 (t )   p(i) và 1 (t )   p(i)

(3.3)

Otsu chỉ ra cực tiểu phương sai trong lớp bằng cực đại phương sai liên
lớp.
2
 b2 (t )   2   w2 (t )  0 (0  T )2  1 (1  T )2  0 (t )1 (t )  0 (t )  1 (t ) (3.4)

Biểu thức biểu diễn các đại lượng xác suất  và giá trị trung bình ,
trong đó trung bình các lớp được xác định như sau:
t 1

0 (t )   i

p (i )

1 (t )   i


p (i )

i 0
L 1

i t
L 1

0
1

(3.5)

T   ip (i )
i 0

Các mối quan hệ được chứng minh qua điều kiện sau:

0 0  11  T
0  1  1

(3.6)

Các xác suất và giá trị trung bình có thể tính bằng thuật toán lặp như sau:
- Tính lược đồ xám ảnh và xác suất của mỗi mức xám;
- Khởi tạo bộ trọng số i (0) và i (0) ;
- Thực hiện tính từng giá trị ngưỡng có thể với t=1,.. max(intensity)
- Cập nhật lại bộ giá trị i và i
- Tính giá trị  b2 (t )
- Giá trị ngưỡng mong muốn tương ứng với giá trị cực đại của  b2 (t ) .

Việc chọn ngưỡng t=k với 0thành hai lớp với C1 là tập hợp các điểm ảnh có giá trị bé hơn hoặc bằng
k và C2 là tập hợp các điểm ảnh có giá trị lớn hơn k. Tỉ lệ lớp C1 số lượng
điểm ảnh mức k với tổng số lượng điểm ảnh được ký hiệu P1(k), tương tự
tỷ lệ lớp C2 ký hiệu là P2(k).
81


Matlab có hai hàm graythresh() và multithresh() trong công cụ Image
Processing Toolbox được cài đặt tương ứng với thuật toán Otsu đơn mức
và đa mức tương ứng.
function level = otsu(histCounts)%% automatic
thresholding
total = sum(histCounts);
sumB = 0;
wB = 0;
maximum = 0.0;
sum1 = dot((0:255), histCounts);
for ind=1:256
wB = wB + histCounts(ind);
wF = total - wB;
if (wB == 0 || wF == 0)
continue;
end
sumB = sumB + (ind-1) * histCounts(ind);
mF = (sum1 - sumB) / wF;
between=wB*wF*((sumB/wB)-mF)*((sumB/wB)-mF);
if ( between >= maximum )
level = ind;
maximum = between;

end
end
end
Ví dụ minh họa sử dụng hàm Matlab trong xác định ngưỡng và phân
đoạn ảnh nhị phân theo kỹ thuật Otsu.
I = imread('coins.png');
level = graythresh(I);
BW = im2bw(I,level);
subplot(1,2,1); imshow(I);
title('Original image');
subplot(1,2,2); imshow(BW);
title('Otsu segmentation image');
82


H

3.9. Phân đoạn ảnh bằng Otsu

3.3. PHÂN ĐOẠN ẢNH BẰNG k-MEANS
k-means là thuật toán phân cụm do MacQueen đề xuất trong lĩnh
vực thống kê năm 1967, mục đích của thuật toán k-means là phân chia
thành k cụm dữ liệu
từ một tập dữ liệu ban đầu gồm n
đối tượng trong không gian d chiều

i  1, n sao

cho dữ liệu trong các cụm là tương đồng với nhau nhất, nghĩa là hàm tiêu
k


chuẩn đánh giá lỗi E    xC D 2( x  mi ) đạt giá trị tối thiểu với mi là
i 1

i

trọng tâm của cụm Ci, D là khoảng cách giữa hai đối tượng.
Trọng tâm của mỗi cụm được biểu diễn dưới dạng một vector trong
không gian d chiều, trong đó giá trị mỗi phần tử của vector là trung bình
thành phần tương ứng của các đối tượng dữ liệu (các vector) trong cụm
đang xét. Tham số đầu vào của thuật toán là số cụm k, tập dữ liệu gồm n
phần tử và tham số đầu ra là tập trọng tâm đại diện cho các cụm dữ liệu
được phân chia. Độ đo khoảng cách D giữa các đối tượng dữ liệu thường
được sử dụng là khoảng cách Euclide, vì nó là mô hình khoảng cách dễ
lấy đạo hàm và xác định các cực trị tối thiểu. Hàm tiêu chuẩn và độ đo
khoảng cách có thể được xác định cụ thể hơn tuỳ vào ứng dụng cụ thể
hoặc quan điểm của người dùng. Thuật toán k-means gồm các bước cơ
bản sau:

83


INPUT: Một tập dữ liệu gồm n đối tượng và số các cụm k cần phân
chia.
OUTPUT: Tập trọng tâm (m) đại diện cho các cụm Ci (i=1,.., k) sao
cho hàm tiêu chuẩn E đạt giá trị tối thiểu.
Bước 1: Khởi tạo
Chọn k đối tượng mj (j=1... k) là trọng tâm ban đầu của k cụm từ
tập dữ liệu (lựa chọn trọng tâm ban đầu có thể được thực hiện
ngẫu nhiên hoặc theo kinh nghiệm).

Bước 2: Tính khoảng cách
Với mỗi đối tượng Xi (1  i  n) tính khoảng cách từ Xi tới mỗi
trọng tâm mj với j=1,.., k.
Gán lại cụm cho đối tượng sao cho khoảng cách từ nó đến cụm
có trọng tâm gần nhất.
Bước 3: Cập nhật lại trọng tâm
Mỗi cụm Cj với j=1,.., k, cập nhật trọng tâm cụm mj bằng cách
tính giá trị trung bình của tất cả đối tượng dữ liệu trong cụm.
Bước 4: Điều kiện dừng
Lặp các bước 2 và 3 cho đến khi các trọng tâm của cụm không
thay đổi.
10
9

9

8

8

7

7

6

6

9
8

7
6
5

5

5

4
4
3
2
1
0
0

2

3

4

5

6

7

8
0


Gán mỗi
đối tượng
vào các
cụm

9

3
2
1
0
0

1

2

3

4

5

6

7

8


9

10

4

Cập nhật
lại trọng
tâm

3
2
1
0
0

1

2

3

4

5

6

7


8

9

0

1

Gán lại các đối tượng

Gán lại các đối tượng
1

K=2
Chọn k đối tượng
trung tâm tùy ý

10

10

9

9

8

8

7


7

6

6

5

5

4

Cập nhật lại
trọng tâm

3
2
1

4
3
2
1

0

0

0


H

0

1

2

3

4

5

6

7

8

9

10

0

1

2


3.10. Minh họa phân cụm bằng k-means
1

84

0

3

4

5

6

7

8

9

10


Thuật toán k-means được chứng minh chắc chắn hội tụ và có độ phức
tạp tính toán là: O( O((n  k  d )   t ) ). Trong đó, n là số đối tượng dữ liệu,
k là số cụm dữ liệu, d là số chiều,  là số vòng lặp, t là thời gian để thực
hiện một phép tính cơ sở như phép tính nhân, chia, … Như vậy, k-means
là phương pháp phân tích phân cụm đơn giản có thể áp dụng đối với tập

dữ liệu lớn. Tuy nhiên, nhược điểm của k-means là chỉ áp dụng với dữ
liệu có thuộc tính số và khám phá ra các cụm có dạng hình cầu, k-means
rất nhạy cảm với nhiễu và các phần tử ngoại lai trong dữ liệu. Hình dưới
diễn tả về một số hình dạng cụm dữ liệu khám phá được bởi k-means.
Chất lượng phân cụm dữ liệu bằng thuật toán k-means phụ thuộc
nhiều vào các tham số đầu vào như số cụm k và các trọng tâm được khởi
tạo ban đầu. Trong trường hợp các trọng tâm khởi tạo ban đầu quá lệch
so với trọng tâm thực của cụm thì kết quả phân cụm của k-means đạt
được rất thấp, nghĩa là các cụm dữ liệu được phân tách rất lệch so với
cụm trong thực tế của nó và thời gian hội tụ cũng chậm. Kinh nghiệm
cho thấy chưa có một giải pháp tối ưu nào để chọn tham số đầu vào
chung cho nhiều bài toán khác nhau. Giải pháp thường được sử dụng
nhất là thử nghiệm với các giá trị đầu vào k khác nhau sau đó chọn giải
pháp tốt nhất.
Đến nay, đã có rất nhiều thuật toán kế thừa ý tưởng của thuật toán kmeans áp dụng trong phân cụm dữ liệu để giải quyết tập dữ liệu có kích
thước lớn đang được áp dụng rất hiệu quả và phổ biến như thuật toán kmedoid, PAM, CLARA, CLARANS, k- prototypes, …
Ví dụ sử dụng thuật toán phậm cụm k-means trong phân đoạn ảnh:
I = imread('coins.png');
ab = double(I);
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,1);
kCluster = 2;
[cluster_idx,~] = kmeans(ab,kCluster);
labels = reshape(cluster_idx,nrows,ncols);
imshow(labels,[]);
subplot(1,2,1); imshow(I);
title('Original image');
subplot(1,2,2); imshow(BW);
title('k-means segmentation image');


85


H

3.11. Phân đoạn ảnh bằng k-means

3.4. KỸ THUẬT PHÂN ĐOẠN ẢNH BẰNG MEANSHIFT
Phương pháp MeanShift được giới thiệu năm 1975 bởi Fukunaga và
Hostetle[15]. Đây là kiểu thuật toán lặp, bắt đầu với giá trị khởi tạo x, xác
định trước một hàm nhân K(xi-x) có chức năng tìm kiếm trọng số các
điểm lân cận để ước lượng lại giá trị trung bình. Hàm nhân hay được sử
dụng là hàm Gaussian. Hàm Gaussian xác định khoảng cách đến giá trị
ước lượng hiện tại được tính theo công thức K ( xi  x)  e c|| xi  x|| , trung
2

bình có trọng số các giá trị trong cửa sổ được xác định bởi K như sau:

m( x ) 



xi N ( x )



K ( xi  x) xi

xi N ( x )


K ( xi  x)

(3.7)

với N(x) là lân cận của x, tập các điểm sao cho K ( xi  x)  0 .
Giá trị khoảng cách giữa x và giá trị trung bình các lân cận xác định
bởi m( x)  x được gọi là khoảng cách MeanShift[15]. Giá trị ước lượng x
sẽ được cập nhật bằng giá trị trung bình lân cận x  m( x) và lặp lại quá
trình cập nhật x cho đến khi m(x) hội tụ.
Tổng quát về thuật toán MeanShift được mô tả như sau:
Cho trước một tập hữu hạn S, với miền giá trị trong không gian
Euclidean có n chiều X, K là một hàm nhân phẳng có tính chất:



K ( x)  1 if || x || 
0 if || x || 
86

(3.8)


Bước 1: gán giá trị s  m(s) được thực hiện cho tất cả sS;
Vấn đề đầu tiên là làm thế nào để ước lượng hàm mật độ cho bởi tập
thưa các mẫu. Một trong những cách tiếp cận đơn giản nhất là làm trơn
dữ liệu, có thể bằng cách điều chỉnh nó với một hàm nhân cố định có độ
rộng xác định như sau:

 ‖ x  xi ‖2 

f ( x)   K ( x  xi )   k 

h2
i
i



(3.9)

Với xi là các mẫu vào và k(r) là hàm nhân, h là một tham số trong
thuật toán và được gọi là băng thông (bandwidth).
Các tiếp cận này được gọi là ước lượng mật độ nhân hay là kỹ thuật
cửa sổ Parzen. Một khi tính xong giá trị f(x) theo công thức trên, cực đại
cục bộ được xác định bằng cách sử dụng phương pháp độ dốc gradient
hoặc bằng phương pháp tối ưu hóa nào đó. Vấn đề hạn chế của cách tiếp
cận này là khi số chiều lớn hơn nó trở nên khó đánh giá f(x) trên không
gian tìm kiếm phức tạp. Thay vào đó, MeanShift sử dụng một biến thể
khác trong tối ưu hóa như phương pháp khởi động lại nhiều lần dựa vào
độ giảm gradient. Bắt đầu bằng một ước lượng cực đại địa phương yk có
thể là một giá trị vào ngẫu nhiên x1, meanshift tính giá trị gradient của
mật độ ước lượng f(x) tại yk và lấy một bước dốc gradient theo hướng
hiện tại.
Một số kiểu của hàm nhân:
Cho X là không gian Euclidean n chiều, Rn. Ký hiệu thành phần thứ I
của x là xi. Chuẩn của x là một số không âm ‖ x ‖2  xT x
Một hàm K: XR được gọi là hàm nhân nếu tồn tại tính chất
2
k :[0,  ]  R , ví dụ như K ( x)  k (‖ x ‖ ) và k có các tính chất sau:


- Hàm không âm,
- Hàm không tăng k (a)  k (b) if
- Liên tục từng phần





0

a  b.

k (r ) dr  

Trong thực tế ứng dụng, meanshift có 2 hàm được dùng phổ biến là
87




- Hàm phẳng k ( x)  1 if x  
0 if x  
- Hàm Gaussian k ( x)  e



x
2 2

với độ lệch chuẩn  như là tham số băng


thông h.
Kỹ thuật meanshift có nhiều ứng dụng trong thực tế như ước lượng
chuyển động, nhận dạng đối tượng, phân đoạn ảnh,…

H

3.12. Kết quả phân đoạn ảnh bằng meanshift[16]

3.5. PHÂN ĐOẠN ẢNH BẰNG KỸ THUẬT WATERSHED
Kỹ thuật phân đoạn watershed được sử dụng nhiều trong xử lý ảnh
nhằm tách đối tượng (foreground) khỏi nền (background) với thông tin
về các đường biên đối tượng. Về cơ bản, ý tưởng của kỹ thuật này dựa
vào nguyên lý nước ở lưu vực dâng lên vùng cao hơn. Phương pháp thực
hiện biến đổi bắt đầu từ “lưu vực” (hay gọi là vũng) được gọi là vùng
thấp, lưu vực tương đối bằng phẳng và xây dựng các “đường ranh giới”
(được gọi là các đập chắn) được xác định bởi các cạnh (ngăn cách các
vũng). Do vậy, thay vì làm việc trực tiếp trên ảnh đa mức xám, phương
pháp Watershed hoạt động dựa trên giá trị gradient của cường độ sáng
điểm ảnh. Việc xác định các đường ranh giới được thực hiện thông qua
kỹ thuật phát hiện cạnh, như kỹ thuật Canny. Một ảnh được xem như bề
mặt địa hình của một khu vực nào đó, với các pixels có độ sáng cao
thuộc về “vùng cao” và pixels có độ sáng thấp thuộc về “vùng thấp” (hay
vũng). Sau đó xuất phát từ vũng để thực hiện lan tỏa bằng cách “dâng
nước lên” và gộp các vùng lại theo nguyên tắc “dâng nước”, nước sẽ dần
lấp đầy các vùng thấp và đường biên ngăn cách giữa các vũng tạo thành
phân đoạn ảnh. Khi dâng nước lên đạt đỉnh cục bộ theo đường biên giữa
88



các vũng thì hình thành nên vách ngăn tại đường biên đó. Quá trình được
thực hiện lặp lại cho đến khi tất cả các pixel đều “ngập nước”, các vách
ngăn chính là đường biên giữa các vùng.
Ví dụ minh họa quá trình phân đoạn bằng kỹ thuật Watershed như sau:
Hình (a) là ảnh thể hiện giá trị cường độ gradient mô tả độ dốc giữa các
vùng và xác định các vùng cao và vùng thấp; hình (b) ảnh thể hiện kết
quả dùng phương pháp phát hiện cạnh để tìm các đường ranh giới chính;
hình (c) thể hiện kết quả của việc “dâng nước” gộp vùng và kết quả phân
đoạn thành các vùng liên thông.

(a)
H

(b)
(c)
3.13. Phân đoạn ảnh bằng Watershed11:

(d)

(a) ảnh gradient, (b) thể hiện độ cao gradient,
(c) vách ngăn theo gradient, (d) thể hiện độ cao vách ngăn

Quá trình phân đoạn theo thuật toán Watershed thực hiện như sau:
1) Ảnh vào được chuyển qua ảnh đa mức xám (gray).
2) Dùng thuật toán tính cường độ và độ dốc biến đổi mức sáng (gọi là
ảnh gradient).
3) Với ảnh gradient nhận được, ta liên tưởng dữ liệu hình ảnh gradient
với một bản đồ địa hình sao cho vùng có cường độ xám thấp là
vũng và ngược lại. Tại mỗi điểm ảnh, việc đánh giá dựa vào giá trị
mức xám của điểm ảnh đó. Thực hiện quét các điểm ảnh theo trình

tự đã sắp xếp để xây dựng các vũng. Mỗi vũng được gán một nhãn
riêng biệt để phân biệt giữa các vùng.
4) Thực hiện quá trình “dâng nước” làm “ngập nước” các điểm ảnh.
Bắt đầu tại điểm thấp nhất của vũng rồi cho nước dâng dần lên. Khi
nước trong các vũng cạnh nhau có thể hoà vào nhau thì hình thành
11

/>
89


nên các vách để ngăn 2 vùng này nhập với nhau. Quá trình được
thực hiện lặp lại cho đến khi mọi điểm của bề mặt địa hình đều
được ngập nước.

H

3.14. Phân đoạn ảnh bằng thuật toán Marker-controlled watershed12

Phân đoạn bằng kỹ thuật Watershed cho kết quả tốt hơn nếu có sự xác
định hoặc đánh dấu các vị trí đối tượng và vị trí nền một cách hợp lý. Để
giải quyết vấn đề này, phương pháp phân đoạn theo kiểm soát đánh dấu
(marker controlled) Watershed được thực hiện như sau:
1) Tính hàm phân đoạn, các vùng tối được xem là các đối tượng muốn
phân loại.
2) Tìm các đánh dấu vùng tiền cảnh (foreground markers) là các đốm
(gồm tập điểm ảnh) liên thông trong vùng của mỗi đối tượng.
3) Tìm các đánh dấu vùng nền là các vùng điểm ảnh không thuộc về
đối tượng nào cả trong ảnh.
4) Điều chỉnh phân đoạn sao cho cực tiểu hóa các vị trí đánh dấu tiền

cảnh và nền.
5) Tính biến đổi Watershed theo hàm điều chỉnh phân đoạn.
Quá trình phân đoạn ảnh sử dụng kiểm soát đánh dấu được thực hiện
như sau:

12

/>metheus/wtshed.html

90


Im

= rgb2gray(imread('pears.png'));

figure; imshow(Im); title('Original image')
% Step 2: Tính cường độ Gradient (Gradient
magnitude')
dx=[-1 0 1];dy=dx';
Ix=conv2(Im,dx,'same');
Iy=conv2(Im,dy,'same');
gradmag = sqrt(Ix.^2 + Iy.^2);
figure;imshow(uint8(gradmag),[]);
title('Gradient magnitude')
L = watershed(gradmag);
Lrgb = label2rgb(L);
figure; imshow(Lrgb,[]),
title('Watershed transform of gradient magnitude')
% Step 3: Tạo các đối tượng (Foreground objects)

se = strel('disk', 20);
Ie = imerode(Im, se);
Iobr = imreconstruct(Ie, Im);
Iobrd = imdilate(Iobr, se);
Iobrcbr = imreconstruct(imcomplement(Iobrd),
imcomplement(Iobr));
Iobrcbr = imcomplement(Iobrcbr);
fgm = imregionalmax(Iobrcbr);
se2 = strel(ones(5,5));
fgm2 = imclose(fgm, se2);
fgm3 = imerode(fgm2, se2);
fgm4 = bwareaopen(fgm3, 20);
figure;imshow(fgm4), title('Foreground Objects')
% Step 4: Tính toán đánh dấu nền (Background
markers)
bw = imbinarize(Iobrcbr);
D = bwdist(bw);
DL = watershed(D);

91


bgm = DL == 0;
figure;
imshow(bgm), title('Watershed lines')
% Step 5: Thực hiện biến đổi Watershed.
gradmag2 = imimposemin(gradmag, bgm | fgm4);
L = watershed(gradmag2);
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');
Figure; imshow(Lrgb);

title('Watershed segmented image')

Một số kết quả trong quá trình phân đoạn bằng kỹ thuật Watershed
theo đoạn chương trình Matlab ở trên n:

H
92

3.15. Minh họa các bước phân đoạn ảnh bằng Watershed


3.6. PHÂN ĐOẠN PHÂN CẤP
Phân đoạn phân cấp (hierarchical segmentation) là kỹ thuật phân đoạn
dựa vào biến đổi Watershed. Phép biến đổi Watershed cũng được sử
dụng để xác định phân cấp các vùng “lưu vực”. Bắt đầu từ khởi tạo biến
đổi Watershed tính gradient ảnh, xác định ảnh mosaic và sau đó tính toán
liên kết gradient. Từ kết quả này, một hàm tiêu chuẩn mới được xây dựng
dựa vào độ cao tương đối của các “vách” ngăn cách để khởi tạo các vùng
“lưu vực”. Biến đổi Watershed áp dụng vào ảnh để tính toán phân cấp ở
mức cao hơn trong ảnh được phân đoạn, nhằm ngăn ngừa việc phân đoạn
quá khớp (over-segmentation). Cách tiếp cận biến đổi này được gọi là
biến đổi thác nước (waterfalls).

(a)

(b)

(c)

(d)


H
3.16. Phân đoạn phân cấp :
a) ảnh gốc, (b) phân đoạn thô, (c) ảnh Mosaic, (d) mức đầu tiên của phân cấp.
13

Câu hỏi và bài tập
1. Vùng và đường biên có sự tương tác lẫn nhau, nó chứa các thông tin
tương đương. Hãy cho biết điểm thuận lợi của các phương pháp biểu
diễn vùng và đường biên?
2. Trong tiếp cận ngưỡng tự động dựa trên phương pháp mô hình
(mode), đáy của vũng (valley) thường được sử dụng như là giá trị
ngưỡng. Giả thuyết các đối tượng và nền có cùng kích thước và giá trị
cường độ sáng được thể hiện từ hai phân bố Gaussian khác nhau là
N(
và N(
và ngưỡng thật sự sẽ là ngưỡng tối ưu vì nó
giảm sai số. Hãy thể hiện ngưỡng tối ưu trong trường hợp chung khi

13

/>metheus/wtshed.html

93


điểm ảnh chiếm p% của vùng ảnh và phân bố đối tượng với hình nền
tương ứng là N(
và N(
?

3. Vấn đề tỷ lệ vật thể trong ảnh sử dụng phương pháp p_tile và phương
pháp mode với giá trị ngưỡng lựa chọn tự động như thế nào?
4. Hãy cho biết một số hạn chế của các phương pháp tìm phân vùng dựa
trên lược đồ ảnh (histogram). Làm thể nào để khắc phục các hạn chế
đó trong các ứng dụng thực tiễn? Hãy đề xuất một giải pháp để hậu xử
lý (postprocessing) nhằm thu được kết quả chính xác hơn khi sử dụng
phương pháp dựa vào lược đồ ảnh?
5. Hãy sử dụng ba thể loại ảnh khác nhau gồm ảnh chụp trong văn
phòng, ảnh cảnh quan ngoài trời và ảnh chứa một vật thể đơn giản.
Thực hiện phân đoạn ảnh bằng phương pháp phân ngưỡng tự động và
phân tích kết quả?
6. Chụp hai vật thể đơn giản đặt trên bàn, chọn một vật thể sáng màu và
một vật thể tối màu. Chiếu vào vật thể để ánh sáng đến trực tiếp vào
vật thể sáng hơn. Xây dựng phân đoạn ngưỡng tự động phù hợp để
phân đoạn nhằm thu được kết quả tốt nhất có thể. Tiếp theo thay đổi
hướng chiếu sáng bằng cách chiếu sáng từ hướng vật thể tối hơn qua.
Hãy xây dựng một thuật toán cho mô hình này?
7. Hãy sử dụng ảnh vệ tinh địa hình từ Google Maps, thực hiện phân
vùng các khu vực bằng phương pháp Watershed?
8. Hãy sử dụng ảnh Google Maps về giao thông, thực hiện phân vùng
khu vực đường giao thông bằng một trong các kỹ thuật phân đoạn và
các kỹ thuật xử lý ảnh trong chương 2?
9. Chụp ảnh về trái cây (các trái không chồng lên nhau), hãy phân tích và
phân đoạn ảnh rồi cho biết số lượng trái cây có trong ảnh?

94




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

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