Tải bản đầy đủ
2 Ứng dụng thuật toán FSC vào phân đoạn ảnh

2 Ứng dụng thuật toán FSC vào phân đoạn ảnh

Tải bản đầy đủ

Các hướng tiếp cận phân đoạn ảnh
Phân đoạn ảnh là chia ảnh thành các vùng không trùng lặp. Mỗi vùng gồm
một nhóm pixel đồng nhất theo một tiêu chí nào đó. Tiêu chí này phụ thuộc vào
mục tiêu của quá trình phân đoạn. Ví dụ như đồng nhất về màu sắc, mức xám, kết
cấu, độ sâu của các layer… Sau khi phân đoạn mỗi pixel chỉ thuộc về một vùng duy
nhất. Để đánh giá chất lượng của quá trình phân đoạn là rất khó. Vì vậy trước khi
phân đoạn ảnh cần xác định rõ mục tiêu của quá trình phân đoạn là gì. Xét một cách
tổng quát, ta có thể chia các hướng tiếp cận phân đoạn ảnh thành ba nhóm chính
như sau:
-

Các kỹ thuật phân đoạn ảnh dựa trên không gian đặc trưng,

-

Các kỹ thuật dựa trên không gian ảnh,

-

Các kỹ thuật dựa trên các mô hình vật lý.

Các phương pháp dựa trên không gian đặc trưng
Nếu chúng ta giả định màu sắc bề mặt của các đối tượng trong ảnh là một
thuộc tính bất biến và các màu sắc đó được ánh xạ vào một không gian màu nào đó,
vậy thì chúng ta sẽ coi mỗi đối tượng trong ảnh như là một cụm các điểm trong
không gian màu đó. Mức độ phân tán của các điểm ảnh trong một cụm được xác
định chủ yếu bởi sự khác biệt về màu sắc. Do đó, việc phân vùng các đối tượng
trong ảnh tương ứng với việc xác định các cụm.
Các phương pháp tiếp cận này chỉ làm việc trên một không gian màu xác định,
dựa trên không gian đặc trưng, ta có các phương pháp phân đoạn:
+ Phương pháp phân cụm không giám sát,
+ Phương pháp lấy ngưỡng histogram.
Các phương pháp dựa trên không gian ảnh
Hầu hết những phương pháp được đề cập trong phần trên đều hoạt động dựa
trên các không gian đặc trưng của ảnh (thông thường là màu sắc). Do đó, các vùng
ảnh kết quả là đồng nhất tương ứng với các đặc trưng đã chọn cho từng không gian.
Tuy nhiên, không có gì đảm bảo rằng tất cả các vùng này thể hiển một sự cô đọng
về nội dung xét theo ý nghĩa không gian ảnh (ý nghĩa các vùng theo sự cảm nhận

38

của hệ thần kinh con người). Mà đặc tính này là quan trọng thứ hai sau đặc tính về
sự thuần nhất của các vùng ảnh. Do các phương pháp gom cụm cũng như xác định
ngưỡng histogram đã nêu đều bỏ qua thông tin về vị trí của các pixel trong ảnh.
Trong các báo cáo khoa học về phân vùng ảnh mức xám, có khá nhiều kỹ
thuật cố thực hiện việc thoả mãn cùng lúc cả hai tiêu chí về tính đồng nhất trong
không gian đặc trưng của ảnh và tính cô đọng về nội dung ảnh. Tuỳ theo các kỹ
thuật mà các thuật giải này áp dụng, chúng được phân thành các nhóm sau:
Các thuật giải áp dụng kỹ thuật chia và trộn vùng,
Các thuật giải áp dụng kỹ thuật tăng trưởng vùng,
Các thuật giải áp dụng lý thuyết đồ thị,
Các giải thuật áp dụng mạng nơron,
Các giải thuật dựa trên cạnh.
Các phương pháp dựa trên mô hình vật lý
Tất cả các giải thuật được xem xét qua, không ít thì nhiều ở mặt nào đó đều có
khả năng phát sinh việc phân vùng lỗi trong các trường hợp cụ thể nếu như các đối
tượng trong ảnh màu bị ảnh hưởng quá nhiều bởi các vùng sáng hoặc bóng mờ, các
hiện tượng này làm cho các màu đồng nhất trong ảnh thay đổi nhiều hoặc ít một
cách đột ngột. Và kết quả là các thuật giải này tạo ra các kết quả phân vùng quá
mức mong muốn so với sự cảm nhận các đối tượng trong ảnh bằng mắt thường. Để
giải quyết vấn đề này, các giải thuật phân vùng ảnh áp dụng các mô hình tương tác
vật lý giữa bề mặt các đối tượng với ánh sáng đã được đề xuất. Các công cụ toán
học mà các phương pháp này sử dụng thì không khác mấy so với các phương pháp
đã trình bày ở trên, điểm khác biệt chính là việc áp dụng các mô hình vật lý để minh
hoạ các thuộc tính phản chiếu ánh sáng trên bề mặt màu sắc của các đối tượng.
3.2.2. Phân đoạn ảnh sử dụng thuật toán phân cụm trừ mờ FSC
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là
đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối
tượng trong không gian. Không gian màu RGB biểu điễn điểm ảnh với ba mầu red,
green và blue. Đây là mô hình màu cơ bản được sử dụng trong máy tính.
39

