Tải bản đầy đủ (.docx) (50 trang)

Báo cáo tìm hiểu đề tài phân đoạn ảnh, các phương pháp phân đoạn ảnh và lập trình minh họa

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.91 MB, 50 trang )

Contents

1


Mở đầu
Phân đoạn ảnh là một thao tác ở mức thấp trong toàn bộ quá trình xử lý ảnh. Quá trình
này thực hiện việc phân vùng ảnh thành các vùng rời rạc và đồng nhất với nhau hay nói cách
khác là xác định các biên của các vùng ảnh đó. Các vùng ảnh đồng nhất này thông thường sẽ
tương ứng với toàn bộ hay từng phần của các đối tượng thật sự bên trong ảnh. Vì thế, trong
hầu hết các ứng dụng của lĩnh vực xử lý ảnh, phân đoạn ảnh luôn đóng một vai trò cơ bản và
thường là bước tiền xử lý đầu tiên trong toàn bộ quá trình trước khi thực hiện các thao tác
khác ở mức cao hơn như nhận dạng đối tượng, biểu diễn đối tượng, nén ảnh dựa trên đối
tượng, hay truy vấn ảnh dựa vào nội dung … Trước đây, các phương pháp phân vùng ảnh
được đưa ra chủ yếu làm việc trên các ảnh mức xám do các hạn chế về phương tiện thu thập
và lưu trữ. Ngày nay, cùng với sự phát triển về các phương tiện thu nhận và biểu diễn ảnh,
các ảnh màu đã hầu như thay thế hoàn toàn các ảnh mức xám trong việc biểu diễn và lưu trữ
thông tin do các ưu thế vượt trội hơn hẳn so với ảnh mức xám. Do đó, các kỹ thuật, thuật giải
mới thực hiện việc phân vùng ảnh trên các loại ảnh màu liên tục được phát triển để đáp ứng
các nhu cầu mới.
Mục đích chính của chúng em là tìm hiểu và hệ thống lại các phương pháp phân đoạn
ảnh đã có theo các hướng: như phân đoạn theo ngưỡng, phân đoạn theo đường biên và theo
miền đồng nhất. Với mục đích như vậy chúng em đã trình bày đồ án thành 3 phần chính như
sau:
Chương 1: Tổng quan về xử lý ảnh.
Chương 2: Một số phương pháp phân đoạn ảnh.
Chương 3: Lập trình minh họa
Chúng em chân thành cảm ơn TS Nguyễn Linh Giang đã cung cấp tài liệu và giúp
chúng em hoàn thành bài tập lớn này. Do điều kiện thời gian và kiến thức còn hạn chế nên
phần tìm hiểu của chúng em vẫn còn nhiều thiếu xót. Chúng em mong nhận được sự góp ý
của thầy và các bạn trong lớp để bài báo cáo được hoàn thiện hơn.



2


3


Phân chia công việc
-

-

-

Nguyễn Quang Huy:
 Tìm hiểu và lập trình minh họa phương pháp K-means
 Làm báo cáo và slide
Phan Ngọc Phùng:
 Tìm hiểu và lập trình minh họa phương pháp Watershed
 Làm báo cáo và slide
Nguyễn Văn Phương:
 Tìm hiểu và lập trình minh họa phương pháp Otsu
 Làm báo cáo và slide

-

4


Chương 1: Tổng quan về xử lý ảnh

1.1.

Giới thiệu về xử lý ảnh
Quá trình xử lý ảnh là một quá trình thao tác nhằm phân tích, biến đổi
một ảnh đầu vào để đưa ra một kết quả mong muốn. Kết quả của quá trình xử
lý ảnh có thể là một ảnh tốt hơn hoặc một kết luận. Điều này tùy thuộc vào mục
đích yêu cầu của quá trình.

1.2.

