bao cao kd tree

15
Cu trúc dliệu đọc ảnh kích thước ln 2010 Page 1 TRƯỜNG ĐẠI HC KHOA HC TNHIÊN KHOA TOÁN TIN HC BÁO CÁO ĐỀ TÀI CU TRÚC DLIU Nhóm Sinh viên Trn Giang Nam 0811094 Nguyn Hng Quy 0811137 Nguyn Hoàng Quc 0811300 Giáo viên hướng dn TS. Phm Thế Bo --2010--

Upload: dongchirua

Post on 02-Jan-2016

207 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 1

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA TOÁN – TIN HỌC

BÁO CÁO ĐỀ TÀI

CẤU TRÚC DỮ LIỆU

Nhóm Sinh viên Trần Giang Nam 0811094

Nguyễn Hồng Quy 0811137

Nguyễn Hoàng Quốc 0811300

Giáo viên hướng dẫn TS. Phạm Thế Bảo

--2010--

Page 2: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 2

ÁP DỤNG CẤU TRÚC DỮ LIỆU CÂY NHỊ PHÂN TRÊN KHÔNG

GIAN HAI CHIỀU VÀ THUẬT TOÁN TÌM KIẾM LÁNG GIỀNG GẦN

NHẤT ĐỂ ĐỌC ẢNH CÓ KÍCH THƯỚC LỚN

1. Giới thiệu

Việc đọc ảnh kích thước là một nhu cầu thiết yếu trong nhiều ngành khoa

học và đời sống hiện nay. Tuy nhiên ta thường gặp nhiều khó khăn trong việc đọc

trực tiếp những bức ảnh kích thước lớn. Ảnh vệ tinh là một ví dụ. Ta biết rằng ảnh

chụp của một vệ tinh về một phần nào đó của một hành tinh hoặc vũ trụ đều là

những ảnh có kích thước rất lớn. Những ảnh này được truyền về mặt đất sau khi

chụp và yêu cầu đầu tiên đặt ra cho những người tiếp nhận là làm sao đọc được nó.

Tất nhiên việc đọc trực tiếp là không thể, vì bộ nhớ của máy có giới hạn rất nhỏ so

với kích thước ảnh. Một ví dụ khác trong xử lý ảnh lớn là các ứng dụng bản đồ trên

mạng (như diadiem.com, googleearth...[1]), việc lưu trữ và đọc trực tiếp những bức

ảnh bản đồ lớn bao quát một phần diện tích lớn trên mạng là điều khó khả thi.

Page 3: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 3

Hình 1. Bản đồ trên mạng tại trang web www.diadiem.com

Bởi cách đọc trực tiếp gặp nhiều khó khăn, nên yêu cầu phải xây dựng một

cấu trúc dữ liệu (CTDL) đọc ảnh kích thước lớn đã được đặt ra. Đối với một bức

ảnh lớn, thường thì người ta chỉ quan tâm một vùng nào đó trong ảnh, theo đó một

tư tưởng phổ biến trong việc xây dựng CTDL là cắt ảnh thành nhiều ảnh nhỏ hơn,

tổ chức lưu trữ chúng và khi cần xử lý ta sẽ chỉ lấy những bức ảnh thuộc vùng cần

quan tâm lên để xử lý.

Trong bài báo cáo này, chúng tôi sẽ trình bày về CTDL cây nhị phân trên

không gian hai chiều (kd-tree in two dimentions) để lưu trữ hình ảnh và dùng thuật

toán tìm láng giềng gần nhất (Nearest neighbor search) để truy cập tới những bức

ảnh thuộc vùng cần quan tâm. Các thuật toán sẽ được trình bày chi tiết ở dưới.

Phần đánh giá kết quả chúng tôi sẽ chạy chương trình minh họa thuật toán trên một

bức ảnh 10Mb.

2. Ý tưởng chung

Ảnh lớn ban đầu sẽ được cắt thành các ảnh hình vuông nhỏ có kích thước

bằng nhau. Mỗi ảnh nhỏ đó gọi là một ảnh đơn vị. Tiếp đó, ta đánh dấu tọa độ của

các ô vuông nhỏ đó trong bức ảnh lớn. Như vậy là ta đã tiến hành cắt nhỏ tấm ảnh