Một trong các hướng tiếp cận của phân đoạn ảnh dựa vào không gian đặc
trưng là phương pháp phân cụm dữ liệu.
Ứng dụng thực hiện với:
- Thuật toán phân cụm dữ liệu trừ mờ
- Ảnh biểu diễn bởi không gian RGB
- Ngôn ngữ Matlab
- Dữ liệu đầu vào là một ảnh
- Dữ liệu đầu ra là một ảnh đã được phân cụm
Một ảnh RGB, được lưu trữ trong Matlab dưới dạng một mảng dữ liệu có kích
thước 3 chiều m x n x 3 định nghĩa các giá trị màu red, green và blue cho mỗi điểm
ảnh riêng biệt. Màu của mỗi điểm ảnh được quyết định bởi sự kết hợp giữa các giá
trị R, G, B (Red, Green, Blue) được lưu trữ trong một mặt phẳng màu tại vị trí của
điểm ảnh. Định dạng file đồ hoạ lưu trữ ảnh RGB giống như một ảnh 24 bits trong
đó R, G, B chiếm tương ứng 8 bit một, mỗi thành phần màu có giá trị từ 0 đến 255.
Điều này cho phép nhận được 16 triệu màu khác nhau.
Một điểm ảnh mà thành phần màu của nó là (0, 0, 0) được hiển thị với màu
đen và một pixel mà thành phần màu là (255, 255, 255) được hiển thị với màu
trắng. Ba thành phần màu của mỗi điểm ảnh được lưu trữ cùng với chiều thứ 3 của
mảng dữ liệu. Chẳng hạn, giá trị màu R, G, B của điểm ảnh (10, 5) được lưu trữ
trong RGB(10, 5, 1), RGB(10, 5, 2) và RGB(10, 5, 3) tương ứng.
Ví dụ, để tính toán màu sắc của điểm ảnh tại hàng 2 và cột 3, ta nhìn vào bộ ba
giá trị được lưu trữ trong (2, 3, 1:3). Giả sử (2, 3, 1) chứa giá trị 51, (2, 3, 2) chứa
giá trị 16 và (2, 3, 3) chứa giá trị 6 thì màu sắc của điểm ảnh tại vị trí (2, 3) sẽ là
(51, 16, 6).
3.2.3 Thử nghiệm với thuật toán phân cụm trừ
Theo Chiu, các tham số ban đầu thường được chọn là ra = 0.25, η = 1.5, e =
0.5, e = 0.15. Tuy nhiên, việc lựa chọn bán kính ra tùy thuộc vào tập dữ liệu. Trong
thử nghiệm này, tập dữ liệu ban đầu là tập các điểm ảnh, mỗi điểm ảnh gồm 3 thành
phần R, G, B và mỗi thành phần nhận giá trị từ 0 đến 255. Do vậy ra là một giá trị
40

thuộc vào khoảng từ 0 đến 255, cụ thể chọn ra = 50. Các tham số khác sử dụng là η
= 1.5, e = 0.5, e = 0.15. Kết quả thu được 30 cụm.

Hình 3.6: Ảnh ban đầu của thuật toán phân cụm trừ

Hình 3.7: Ảnh kết quả của thuật toán phân cụm trừ
Thử nghiệm với bán kính cụm ra thay đổi, còn các tham số η = 1.5, e = 0.5,
e = 0.15 không đổi. Với đầu vào là ảnh .jpg có kích thước 121 x 184 x 3. Kết quả
thể hiện trong bảng sau:
STT
ra
Số
cụm

1
10
1180

2
20
246

3
30
90

4
40
50

5
50
32

6
60
22

7
70
12

8
80
9

9
90
6

10
100
7

Nhận xét:
41

