Lựa chọn điểm mẫu và tớnh khoảng cỏch giữa trọng tõm đa giỏc và điểm mẫu

Một phần của tài liệu Tra cứu ảnh dựa trên lợc đồ khoảng cách và biểu diễn hình dạng (Trang 31 - 43)

3.1.3.1 í tƣởng

Trong mục này chỳng ta cần giải quyết được hai vấn đề, thứ nhất là lựa chọn điểm mẫu trờn cỏc cạnh biờn sao cho hợp lý, thứ 2 là tớnh khoảng cỏch giữa cỏc điểm mẫu đú đú tới trọng tõm đa giỏc.

* Xỏc định vị trớ và số lƣợng cỏc điểm mẫu:

Đầu vào xử lý bao gồm :

- Tổng số lượng điểm ảnh của cỏc cạnh biờn của đối tượng, giỏ trị này được tớnh trong quỏ trỡnh lưu cỏc tọa độ của biờn.

- Số lượng điểm mẫu ước lượng sử dụng trờn biờn đú, do người dựng nhập vào hoặc được gỏn trong quỏ trỡnh phỏt triển chương trỡnh.

- Số lượng điểm ảnh (chiều dài) của cạnh biờn đang xột, cú thể xỏc định được số lượng điểm ảnh trong quỏ trỡnh xỏc định đỉnh đa giỏc.

Về mặt bản chất của đồ họa mỏy tớnh, cỏc điểm ảnh được bố trớ theo dạng ma trận và tọa độ là kiểu số nguyờn. Cho nờn việc xỏc định điểm ảnh tương ứng với vị trớ của tọa độ thực tế phải dựa trờn nguyờn tắc làm trũn và chuyển đổi về dạng số nguyờn.

Sau khi đó xỏc định được số điểm mẫu trờn cạnh biờn chỳng ta duyệt từng điểm ảnh trờn biờn đú theo thứ tự và đỏnh dấu điểm ảnh đú lại sao cho cỏc điểm mẫu này được cỏch đều trờn biờn, và chia biờn đú thành cỏc đoạn bằng nhau.

* Tớnh khoảng cỏch giữa Cỏc điểm mẫu và trọng tõm của đa giỏc

Đầu vào là tọa độ của điểm mẫu và điểm trọng tõm đa giỏc, theo cụng thức (eq. 5) chỳng ta xõy dựng phương thức tớnh khoảng cỏch giữa hai điểm trờn ma trận tọa độ.

32

3.1.3.2 Thuật toỏn

* Xỏc định vị trớ và số lƣợng cỏc điểm mẫu

Đầu vào: Danh sỏch p kiểu List<Point> chứa tập tọa độ của đa giỏc được xếp theo thứ tự ngược chiều kim đồng hồ.

Xử lý:

List<int>; // Số điểm ảnh trờn một cạnh

int count, tempcount, SNum,a,SDistance, Index; List<Point> ls_Point; // Danh sỏch đỉnh

List<Point> SCoordinates; // Danh sỏch tọa độ điểm mẫu Index = 0;

for(int i = 0; i < length(p); i++) { count = count + 1; Side[Index].X = p[i].X; Side[Index].Y = p[i].Y; p.RemoveAt(i); if(FindVertex(p[i].X,p[i].Y) == true) {

SNum = (count / length(p)) * a; SDistance = count / (SNum + 1); for(i = SDistance; i < Side; i++) { SCoordinates[j].X = p[i].X; SCoordinates[j].Y = p[i].Y; SNum = 0; SDistance = 0; } } }

Đầu ra: Trả về danh sỏch tọa độ cỏc điểm mẫu SCoordinates

* Tớnh khoảng cỏch giữa Cỏc điểm mẫu và trọng tõm của đa giỏc Đầu vào:

- Danh sỏch chứa tọa độ cỏc điểm mẫu SCoordinates kiểu List<Point> - Tọa độ trọng tõm của đa giỏc kiểu Point

33

Xử lý:

List<float> Distances;