Quá trình xử lý ảnh
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính như nâng cao
chất lượng ảnh và phân tích ảnh. Do vậy, quá trình xử lý ảnh bao giờ cũng bắt
đầu bằng công việc thu nhận ảnh và kết thúc là việc nhận dạng ảnh hoặc một
phán đoán theo ý nghĩa trên cơ sở nhận dạng ảnh. Cụ thể, các bước cơ bản
trong quá trình xử lý ảnh được thể hiện thông qua hình 1.1 sau:

Hình 1.1-Các bước cơ bản trong xử lý ảnh
Nguồn:luanvan.net.vn/luan-van/luan-van-tim-hieu-phuong-phap-phan-doananh-dua-tren-rwr-random-walker-restart-45856/
1.2.1.

Thu nhận ảnh
Công việc cụ thể ở giai đoạn này là thu ảnh qua một bộ thu ảnh và số hoá
những tín hiệu liên tục được sinh ra bởi bộ thu ảnh đó. Bộ thu ảnh có thể là máy
chụp ảnh đơn sắc hay màu, máy quét ảnh, máy quay...

1.2.2.

Tiền xử lý ảnh


5


Công việc cụ thể của bước này là cải thiện độ tương phản của ảnh, khử
nhiễu. Mục đích của các công việc này là làm cho chất lượng ảnh trở lên tốt
hơn chuẩn bị cho các bước xử lý tiếp theo.
1.2.3.

Phân đoạn ảnh
Đây là giai đoạn này tách một ảnh đầu vào thành nhiều vùng khác nhau hay
còn gọi là các đối tượng để biểu diễn phân tích, nhận dạng ảnh.

1.2.4.

Biểu diễn và mô tả
Ảnh sau khi số hoá sẽ được lưu vào bộ nhớ hoặc chuyển sang các khâu tiếp
theo để phân tích. Nếu lưu trữ ảnh trực tiếp từ các ảnh thô đòi hỏi dung lượng
bộ nhớ rất lớn và không hiệu quả theo quan điểm ứng dụng và công nghệ.
Thông thường, các ảnh thô đó được biểu diễn lại theo các đặc điểm của ảnh
được gọi là các đặc trưng ảnh như: biên ảnh, vùng ảnh. Các thông tin này sẽ
được chọn các tính chất đặc trưng để thể hiện gọi là trích chọn đặc trưng.

1.2.5.

Nhận dạng và nội suy
Nhận dạng ảnh là quá trình xác định ảnh bằng cách so sánh ảnh với mẫu
chuẩn đã được lưu từ trước. Nội suy là phán đoán theo ý nghĩa trên cơ sở nhận
dạng ảnh. Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp
dụng trong khoa học và công nghệ là: Nhận dạng ký tự (chữ in, chữ viết tay,
chữ ký điện tử), nhận dạng văn bản, nhận dạng vân tay, nhận dạng mã vạch,

nhận dạng mặt người...

1.2.6.

Cơ sở trí thức
Trong nhiều khâu xử lý và phân tích ảnh, ngoài việc đơn giản hoá các
phương pháp toán học đảm bảo tiện lợi cho xử lý thì chúng ta luôn hướng đến
việc xây dựng hệ thống tự động tiếp nhận và xử lý theo cách của con người. Vì
vậy, nhiều khâu hiện nay đã được xử lý theo các phương pháp trí tuệ nhân tạo,
sử dụng cơ sở tri thức của con người.

1.3.

Tổng quan về phân đoạn ảnh
Phân đoạn ảnh là một thao tác ở mức thấp và là bước then chốt trong
quá trình xử lý ảnh. Giai đoạn này nhằm phân tích ảnh thành những vùng rời
rạc có cùng tính chất nào đó dựa vào việc xác định biên và các vùng liên thông
cho từng vùng. Tiêu chuẩn để xác định các vùng liên thông có thể là cùng mức
xám, cùng màu hay cùng độ nhám… Các vùng ảnh này thông thường sẽ tương
ứng với toàn bộ hay từng phần của đối tượng thật bên trong ảnh.