ban đầu.

Sau khi chia nhỏ ảnh, ta sẽ xây dựng một CTDL để lưu trữ ảnh. CTDL

chúng tôi chọn là CTDL cây nhị phân trên không gian 2 chiều. Mỗi đỉnh trên cây

sẽ tương ứng tọa độ một tấm ảnh đơn vị. Về chi tiết xây dựng cây chúng tôi sẽ

trình bày kỹ ở phần dưới.

Tiếp đó, chúng tôi sẽ tạo một khung nhìn gồm n2 ô vuông nhỏ (gọi là ô

vuông đơn vị). Mỗi ô vuông đơn vị sẽ tương ứng với một tấm ảnh đơn vị. Khung

nhìn có thể lớn hay nhỏ tùy theo việc chọn n. Khi ta cần xử lý một vùng nào đó của

ảnh lớn, ta chỉ việc tải n2 tấm ảnh đơn vị thuộc lân cận vùng cần xét lên khung nhìn

để xử lý.

Trong chương trình minh họa, để đơn giản, chúng tôi chọn khung nhìn 32 ô

như ở hình 2. Khi muốn xét một tọa độ nào đó trong ảnh lớn, ta sẽ phân tích tọa độ

đó thuộc ảnh đơn vị nào và tải ảnh đó củng 8 ảnh xung quanh lên khung nhìn để xử

lý. Việc tìm tọa độ thuộc ảnh đơn vị nào sẽ được thực hiện bằng thuật toán tìm

kiếm láng giềng gần nhất.

Page 4: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 4

Hình 2. Khung nhìn để đọc ảnh

Sau khi tải ảnh lên, ta sẽ có một tấm ảnh ban đầu. Trong khung nhìn sẽ có

một số tọa độ cố định (chấm màu xanh trong hình 2) để làm chuẩn và một con trỏ

đặt ở một vị trì mặc định nào đó, trong trường hợp này con trỏ đặt ở tâm khung

nhìn. Con trỏ này tượng trưng cho tọa độ trong ảnh lớn mà ta muốn quan sát. Khi

ta muốn di chuyển khung nhình tới các vùng khác của ảnh (có 4 thao tác di chuyển

khung nhìn: di chuyển lên, di chuyển xuống,di chuyển sang trái, di chuyển sang

phải), ta chỉ việc thay đổi lại tọa độ con trỏ và tải lại các ảnh tương ứng với con trỏ

mới lên khung nhìn.

3. Xây dựng cây nhị phân trên không gian hai chiều

3.1. Giới thiệu về cây nhị phân trên không gian k chiều

Cây nhị phân trên không gian k chiều [2],[4] (kd tree hay k-dimentions tree)

là một cấu trúc dữ liệu phân hoạch không gian k chiều. Theo đó, mỗi đỉnh của cây

sẽ chia không gian thành hai phần bằng một siêu phẳng k-1 chiều xác định bởi tọa

độ của đỉnh đó và một chiều nào đó trong k chiều. Các chiều dùng để chia thay đổi

tuần tự theo từng cấp của cây.

Về bản chất đây là một cây nhị phân (vì mỗi đỉnh của cây sẽ có tối đa 2

nhánh con tương ứng với hai vùng không gian được chia). Điểm đặc biệt ở đây là

các đỉnh của cây là những điểm phân chia không gian thành nhiều phần. Việc phân

chia không gian như vậy sẽ thuận tiện cho ta trong việc tìm kiếm những điểm trong

cây gần với một điểm nào đó trong vùng không gian nhất. Tức là khi muốn tìm

Page 5: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 5

những điểm thuộc cây gần với một điểm nào đó trong không gian ta sẽ dựa trên

một số phép phân hoạch không gian để loại bỏ các vùng không gian không cần

thiết, như vậy sẽ giúp thu hẹp được không gian tìm kiếm.

Để minh họa rõ hơn cho các ý nói ở trên, chúng ta sẽ xét ví dụ với một cây

nhị phân trong không gian hai chiều ở dưới đây. Cây nhị phân trên không gian hai

chiều là một trường hợp của cây nhị phân trên không gian k chiều với k có giá trị là

2.