- Do ảnh đầu vào có kích thước là 121 x 184 x 3 nên số lượng điểm dữ liệu
vào là 121 x 184 = 22264.
- Nhận thấy, bán kính ra càng nhỏ thì số lượng cụm thu được càng nhiều và
ngược lại. Nếu ra quá nhỏ (ra = 10) thì số lượng cụm thu được rất lớn (1180 cụm) so
với số điểm ảnh ban đầu (22264 điểm ảnh), nếu ra quá lớn (ra = 100) thì số lượng
cụm thu được rất ít (7 cụm).
3.2.4 Thử nghiệm với thuật toán phân cụm trừ mờ
Tương tự, tập dữ liệu ban đầu cũng là các điểm ảnh, mỗi điểm ảnh gồm 3
thành phần R, G, B và mỗi thành phần nhận giá trị từ 0 đến 255. Do vậy ra là một
giá trị thuộc vào khoảng từ 0 đến 255, cụ thể chọn ra = 20. Các tham số còn lại lựa
chọn như sau: η = 1.5, e = 0.5, e = 0.15, m = 2.27. Kết quả thu được 33 cụm.

Hình 3.8: Ảnh ban đầu của thuật toán phân cụm trừ mờ

42

Hình 3.9: Ảnh kết quả của thuật toán phân cụm trừ mờ
Thử nghiệm với tham số m thay đổi, còn các tham số ra = 20, η = 1.5, e =
0.5, e = 0.15 không đổi. Với đầu vào là ảnh .jpg có kích thước 114 x 170 x 3. Kết
quả thử nghiệm thể hiện trong bảng sau:
STT
m
Số
cụm

1
1.6
1817

2
1.7
1139

3
1.8
701

4
1.9
382

5
2
206

6
2.1
120

7
2.2
58

8
2.3
27

9
2.4
16

10
2.5
10

Nhận xét:
Kết quả phân cụm phụ thuộc vào tham số m, cụ thể nếu m càng nhỏ thì số
lượng cụm thu được càng nhiều và ngược lại, nếu m = 2 thì trở về thuật toán SC.
3.2.5 Thử nghiệm thuật toán phân SC và FSC trên cùng một ảnh
* Trường hợp 1:
- Lựa chọn các tham số cho cả hai thuật toán như sau: ra = 20, η = 1.5, e =
0.5, e = 0.15 và m = 2.27.
- Cho ảnh đầu vào là ảnh .jpg có kích thước 126 x 170 x 3 như sau:

43

Hình 3.10: Ảnh đầu vào cho cả 2 thuật toán
- Kết quả:

Hình 3.11: Ảnh kết quả của thuật toán SC với 122 cụm

Hình 3.12: Ảnh kết quả của thuật toán FSC với 18 cụm
44

* Trường hợp 2:
- Lựa chọn các tham số η = 1.5, e = 0.5, e = 0.15, m = 2.27 và thay đổi bán
kính cụm ra.
- Cho ảnh đầu vào là ảnh .jpg có kích thước 126 x 170 x 3 (như trên).
- Kết quả thực hiện của 2 thuật toán thể hiện trong bảng sau:
STT

ra

m

1
2
3
4
5

10
20
30
40
50

2.27
2.27
2.27
2.27
2.27

Số cụm
Thuật toán SC Thuật toán FSC
573
149
122
18
51
7
27
6
19
4

Nhận xét:
- Với cùng 1 ảnh đầu vào, khi lựa chọn các tham số ra, η , e , e như nhau,
nhưng thuật toán FSC có thêm tham số m thì kết quả nhận được rất khác nhau, cụ
thể số lượng cụm thu được từ thuật toán SC nhiều hơn FSC.
- Khi thay đổi tham số ra và giữ nguyên tham số m thì kết quả của thuật toán
SC thay đổi nhiều, còn kết quả của thuật toán FSC thay đổi ít. Vậy, thuật toán FSC
ít phụ thuộc vào bán kính cụm ra hơn thuật toán SC.

45

PHỤ LỤC
A. Cài đặt thuật toán SC
- Hàm tính mật độ ban đầu:
function [p]=matdo_dau(d,ra)
[n,m,s]=size(d);
for i=1:n
for j=1:m
p(i,j)=0;
for t=1:n
for k=1:m
if ((i~=t) && (j~=k) )
p(i,j)= p(i,j)+ exp((-4*((d(i,j,1)-d(t,k,1))^2+
(d(i,j,2)-d(t,k,2))^2+(d(i,j,3)d(t,k,3))^2)/ra^2));
end
end
end
end
end

- Hàm tính mật độ sau khi đã có tâm cụm đầu tiên:
function [p]=matdo_sau(q,a,ra,p1,csh1,csc1)
[n,m]=size(q);
for i=1:n
for j=1:m
p(i,j)= q(i,j)-p1*exp(-4*((a(i,j,1)-a(csh1,csc1,1))^2+
(a(i,j,2)-a(csh1,csc1,2))^2+(a(i,j,3)a(csh1,csc1,3))^2)/(2.25*ra^2));
end
end