1.4.
1.4.1.

Một số khái niệm cơ bản
Điểm ảnh
6


Điểm ảnh (Pixel) là một phần tử của ảnh số tại tọa độ (x,y) với độ xám hoặc

màu nhất định. Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích
hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc
màu) của ảnh số gần như ảnh thật.

Độ phân giải của ảnh

1.4.2.

Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một
ảnh số được hiển thị.

Mức xám của ảnh

1.4.3.

Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá trị số tại
điểm đó.

Quan hệ giữa các điểm ảnh

1.4.4.
a.

Các lân cận của điểm ảnh (Image Neighbors)

Hình 1.2 – Lân cận các điểm ảnh của tọa độ (x,y)
Nguồn:luanvan.net.vn/luan-van/luan-van-tim-hieu-phuong-phap-phan-doan-anhb.

1.4.5.


dua-tren-rwr-random-walker-restart-45856/
Khoảng cách giữa các điểm ảnh
- Khoảng cách Euclide
- Khoảng cách khối
- Khoảng cách bàn cờ

Nén ảnh
Ảnh dù ở dạng nào vẫn chiếm không gian nhớ rất lớn. Vì vậy, khi mô tả ảnh có
thể sử dụng kỹ thuật nén ảnh để thu gọn dung lượng nhớ dành cho ảnh.

1.4.6.

Các định dạng cơ bản trong xử lý ảnh
Hình ảnh khi lưu trữ dưới dạng tệp tin sẽ được số hóa. Một số dạng ảnh đã
được chuẩn hóa như: ảnh GIF, BMP, PCX, IMG,…

7


8


Chương 2: Một số phương pháp phân đoạn ảnh
Bài toán phân đoạn ảnh

2.1.
-

Phân tách ảnh thành tập hợp những điểm không giao nhau (phân hoạch).
Mục đích: phục vụ bài toán nhận dạng ảnh, hiểu ảnh và những bài toán liên quan


-

đến xử lý vùng.
Phân đoạn ảnh là bài toán xác định yếu (ill-defined): việc xác định vùng ảnh phụ
thuộc vào ngữ cảnh.

Khái niệm đoạn ảnh

2.2.
-

Xác định toán tử P là phép toán xác định trên vùng ảnh. Điểm ảnh x được coi là
nằm trong vùng ảnh xác định qua toán tử P, P(x) = true nếu điểm ảnh thỏa mãn

những tính chất xác định.
- Ví dụ về toán tử vùng:
 Các giá trị mức xám trong một khoảng (ngưỡng)
 Gradient của các mức xám trong một khoảng (biên)
 Phân bố thống kê như nhau (kết cấu bề mặt)
- Sau khi áp dụng các toán tử xác định vùng, ảnh trở thành ảnh nhị phân. Sử dụng các
định nghĩa về tính liên thông, ta có thể xác định được các vùng ảnh.

Các phương pháp phân đoạn ảnh:

2.3.
-

Phân vùng dựa trên ngưỡng: tìm các vùng ảnh bằng cách nhóm các điểm có giá trị


-

mức xám tương tự nhau.
Phân vùng dựa theo đường biên: xác định đường ranh giới giữa các vùng lân cận.
Đây là bài toán đối ngẫu với bài toán phân đoạn ảnh. Bởi lẽ nếu xác định được đối
tượng trong ảnh ta sẽ dễ dàng xác định được biên và ngược lại. Do vậy bài toán này

-

ta sẽ tìm hiểu sau.
Phân vùng ảnh dựa trên các miền: xác định trực tiếp các vùng ảnh bằng cách gia

-