Trong không gian hai chiều, cho tập hợp các điểm sau: {(2,3), (5,4), (9,6),

(4,7), (8,1), (7,2)}.

Hình ảnh của chúng

trong không gian

được mô tả như hình

bên

Đầu tiên, chúng ta sẽ

phân hoạch không

gian theo chiều x. Ta

chọn (7,2) làm nút ở

cây và chia không

gian thành hai phần,

một phần có tọa độ x

nhỏ hơn 7, phần còn

lại có tọa độ không

nhỏ hơn 7

Tiếp đó, đối với hai

nhánh con của cây,

ta sẽ thực hiện phân

hoạch theo y. Nhánh

bên trái lấy (5,4) làm

nút, nhánh bên phải

lấy (9,6) làm nút.

Page 6: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 6

Cứ tiếp tục chia như

thể với x, y lần lượt

đổi vị trí cho nhau

đến khi không còn

chia được nữa, ta sẽ

thu được cây. Khi

đó, các nút lá là các

điểm cô lập thuộc

một vùng không gian

nào đó

Với không gian đã phân hoạch như trên, giả sử, để tìm kiếm một điểm trong

cây gần với một điểm trong không gian nhất, ta dùng một số phép toán để phân

hoạch loại bỏ những vùng không gian không cần thiết. Ví dụ, ta sẽ xét một hình

cầu tâm là điểm trong không gian, bán kính là một khoảng cách từ điểm đó đến

một đỉnh nào đó của đồ thị. Khi đó, ta chỉ cần tìm kiếm những điểm trên các vùng

không gian giao với hình tròn đó mà thôi. Trong quá trình tìm kiếm, nếu gặp điểm

có khoảng cách tốt hơn, thì bán kính của hình cầu sẽ giảm, hình cầu co lại, các

không gian giao với hình cầu sẽ giảm như vậy không gian tìm kiếm sẽ ngày càng

hẹp lại.

Ở hình 3, ta thầy hình tròn chỉ giao hai không gian màu xanh, không giao

các không gian màu nâu nên ta chỉ việc tìm kiếm trên các không gian màu xanh mà

không cần tìm ở không gian màu nâu.

Hình 3. Minh họa đặc trưng tìm kiếm trên không gian của kd tree

Cây nhị phân nhiều chiếu giúp ta có thể lưu trữ ảnh theo các lớp. Theo đó, ta

có thể tổ chức dữ liệu ở nhiều lớp khác nhau phục vụ cho nhiều mục đích, ví dụ

một lớp là ảnh đơn vị lớn, một lớp chứa ảnh đơn vị nhỏ hơn (phục vụ cho thao tác

Page 7: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 7

phóng to, thu nhỏ ảnh)... Do trong khuôn khổ của một đề tài môn học, chúng tôi

chỉ xây dựng cấu trúc dữ liệu đọc ảnh nên chỉ sử dụng cây nhị phân trên không

gian 2 chiều. Tức là chỉ lưu trữ một lớp ảnh để tải ảnh lên để quan sát.

3.2. Các phép toán

Vì cây nhị phân trên không gian hai chiều bản chất là một cây nên nó cũng

có các thao tác tương tự đối với cây như khởi tạo cây, thêm đỉnh, xóa đỉnh, duyệt

cây... Điểm khác là mỗi đỉnh lưu trữ một tọa độ trên không gian hai chiều nên ta

phải lưu lại một giá trị chỉ chiều của đỉnh. Ở phần này, chúng tôi chỉ trình bày một

số thao tác mà chúng tôi có sử dụng, các thao tác khác có thể xây dựng dễ dàng

tương tự như ở cây nhị phân thông thường.

3.2.1. Thêm một đỉnh vào cây

Việc thêm một đỉnh vào cây đơn giản giống như ở cây nhị phân tìm kiếm,

nhưng ở đây ta thêm một ràng buộc là những đỉnh ở mức chẵn của thì ta sẽ so sánh

theo y, những đỉnh ở mức lẻ của cây thì ta sẽ so sánh theo x. Ví dụ, với một đỉnh

(a,b) ở mức 3 thì nhánh con trái của nó sẽ chứa các đỉnh có hoành độ x nhỏ hơn a,

và nhánh con phải của nó sẽ chứa các đỉnh có hoành độ x không nhỏ hơn a.