for(int i = 0; i < length(SamplePointCoordinates); i++) {

Distance[i] = Distance(Point.X, SCoordinates[i].X, Point.Y, SCoordinates[i].Y); }

Đầu ra: Trả về danh sỏch Distances chứa cỏc khoảng cỏch từ trọng tõm tới cỏc điểm mẫu theo thứ tự.

3.1.3.2 Bài toỏn cụ thể (adsbygoogle = window.adsbygoogle || []).push({});

Vớ dụ hỡnh 3.1: Tổng số điểm ảnh là 35 pixel, cú cỏc đỉnh lần lượt là: (7,1), (2,6), (2,14), (6,11), (8,13), (14,7), (13,3), (10,4).

Xột từ (7,1) đến (2,6): Cú 6 điểm ảnh cạnh nhau nờn chiều dài cạnh này là 6. Số lượng điểm mẫu khoảng 8 điểm.

Từ cụng thức (eq. 4) Ni = = 8 = 1

Vậy cú 1 điểm căng đều 2 đỉnh trờn đoạn từ (7,1) đến (2,6) là (4,4).

34 (4,4), (2,10), (4,13), (11,10), (14,5)

Trọng tõm đa giỏc là C(7,7)

Tớnh lần lượt khoảng cỏch từ trọng tõm đến cỏc điểm mẫu:

D* = {5; 5.385; 5.83; 4.472; 7.615} {0.656; 0.707; 0.765; 0.587; 1}

3.1.4 Chuẩn húa khoảng cỏch 3.1.4.1 í tƣởng

Nhằm đảm bảo khi thay đổi kớch thước đối tượng theo tỉ lệ bất kỡ mà khụng làm ảnh hưởng đến việc so sỏnh, trước khi xõy dựng lược đồ khoảng cỏch chỳng ta cần chuẩn húa cỏc khoảng cỏch. Chỳng ta xỏc định khoảng cỏch lớn nhất trong những khoảng cỏch đó thu được ở trờn. Sau đú lấy lần lượt cỏc khoảng cỏch chia cho khoảng cỏch lớn nhất đấy. Chỳng ta sẽ thu được một dóy khoảng cỏch thuộc khoảng [0,1]. Khi đú sự thay đổi về kớch thước bất kỡ của đối tượng sẽ khụng làm ảnh hưởng tới kết quả so sỏnh hỡnh dạng đối tượng.

3.1.4.2 Thuật toỏn

Đầu vào: Danh sỏch chứa cỏc giỏc trị khoảng cỏch của đa giỏc đang xột D kiểu List<float> Xử lý:

List<float> DNormal; float Max;

Max = D[0];

35 {

if(D[i] > Max) Max = D[i]; }

for(int i = 0; i < length(D); i++) {

DNormal [i] = D[i] / Max; }

Đầu ra: Danh sỏch chứa cỏc khoảng cỏch đó chuẩn húa DNormal 3.1.4.3 Bài toỏn cụ thể

Áp dụng vào vớ dụ một đa giỏc trong hỡnh 3.1, với D* thu dược, chỳng ta chuẩn húa về khoảng [0,1].

D* = {5; 5.385; 5.83; 4.472; 7.615} {0.656; 0.707; 0.765; 0.587; 1} Giỏ trị cực đại trong cỏc khoảng cỏch này là Dmax = 7.615

Chỳng ta sẽ cú tập giỏ trị sau chuẩn húa:

d[] = {0.656; 0.707; 0.765; 0.587; 1}

3.1.5 Xõy dựng lƣợc đồ khoảng cỏch 3.1.5.1 í tƣởng

í tưởng xõy dựng lược đồ khoảng cỏch là phõn chia cỏc giỏ trị khoảng cỏch, hay núi cỏch khỏc kớch thước tập cỏc bỏn kớnh đa giỏc vào cỏc nhúm dựa trờn cỏc ngưỡng xỏc định, ở đõy đề xuất chia thành 5 khoảng.