tăng hoặc phân chia vùng.
Phân vùng ảnh dựa trên chuyển động: xác định vùng dựa trên việc so sánh các
khung video liên tiếp trong một chuỗi video để xác định vùng tương ứng với đối
tượng trong chuyển động. Chúng ta sẽ bàn đến phương pháp này khi xử lý đến
video. Trong phạm vi chương trình, bọn em chỉ đề cập đến đây.

2.4.
2.4.1

Tìm hiểu chi tiết một số phương pháp
Lấy ngưỡng tối ưu Otsu

9


Xuất phát từ bài toán lấy ngưỡng cứng như dưới.


Nguồn: Slide bài giảng môn xử lý ảnh TS. Hoàng Văn Hiệp
Phụ thuộc chủ quan (phân tích histogram)
Dễ bị ảnh hưởng bởi nhiễu
Ảnh hưởng bơi thay đổi độ sáng

-

Phương pháp otsu nhằm khắc phục nhược điểm của phương pháp lấy ngưỡng
cứng nhằm đưa ra 1 ngưỡng thíc hợp.
Thuật toán phân ngưỡng Otsu được tác giả Nobuyuki Otsu giới thiệu năm 1979. Phương
pháp phân ngưỡng Otsu dựa trên biểu đồ histogram. Trước tiên, tá giả xét biểu đồ histogram
chuẩn hóa dựa trên hàm mật độ(PDF- Probability Density Function) theo công thức:
pq =

nq
n

q = 0,1,2,..., L - 1

,

Trong đó: n- tổng số pixel trên ảnh;
nq

- tổng số pixel có mức độ xám

rq
;


L – Tổng số ngưỡng độ xám trên ảnh;
10


Giả sử có ngưỡng k được chọn sao cho C0 là tập hợp các pixel có ngưỡng từ [0,1,….,k-1] và
C1 là tập hợp các pixel có ngưỡng từ [k,k+1,…..,L-1]. Phương pháp Otsu lựa chọn ngưỡng k
σ B2
σ 2B
sao cho độ lệch chuẩn
giữa các lớp là lớn nhất. Độ lệch chuẩn
được xác định theo
công thức:
σ B2 = ω 0 ( µ 0 − µ T ) + ω1 ( µ1 − µT )
2

2

Trong đó:
k −1

L −1

q =0

q=k

ω0 = ∑ pq ; ω1 = ∑ pq
;

k −1


µ 0 = ∑ qp q / ω 0
q =0

L −1

L −1

q=k

q =0

µ1 = ∑ qpq / ω1 ; µT = ∑ qpq

Ví dụ:
Để làm rõ thuật toán ta sẽ lấy ví dụ bằng cách sử dụng một ảnh 6x6 và histogram của ảnh đó.
Để đơn giản hóa bài toán ta chỉ sử dụng ảnh có 6 mức xám.

Ảnh xám và histogram của ảnh

11


Lựa chọn ngưỡng k = 3. Ta tính toán độ lệch chuẩn của Background và Foreground.
Với Background:

2

ω0 = ∑ pq =
q =0


8+7+2
= 0.4722
36

2

µ0 = ∑ qpq / ω0 =
q =0

0 × 8 + 1× 7 + 2 × 2
= 0.6471
0.4722 × 36

Với Foreground:

5

ω1 = ∑ p q = 0.5278
q =3

5

µ1 = ∑ qp q / ω1 = 3.8947
q =3

12


5


µ T = ∑ qp q =
q =0

0 × 8 + 1× 7 + 2 × 2 + 3 × 6 + 4 × 9 + 5 × 4
= 2.3611
36

Ta được giá trị của độ lệch chuẩn tại ngưỡng k =3.
σ B2 = ω 0 ( µ 0 − µ T ) + ω1 ( µ1 − µ T ) = 2.6287
2

2

Bảng giá trị độ lệch chuẩn tại các ngưỡng:

Ngưỡn
g

k=0

k=1

Độ lệch
chuẩn

σ B2 = 0

σ B2 = 1.5928


Như vậy tại ngưỡng k = 3 thì