- Thuật toán:
function [cshang,cscot,tc]=TT(a,ra,e1,e2)
q=matdo_dau(a,ra);
[cshang(1),cscot(1),md(1)]=tim_max(q);
tc(1,1)=a(cshang(1),cscot(1),1);
tc(1,2)=a(cshang(1),cscot(1),2);
tc(1,3)=a(cshang(1),cscot(1),3);
p=matdo_sau(q,a,ra,md(1),cshang(1),cscot(1));
dung=0;k=2;
while (dung==0)
[hang, cot,y]=tim_max(p);
pref=md(k-1);
q=p;
if (y>e1*pref)
cshang(k)=hang; cscot(k)=cot; md(k)=y;
tc(k,1)=a(hang, cot,1);
tc(k,2)=a(hang, cot,2);
tc(k,3)=a(hang, cot,3);
k=k+1;
p=matdo_sau(q,a,ra,y,hang,cot);
else
if (y
46

dung=1;
else

dm=d_min(a,hang,cot,cshang,cscot);
if ((dm/ra+y/pref)>=1)
cshang(k)=hang;cscot(k)=cot;md(k)=y;
tc(k,1)=a(hang, cot,1);
tc(k,2)=a(hang, cot,2);
tc(k,3)=a(hang, cot,3);
k=k+1;
p=matdo_sau(q,a,ra,y,hang,cot);
else
p(hang,cot)=0;
end

end

end

end

- SubClustering_ColorImage:
a = imread('5.jpg');
i=a;
e = single(i);
[cshang,cscot, tc] = TT(e, 40, 0.5, 0.15);
[m, kq] = do_phu_thuoc(cshang,cscot, e, 40);
Ikq = xuly(cshang,cscot, kq, i, tc);
imshow(Ikq);

B. Cài đặt thuật toán FSC
- Hàm tính mật độ ban đầu:
function [p]=matdo_dau(d,ra,tsm)
[n,m,s]=size(d);
alpha = 4/(ra)^2;
mu = 2/(tsm-1);
for i=1:n
for j=1:m
p(i,j)=0;
for t=1:n
for k=1:m
if ((i~=t) && (j~=k))
kc = sqrt((d(i,j,1)-d(t,k,1))^2+(d(i,j,2)d(t,k,2))^2+(d(i,j,3)-d(t,k,3))^2);
p(i,j)=p(i,j)+ exp(-alpha*(kc^mu));
end
end
end
end
end

- Hàm tính mật độ sau khi đã có tâm cụm đầu tiên:
function [p]=matdo_sau(q,a,ra,p1,csh1,csc1,tsm)
[n,m]=size(q);
beta = 4/(1.5*ra)^2;
mu = 2/(tsm-1);
for i=1:n
for j=1:m

47

end

kc = sqrt((a(i,j,1)-a(csh1,csc1,1))^2+(a(i,j,2)a(csh1,csc1,2))^2+(a(i,j,3)-a(csh1,csc1,3))^2);
p(i,j)=q(i,j)-p1*exp(-beta*(kc^mu));
end

- Thuật toán:
function [cshang,cscot,tc]=TT(a,ra,e1,e2,tsm)
q=matdo_dau(a,ra,tsm);
[cshang(1),cscot(1),md(1)]=tim_max(q);
tc(1,1)=a(cshang(1),cscot(1),1);
tc(1,2)=a(cshang(1),cscot(1),2);
tc(1,3)=a(cshang(1),cscot(1),3);
p=matdo_sau(q,a,ra,md(1),cshang(1),cscot(1),tsm);
dung=0;k=2;
while (dung==0)
[hang, cot,y]=tim_max(p);
pref=md(k-1);
q=p;
if (y>e1*pref)
cshang(k)=hang; cscot(k)=cot; md(k)=y;
tc(k,1)=a(hang, cot,1);
tc(k,2)=a(hang, cot,2);
tc(k,3)=a(hang, cot,3);
k=k+1;
p=matdo_sau(q,a,ra,y,hang,cot,tsm);
else
if (ydung=1;
else
dm=d_min(a,hang,cot,cshang,cscot);
if ((dm/ra+y/pref)>=1)
cshang(k)=hang;cscot(k)=cot;md(k)=y;
tc(k,1)=a(hang, cot,1);
tc(k,2)=a(hang, cot,2);
tc(k,3)=a(hang, cot,3);
k=k+1;
p=matdo_sau(q,a,ra,y,hang,cot,tsm);
else
p(hang,cot)=0;
end
end
end
end

- FuzzySubClustering_ColorImage:
a = imread('5.jpg');
i=a;
e = single(i);
[cshang,cscot, tc] = TT(e, 10, 0.5, 0.15, 2.27);
[m, kq] = do_phu_thuoc(cshang,cscot, e, 10, 2.27);
Ikq = xuly(cshang,cscot, kq, i, tc);
imshow(Ikq);

48