36 Ta sẽ cú cỏc khoảng ngưỡng sau:

[0, 0.2], [0.2, 0.4], [0.4, 0.6], [0.6, 0.8], [0.8, 1]

Cơ sở dữ liệu chỳng ta tạo ra một bảng lưu giỏ trị lược đồ khoảng cỏch Distance_Histogram liờn kết với ảnh bao gồm cỏc trường như sau: (idhistogram, d0,d1,d2,d3,d4) trong đú idhistogram là khúa chớnh liờn kết với khúa ngoại của bảng chứa ảnh và thụng tin ảnh, d0 là vựng 1, d1 là vựng 2… tương tự chỳng ta sẽ cú 5 vựng tương ứng với 5 trường d0 tới d4 trong bảng Distance_Histogram.

3.1.6.2 Thuật toỏn Đầu vào:

- Bao gồm một danh sỏch chứa tập cỏc giỏ trị khoảng cỏch d kiểu List<float>. (adsbygoogle = window.adsbygoogle || []).push({});

Xử lý:

int c1, c2, c3, c4, c5; c1 = c2 = c3 = c4 = c5 = 0; for(int i = 0; i < length(d); i++) {

if(d[i] >= 0 and d[i] <= 0.2) c1 = c1 + 1;

Insert(c1,InsertTo_d1);

else if(d[i] >= 0.2 and d[i] <= 0.4) c2 = c2 + 1;

Insert(c2,InsertTo_d2);

37 c3 = c3 + 1;

Insert(c3,InsertTo_d3);

else if(d[i] >= 0.6 and d[i] <= 0.8) c4 = c4 + 1;

Insert(c4,InsertTo_d4);

else if(d[i] >= 0.8 and d[i] <= 1) c5 = c5 + 1;

Insert(c5,InsertTo_d5); }

Đầu ra: Đõy là phương thức khụng cú giỏ trị trả về.

3.1.6.3 Bài toỏn cụ thể

Trở lại thớ dụ hỡnh 3.1:

d[] = {0.656; 0.707; 0.765; 0.587; 1}

i [0, n-1] là tập chứa khoảng cỏch; Cho R = 5; d[i]max = 1. Ta sẽ thu được cỏc khoảng:

[0, 0.2], [0.2, 0.4], [0.4, 0.6], [0.6, 0.8], [0.8, 1] Xếp d[i] vào cỏc khoảng:

d[4] [0.8, 1]

d[0], d[1], d[2] [0.6, 0.8] d[3] [0.4, 0.6]

38

Hỡnh 3.2: Lược đồ khoảng cỏch đa giỏc hỡnh 3.1

3.1.6 Độ đo tƣơng tự 3.1.6.1 í tƣởng

Phương phỏp đo độ tương tự được đề xuất trong bỏo cỏo này là dựa trờn biểu diễn hỡnh dạng của lược đồ khoảng cỏch, trục khoảng cỏch của lược đồ được chia thành nhiều phần ký hiệu mỗi vựng là d[i], với , Lược đồ khoảng cỏch biểu diễn bởi D:

D : (d0, d1, d2, …, dn-1) Giả sử cú hai lược đồ: D1: (d10,d11,d12,..d1(n-1)). D2: (d20,d21,d22,..d2(n-1)).

Áp dụng cụng thức eq. 6 chỳng ta sẽ thu được khoảng cỏch giữa hai lược đồ Sim(D1, D2) = ( eq. 6)

3.1.6.2 Thuật toỏn

Đầu vào: Danh sỏch D1 và Danh sỏch D2 kiểu int Xử lý:

float Sum; double Sim;

for(int i = 0; i <= 7; i++) { (adsbygoogle = window.adsbygoogle || []).push({});

Sum = (D1[i] - D2[i]) * (D1[i] - D2[i]); }

39 Sim = sqrt((double)Sum);

Đầu ra: Trả về giỏ trị độ tương tự Sim 3.1.6.3 Áp dụng thực tế