k=2

k=3

σ B2 = 2.5635 σ B2 = 2.6287

σ B2 = 2.6287

k=4

k=5

σ B2 = 2.1417

σ B2 = 0.8705

là giá trị độ lệch chuẩn lớn nhất, như

vậy trong ví dụ này ngưỡng tối ưu theo phương pháp Otsu là k = 3.

2.4.2
2.4.2.1.

Phân vùng ảnh dựa trên thuật toán K-means
Giới thiệu
Bài toán K-mean thuộc dạng phân đoạn ảnh dựa theo các thuật toán gom nhóm.
Gom nhóm dữ liệu là gom nhóm những đối tượng dữ liệu tương tự vào 1 nhóm
thỏa mãn điều kiện:

13


-

Các đối tượng trong 1 nhóm tương tự nhau.

-

Các đối tượng khác nhóm thì không tương tự nhau.
Gom nhóm giúp giải quyết vấn đề tìm kiếm, phát hiện các cụm, các mẫu dữ
liệu trong một tập hợp ban đầu các dữ liệu không co dãn.
K-means trong phân đoạn xử lý ảnh có rất nhiều ứng dụng cũng như rất hiệu
quả. Ở đây, trong phạm vi chương trình, chúng em chỉ tìm hiểu một chút về
việc áp dụng k-means để phân đoạn ảnh theo màu.
Trong thuật toán K-means clustering, chúng ta không biết nhãn (label) của từng
điểm dữ liệu. Mục đích là làm thể nào để phân dữ liệu thành các cụm (cluster)
khác nhau sao cho dữ liệu trong cùng một cụm có tính chất giống nhau.

2.4.2.2.

Phân tích toán học
Mục đích cuối cùng của thuật toán phân nhóm này là: từ dữ liệu đầu vào và số
lượng nhóm chúng ta muốn tìm, hãy chỉ ra center của mỗi nhóm và phân các
điểm dữ liệu vào các nhóm tương ứng. Giả sử thêm rằng mỗi điểm dữ liệu chỉ
thuộc vào đúng một nhóm.
Một số ký hiệu toán học
Giả sử có N điểm dữ liệu X= [x1, x2…, xN] ϵ RdxN và Kmuốn phân chia. Chúng ta cần tìm các center m1, m2..., mk ϵ Rdx1 và label của
mỗi điểm dữ liệu.

Lưu ý về kí hiệu toán học: Các số vô hướng được biểu diễn bởi chữ viết ở
dạng không in đậm, có thể viết hoa, ví dụ x1, N, y, k. Các vector được biểu diễn
bằng các chữ cái thường in đậm, ví dụ m, x1. Ác ma trận biểu diễn bởi các chữ
hoa in đậm, ví dụ X, Y, Z.
Với mỗi điểm dữ liệu xi đặt yi= [yi1, yi2…, yik] là label vector của nó, trong đó
nếu xi được phân vào cluster k thì yik=1 và yij=0, ∀j≠k. Điều này có nghĩa là có
đúng một phần tử của vector yi là bằng 1 (tương ứng với cluster của xi), các
phần tử còn lại bằng 0. Ví dụ: nếu một điểm dữ liệu có label vector là [1, 0, 0,
14


…,0] thì nó thuộc vào cluster 1, là [0, 1, 0…,0] thì nó thuộc vào cluster 2, …….
Cách mã hóa label của dữ liệu như thế này được goi là biểu diễn one-hot.
Ràng buộc của yi có thể viết dưới dạng toán học như sau:

Hàm mất mát và bài toán tối ưu
Nếu ta coi center mk là center (hoặc representative) của mỗi cluster và ước
lượng tất cả các điểm được phân vào cluster này bởi mk, thì một điểm dữ
liệu xi được phân vào cluster k sẽ bị sai số là (xi−mk). Chúng ta mong muốn sai
số này có trị tuyệt đối nhỏ nhất nên ta sẽ tìm cách để đại lượng sau đây đạt giá
trị nhỏ nhất:

(Bình phương khoảng cách Euclid)
Hơn nữa, vì xi được phân vào cluster k nên yik=1, yij=0, ∀j≠k. Khi đó, biểu thức
bên trên sẽ được viết lại là:

Sai số cho toàn bộ dữ liệu sẽ là:

Trong đó Y= [y1; y2; … yN], M= [m1; m2; … mK] lần lượt là các ma trận được
tạo bởi label vector của mỗi điểm dữ liệu và center của mỗi cluster. Hàm số mất

mát trong bài toán K-means clustering của chúng ta là hàm với ràng buộc như
được nêu trong phương trình (1)
Tóm lại, chúng ta cần tối ưu bài toán sau:

Thỏa mãn:

15


Nhắc lại khái niệm arg min: Chúng ta biết ký hiệu min là giá trị nhỏ nhất của
hàm số, arg min chính là giá trị của biến số để hàm số đó đạt giá trị nhỏ nhất
đó. Nếu f(x)=x2−2x+1=(x−1) =(x−1)2 thì giá trị nhỏ nhất của hàm số này bằng
0, đạt được khi x=1. Trong ví dụ này min xf(x)=0 và arg minx f(x)=1. Thêm ví
dụ khác, nễu x1=0, x2=10, x3=5 thì ta nói arg min i xi = 1 vì 1 là chỉ số để x i đạt
giá trị nhỏ nhất (=0). Biến số viết bên dưới minmin là biến số cúng ta cần tối
ưu. Trong các bài toán tối ưu, ta thường quan tâm tới arg min hơn là min.
Thuật toán tối ưu hàm mất mát
Bài toán (2) là một bài toán khó tìm điểm tối ưu vì nó có thêm các điều kiện
ràng buộc. Bài toán này thuộc loại mix-integer programming (điều kiện biến là
số nguyên) - là loại rất khó tìm nghiệm tối ưu toàn cục (global optimal point,
tức nghiệm làm cho hàm mất mát đạt giá trị nhỏ nhất có thể). Tuy nhiên, trong
một số trường hợp chúng ta vẫn có thể tìm được phương pháp để tìm được
nghiệm gần đúng hoặc điểm cực tiểu. (Nếu chúng ta vẫn nhớ chương trình toán
ôn thi đại học thì điểm cực tiểu chưa chắc đã phải là điểm làm cho hàm số đạt
giá trị nhỏ nhất).
Một cách đơn giản để giải bài toán (2) là xen kẽ giải Y và M khi biến còn lại
được cố định. Đây là một thuật toán lặp, cũng là kỹ thuật phổ biến khi giải bài
toán tối ưu. Chúng ta sẽ lần lượt giải quyết hai bài toán sau đây:
Cố định M, tìm Y
Giả sử đã tìm được các centers, hãy tìm các label vector để hàm mất mát

đạt giá trị nhỏ nhất. Điều này tương đương với việc tìm cluster cho mỗi điểm
dữ liệu.
Khi các centers là cố định, bài toán tìm label vector cho toàn bộ dữ liệu có thể
được chia nhỏ thành bài toán tìm label vector cho từng điểm dữ liệu xi như sau:

Thỏa mãn:
16


Vì chỉ có một phần tử của label vector yi bằng 1 nên bài toán (3) có thể tiếp tục
được viết dưới dạng đơn giản hơn:

Vì chính là bình phương khoảng cách tính từ điểm xi tới center mj, ta có thể kết
luận rằng mỗi điểm xi thuộc vào cluster có center gần nó nhất! Từ đó ta có
thể dễ dàng suy ra label vector của từng điểm dữ liệu.
Cố định Y, tìm M
Giả sử đã tìm được cluster cho từng điểm, hãy tìm center mới cho mỗi
cluster để hàm mất mát đạt giá trị nhỏ nhất.
Một khi chúng ta đã xác định được label vector cho từng điểm dữ liệu, bài toán
tìm center cho mỗi cluster được rút gọn thành:

Tới đây, ta có thể tìm nghiệm bằng phương pháp giải đạo hàm bằng 0, vì hàm
cần tối ưu là một hàm liên tục và có đạo hàm xác định tại mọi điểm. Và quan
trọng hơn, hàm này là hàm convex (lồi) - một mảng cực kỳ quan trọng trong
toán tối ưu - theo mj nên chúng ta sẽ tìm được giá trị nhỏ nhất và điểm tối ưu
tương ứng
Đặt (mj) là hàm bên trong dấu arg min, ta có đạo hàm:

Giải phương trình đạo hàm bằng 0 ta có:


17


Nếu để ý một chút, chúng ta sẽ thấy rằng mẫu số chính là phép đếm số lượng
các điểm dữ liệu trong cluster j. Còn tử số chính là tổng các điểm dữ liệu trong
cluster j.
Hay nói một cách đơn giản hơn nhiều: mj là trung bình cộng của các điểm
trong cluster j.
Tên gọi K-means clustering cũng xuất phát từ đây.
Tóm tắt thuật toán
Tới đây tôi xin được tóm tắt lại thuật toán (đặc biệt quan trọng với các bạn bỏ
qua phần toán học bên trên) như sau:
Đầu vào: Dữ liệu X và số lượng cluster cần tìm K.
Đầu ra: Các center M và label vector cho từng điểm dữ liệu Y.
1. Chọn K điểm bất kỳ làm các center ban đầu.
2. Phân mỗi điểm dữ liệu vào cluster có center gần nó nhất.
3. Nếu việc gán dữ liệu vào từng cluster ở bước 2 không thay đổi so với vòng lặp

trước nó thì ta dừng thuật toán.
4. Cập nhật center cho từng cluster bằng cách lấy trung bình cộng của tất các các

điểm dữ liệu đã được gán vào cluster đó sau bước 2.
5. Quay lại bước 2.

18


Chúng ta có thể đảm bảo rằng thuật toán sẽ dừng lại sau một số hữu hạn vòng
lặp. Thật vậy, vì hàm mất mát là một số dương và sau mỗi bước 2 hoặc 3, giá trị
của hàm mất mát bị giảm đi. Theo kiến thức về dãy số trong chương trình cấp

3: nếu một dãy số giảm và bị chặn dưới thì nó hội tụ! Hơn nữa, số lượng cách
phân nhóm cho toàn bộ dữ liệu là hữu hạn nên đến một lúc nào đó, hàm mất
mát sẽ không thể thay đổi, và chúng ta có thể dừng thuật toán tại đây.

2.4.2.3.

Hạn chế
Chúng ta cần biết số lượng cluster cần clustering
Để ý thấy rằng trong thuật toán nêu trên, chúng ta cần biết đại lượng K là số
lượng clusters. Trong thực tế, nhiều trường hợp chúng ta không xác định được
giá trị này. Có một số phương pháp giúp xác định số lượng clusters. Bạn đọc có
thể tham khảo Elbow method - Determining the number of clusters in a data
set.
Nghiệm cuối cùng phụ thuộc vào các centers được khởi tạo ban đầu

19


Tùy vào các center ban đầu mà thuật toán có thể có tốc độ hội tụ rất chậm, ví
dụ:

hoặc thậm chí cho chúng ta nghiệm không chính xác (chỉ là local minimum điểm cực tiểu - mà không phải giá trị nhỏ nhất):

20


Cách đơn giản để khắc phục đó là chạy K-means clustering nhiều lần với các
center ban đầu khác nhau rồi chọn các hàm có mất mát cuối cùng bé nhất.
Các cluster cần có só lượng điểm gần bằng nhau
Dưới đây là một ví dụ với 3 cluster với 20, 50, và 1000 điểm. Kết quả cuối