3.2.2. Tạo cây

Để có được cây nhị phân trong không gian hai chiều. ta lần lượt thêm các

đỉnh vào cây. Nhưng việc thêm lần lượt hoặc bất kỳ các đỉnh vào cây dẫn tới một

việc là cây sẽ bị mất tính chất cân bằng dẫn đến việc truy xuất dữ liệu, điển hình là

hành vi tìm làng giềng gần nhất sẽ tốn một chi phí cao hơn và tính chất hiệu quả

của cây bị giảm đi.

Vì vậy người ta đề xuất phương pháp chọn trung vị để thêm lần lượt vào cây

để đảm bảo tính cân bằng của cây. Trung vị là điểm có vị trí sao cho có thể chia

cây thành hai phần có số đỉnh chênh lệch thấp nhất.

Để rõ hơn, ta sẽ xét bộ dữ liệu sau {(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)}

Đầu tiên, ta sắp xếp theo x: {(2,3), (4,7), (5,4), (7,2), (8,1), (9,6)}, sau đó ta

phân chia tập hợp hành hai nhánh, lấy phần tử (7,2) làm gốc. Vì chọn (7,2) sẽ làm

cho 2 nhánh con có độ chênh lệch ít nhất.

Page 8: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 8

Để ý thấy những điểm có x lớn hơn 7 sẽ được xếp bên phải, những điểm có

giá trị x nhỏ hơn 7 sẽ được xếp bên trái. Ta chon ra những phần tử là trung vị của

mỗi phần để thêm vào cây, trường hợp ví dụ này thì trung vị của nhánh trái sẽ là

(5,4) và trung vị của nhánh phải sẽ là (9,6).

Sau đó, lặp lại tương tự với mỗi nhánh với vai trò của x và y lần lượt thay

đổi cho nhau và tiếp tục lấy các trung vị.

Số lượng các đỉnh được chèn vào sẽ tăng theo dãy số cộng lũy thừa sau:

Added_Đỉnh= 20+2

1+2

2+…+2

k với k là số bước lập

Tiếp tục như thế cho đến khi cây được xây dựng xong.

3.2.3. Cấu trúc lưu trữ cây

Để lưu trữ cây, chúng tôi xây dựng cấu trúc tại mỗi đỉnh như hình dưới:

Trong đó, data là dữ liệu lưu trữ tọa độ của mỗi node, axis miêu tả vùng

không gian của toàn bộ các node là node con của node đó, level miêu tả mức của

node trong cây.

Page 9: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 9

struct area {

int xmax,ymax,xmin,ymin;

};

struct location{

int x,y;

};

struct Node {

location Data;

area axis;

int level;

Node *Left;

Node *Right;

} ;

struct KDTree {

Node *Root;

};

3.3. Dùng cây nhị phân trên không gian hai chiều để lưu trữ ảnh

Từ những ảnh đơn vị, ta tiến hành dùng phép toán tạo cây để lần lượt thêm

các ảnh đơn vị vào cây. Mội đỉnh của cây sẽ chứa tọa độ và con trỏ trỏ đến địa chỉ

của ảnh đơn vị tương ứng.

Do đối với một ảnh lớn sẽ có rất nhiều ảnh đơn vị nên việc xây dựng cây sẽ

tốn khá nhiều thời gian. Tuy nhiên đây chỉ là bước chuẩn bị nên thời gian có thể

không cần quan tâm lắm. Việc cần quan tâm là làm sao để truy cập nhanh đến

những vùng ảnh mà ta quan tâm. Chúng ta sẽ dùng thuật tóa tìm kiếm láng giềng

gần nhất để thực hiện công việc đó.

4. Thuật toán tìm kiếm láng giềng gần nhất

Đối với cây nhị phân k chiều, ta cần quan tâm tới việc với một điểm trong

không gian (điểm tìm kiếm) thì node nào trong cây có khoảng cách tới nó là gần

nhất. Thuật toán tìm láng giềng gần nhất sẽ được sử dụng để giải quyết vấn đề này.

Thuật toán sẽ có hiệu quả nhanh chóng bằng cách sử dụng tính chất của cây để loại

bỏ phần lớn không gian tìm kiếm.