Hỡnh 3.1 cho chỳng ta lược đồ khoảng cỏch D1 = {0, 0, 1, 3, 1}

Giả sử một đa giỏc sau khi xử lớ ta được lược đồ khoảng cỏch D2 = {0, 2, 2, 3, 0} Độ tương đồng giữa D1 và D2 là: Sim = = 2.4495

Cú một đa giỏc khỏc với lược đồ khoảng cỏch D3 = {2, 1, 0, 2, 3} Độ tương đồng giữa D1 và D3 là: Sim = = 3.3166

Vậy đa giỏc cú lược đồ khoảng cỏch D2 và D1 là tương tự nhau.

3.2 Giao diện chƣơng trỡnh

3.2.1 Giao diện tỡm kiếm và kết quả

40

3.2.2 Cơ sở dữ liệu ảnh

41

1.2.3 Lƣợc đồ khoảng cỏch

Hỡnh 3.5: Lược đồ khoảng cỏch

3.3 Kết luận chƣơng

Qua quỏ trỡnh phỏt biểu ý tưởng, trỡnh bày thuật toỏn và lấy vớ dụ thực tế chỳng ta đó từng bước đưa ra được lược đồ khoảng cỏch biểu diễn hỡnh dạng cho đa giỏc và tớnh toỏn, đo độ tương tự của đa giỏc khỏc so với đa giỏc ban đầu.

42

KẾT LUẬN

Đồ ỏn đó cú cỏc kết quả sau:

Đồ ỏn đó trỡnh bày phương phỏp tra cứu hỡnh dạng tương tự dựa trờn lược đồ khoảng cỏch và biểu diễn hỡnh dạng, qua đú giỳp tra cứu hỡnh ảnh.

Đồ ỏn đó trỡnh bày được cấu trỳc một hệ thống tra cứu ảnh, cỏc đặc trưng thường được sử dụng trong hệ thống này. Ngoài ra cũn cỏc ứng dụng của tra cứu ảnh trong đời sống cũng như trong cỏc ngành khoa học, an ninh, bảo mật, …

Thụng qua ý tưởng về lược đồ khoảng cỏch và biểu diễn hỡnh dạng, đồ ỏn đó nờu lờn cỏc bước thực hiện, cơ sở lý thuyết để xõy dựng một hệ thống tra cứu ảnh dựa trờn nội dung.

Xõy dựng được chương trỡnh mụ phỏng theo phương phỏp đó trỡnh bày.

Hướng phỏt triển: Trong thời gian tới nếu cú điều kiện phỏt triển tiếp, em sẽ phỏt triển hệ thống từ lấy xấp xỉ hỡnh dạng của đối tượng, cú thể tối ưu hơn nữa dựa vào màu sắc và hỡnh dạng của đối tượng.

43

DANH MỤC TÀI LIỆU THAM KHẢO

Tiếng Việt

[1] Lương Mạnh Bỏ, Nguyễn Thanh Thủy, Nhập mụn xử lý ảnh số, NXBKHKT, năm 1999, Trang 7-8.

Tiếng Anh

[2] Xiaojun Q, Content-based Image Retrieval (CBIR) – Page. 14. (adsbygoogle = window.adsbygoogle || []).push({});

[3] Pradyna Rane, Pallavi Kulkarni, Suchita Patil and B.B. Mesram, IJCEM International Journal of Computational Engineering & Management, Vol. 14, October 2011, ISSN (Online): 2230- 7893 - Feature based image retrieval of images for CBIR.

[4] Jie-xian Zeng, Yong-gang Zhao, Xiang Fu: A Novel Shape Representation and Retrieval Algorithm: Distance Autocorrelogram. JSW 5(9): 1022-1029 (2010)

Website

[5] http://en.wikipedia.org/wiki/Content-based_image_retrieval

[6] http://mathworld.wolfram.com/PolygonArea.html

Một phần của tài liệu Tra cứu ảnh dựa trên lợc đồ khoảng cách và biểu diễn hình dạng (Trang 31 - 43)