cùng không chính xác.

Các cluster cần có dạng hình tròn
Tức các cluster tuân theo phân phối chuẩn và ma trận hiệp phương sai là ma
trận đường chéo có các điểm trên đường chéo giống nhau.
Dưới đây là 1 ví dụ khi 1 cluster có dạng hình dẹt.

21


Khi một cluster nằm phía trong 1 cluster khác
Đây là ví dụ kinh điển về việc K-means clustering không thể phân cụm dữ liệu.
Một cách tự nhiên, chúng ta sẽ phân ra thành 4 cụm: mắt trái, mắt phải, miệng,
xunh quanh mặt. Nhưng vì mắt và miệng nằm trong khuôn mặt nên K-means
clustering không thực hiện được:

22


Mặc dù có những hạn chế nhưng K-means clustering vẫn cự kì quan trọng
trong xử lý ảnh cũng như là nền tảng cho nhiều thuật toán sau này. Chúng ta
cần bắt đầu từ những thứ đơn giản:” Simple is best”.
2.4.3.4.

Phân tích 1 ví dụ cụ thể
Đề bài: Giả sử ta có 4 loại thuốc A, B, C, D, mỗi loại thuộc được biểu diễn bởi
2 đặc trưng X và Y như sau. Mục đích của ta là nhóm các thuốc đã cho vào 2
nhóm (K=2) dựa vào các đặc trưng của chúng:

Object


Feature 1 (X):
weight index
1
2
4
5

Medicine A
Medicine B
Medicine C
Medicine D

Feature 2 (Y): pH
1
1
3
4

Bước 1: Khởi tạo tâm (centroid) cho 2 nhóm. Giả sử ta chọn A là tâm của
nhóm thứ nhất (tọa độ tâm nhóm thứ nhất c 1 (1,1)) và B là tâm của nhóm thứ 2
(tạo độ tâm nhóm thứ hai c2 (2,1)).

Bước 2: Tính khoảng cách từ các đối tượng đến tâm của các nhóm (Khoảng
cách Euclidean).

23


c1(1,1) group 1.

c1(2,1) group 2.
- Mỗi cột trong ma trận khoảng cách (D) là một đối tượng (cột thứ nhất tương
ứng với đối tượng A, cột thứ 2 tương ứng với đối tượng B…). Hàng thứ nhất
trong ma trận khoảng cách biểu diễn khoảng cách giữa các đối tượng đến tâm
của nhóm thứ nhất (c1) và hàng thứ 2 trong ma trận khoảng cách biểu diễn
khoảng cách của các đối tượng đến tâm của nhóm thứ 2 (c2).
- Ví dụ, khoảng cách từ loại thuốc C= (4,3) đến tâm c1(1,1) là 3.61 và đến tâm
c2(2,1) là 2.83 được tính như sau:
c1(1,1)
c2(2,1)
Bước 3: Nhóm các đối tượng vào nhóm gần nhất
Ta thấy rằng nhóm 1 sau vòng lặp thứ nhất gồm có 1 đối tượng A và nhóm 2
gồm các đối tượng còn lại B, C, D.

24


Bước 4: Tính lại tọa độ các tâm cho các nhóm mới dựa vào tọa độ của các đối
tượng trong nhóm. Nhóm 1 chỉ có 1 đối tượng A nên tâm nhóm 1 vẫn không
đổi, c1(1,1). Tâm nhóm 2 được tính như sau:
Nguồn:

Bước 5: Tính lại khoảng cách từ các đối tượng đến tâm mới

Bước 6: Nhóm các đối tượng vào nhóm

Bước 7: Tính lại tâm mới

Bước 8. Tính lại khoảng cách từ các đối tượng đến tâm mới


Bước 9. Nhóm các đối tượng vào nhóm

25


×