Thuật toán được chúng tôi tham khảo tại [3], [4] và được sử dụng như sau :

Page 10: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 10

Bước 1: Bắt đầu từ node gốc, thuật toán sẽ xét hai nhánh con của node gốc,

sau đó so sánh khoảng cách 2 node con đến điểm cần tìm láng giềng, thuật toán sẽ

duyệt xuống node nào có khoảng cách tới điểm cần tìm gần hơn.

Trong quá trình tìm xét tới một node nào đó, thuật toán sẽ so sánh độ dài từ

điểm tỉm kiếm đến node đó. Nếu độ dài này là nhỏ nhất tới thời điểm hiện tại thì sẽ

cập nhất lưu node đó thành điểm gần nhất tạm thời.

Bước 2: Thực hiện bước 1 cho tới khi gặp một node lá thì dừng lại. Khi đó

ta sẽ có một điểm gần nhất ứng với toàn bộ phần đã duyệt.

Bước 3: Thự hiện dò ngược lại cây(bung đệ quy với các node còn lại được

so sánh khoảng cách lớn hơn) với các bước sau :

1. Nếu node đang xét có khoảng cách tới điểm tìm kiểm là nhỏ nhất

hiện tại thì cập nhật nó là điểm gần nhất.

2. Thuật toán sẽ tìm kiếm trong các phần còn lại của không gian bị

chia cắt (các nhánh còn lại của cây) có node nào của cây có khoảng cách tới điểm

đang xét là gần nhất hiện thời hay không. Thực hiện bằng cách xét quả cầu có tâm

là điểm tìm kiếm, bán kính là khoảng cách gần nhất hiện thời xem nó có giao với

các không gian bị chia cắt nào không rồi tiến hành so sánh với các điểm trong miền

không gian đó.

1. Đối với mỗi mặt phẳng giao với quả cầu, ta thực hiện duyệt

phần nhánh con tương ứng với mặt phẳng đó.

2. Đối với các nhánh không cắt quả cầu, thuật toán sẽ bỏ qua

nhánh đó.

Bước 4: khi quá trình duyệt quay trở về node gốc, thuật toán kết thúc.

Mở rộng: tìm N điểm gần nhất.

Trong trường hợp muốn tìm N node gần điểm tìm kiếm nhất, chúng ta có

nhiều cách dựa trên thuật toán tìm láng giềng gần nhất đã được trình bày phía trên,

ở đây chúng tôi đề xuất cải tiến thuật toán như sau: Trong quá trình tìm kiếm, khi

đã tìm được láng giềng gần nhất ta tiến hành bung độ lớn của bán kính vòng tròn

để tìm và đánh dấu những điểm được cho là gần nhất tiếp theo điểm đã tìm được.

Page 11: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 11

Để cho rõ hơn, chúng ta hãy quan sát minh họa ở hình 4. Quan sát hình 4.1,

đây là quá trình thực hiện bước 1 và 2 của thuật toán. Điểm màu xanh là điểm

trong không gian mà chúng ta đang xét, các điểm còn lại là các điểm của cây. Quan

sát theo chiều từ trái sang phải, từ trên xuống dưới. Thuật toán thực hiện theo mỗi

bước sẽ chọn một vùng không gian thuộc một trong hai nhánh của cây để xét. Ta

thấy cứ sau mỗi bước vùng không gian tìm kiếm được giảm đi một nửa. Không

gian cứ giảm như thế cho đến khi không giảm được nữa (gặp nốt lá). Trường hợp ở

hình 4.1, không gian sau cùng chỉ gồm 2 đỉnh. Khi đó ta sẽ tìm trong không gian

đó một đỉnh gần với đỉnh cần xét nhất (đỉnh màu đỏ). Nhưng đỉnh tìm được đó

chưa chắc là đỉnh gần nhất vì trong quá tình tìm kiếm ta đã loại bỏ khá nhiều

không gian. Bởi vậy ta phải tìm kiếm trong những vùng không gian đã bị loại bỏ

có điểm nào tốt hơn không. Tuy nhiên, để tránh việc tìm hết tất cả các vùng không

gian, ta chỉ tìm ở những vùng không gian giao với hình tròn tâm là điểm tìm đang

xét, bán kính là khoảng cách giữa điểm đó với đỉnh trong đồ thị mà ta vừa tìm

được (hình tròn màu xanh hình dưới). Theo đó, ta tiến hành bước ba như trong

hình 4.2.

Page 12: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 12

Hình 4.1. Minh họa bước 1,2 thuật toán tìm kiếm láng giềng gấn nhất

Ở hình 4.2, ta thấy thuật toán bắt đầu duyệt lại các nhánh đã bỏ đi, ta thấy ở

đây những điểm thuộc vùng không gian nào giao với hình tròn sẽ được biểu thị

bằng màu đỏ. Thuật toán chỉ tìm kiếm trên những điểm đó để phát hiện ra những

điểm tối ưu. Quan sát theo quá trình thực hiện ta thấy các điểm tối ưu sẽ được cập

nhật mới và vòng tròn sẽ ngày càng nhỏ hơn. Đối với những vùng không gian

không giao với hình tròn, chúng ta sẽ bỏ qua luôn mà không xét tới (vùng tô màu

xanh). Ta thấy ở hình cuối cùng, vùng màu xanh rất lớn trong khi những điểm màu

đỏ rất ít tức là ta đã thu hẹp không gian tìm kiếm rất nhiều.

Page 13: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 13

..........cứ tiếp tục xét các miền còn lại ta được các hình sau cùng.........

Hình 4.2. Minh họa bước 3 thuật toán tìm kiếm láng giềng gấn nhất

Vùng màu xanh là những vùng được loại bỏ vì không gia với hình tròn

Điểm màu đỏ là những điểm nằm trong vùng không gian giao với hình tròn

Page 14: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 14

5. Đánh giá kết quả và hướng phát triển

Trên đây là giao diện phần code minh họa cho thuật toán. Chương trình sẽ

đọc một phần ảnh lớn lên và tiến hành di chuyển khung nhìn dọc theo ảnh khi

người dùng thao tác. Để bít thêm chi tiết các bạn vui lòng tham khảo báo cáo chi

tiết trong tài liệu kèm theo.

Ưu điểm: thuật toán tìm kiếm láng giềng gần nhất chạy khá nhanh trên bộ

dữ liệu của chúng tôi.

Hạn chế: do thời gian thực hiện có hạn ,chưa được học và nắm vững về môi

trường lập trình trên window nên việc kiểm soát thời gian thực thi và chi phí bộ

nhớ chưa được tối ưu và ổn định. Bên cạnh đó do không có nhiều bộ dữ liệu mẫu

nên việc chúng tôi chưa đánh giá được thuật toán khi chạy với các dữ liệu rất lớn.

Hướng phát triển: xây dựng thêm nhiều lớp bằng việc xây dựng nhiều tầng

cây để phục vụ cho việc zoom hình ảnh.

Load ảnh .png để có dung lượng nhẹ hơn.

Sử dụng con trỏ chuột linh động bằng các công cụ hỗ trợ của phần

mềm lập trình window để thay đổi giá trị con trỏ một cách tự do.

Xây dựng cây kd-tree đa chiều để xây dựng nhiều lớp khác nhau cho

bản đồ, ví dụ các lớp ghi chú, tên địa điểm hoặc tìm đường đi trên bản đồ.

Page 15: Bao cao Kd tree

Cấu trúc dữ liệu đọc ảnh kích thước lớn 2010

Page 15

6. Tài liệu tham khảo

[1] Một số địa chỉ trên mạng ứng dụng ảnh lớn: http://www.hanoi1000.vn/ Bức ảnh chụp Hà Nội ghép từ 1000 tấm ảnh nhỏ

http://www.diadiem.com/vn/ Trang web bản đồ thành phố

http://www.google.com/earth/index.html Ứng dụng mô phỏng hành tinh của google

[2] Andrew W.Moore, An introductory tutorial on kd-tree, Carnegie Mellon University,

Canada.

[3] Robert F. Sproull, Refinements to Nearest-Neighbor Searching in k-Dimensional

Trees

[4] Một số demo của kd tree

http://donar.umiacs.umd.edu/quadtree/points/kdtree.html

http://www.cs.cmu.edu/~awm/animations/kdtree/

http://www.codeproject.com/KB/architecture/KDTree.aspx