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

Báo cáo tốt nghiệp xây dựng ảnh 3D

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 (2.54 MB, 68 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN

PHẦN MỀM XỬ LÝ ẢNH
TRÊN DI ĐỘNG VỚI DỮ LIỆU 3D

Sinh viên thực hiện : Nguyễn Văn Bình
Lớp CNTT1 – K55
Giáo viên hướng dẫn: ThS Lê Tấn Hùng

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

1


HÀ NỘI 5-2015
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin về sinh viên
Họ và tên sinh viên: Nguyễn Văn Bình
Điện thoại liên lạc: 01656.888.857
Email:

Lớp: CNTT1-K55
Hệ đào tạo:Đại học Chính
quy


Đồ án tốt nghiệp được thực hiện tại: Viện Công nghệ Thông tin và Truyền thông,
Đại học Bách Khoa Hà Nội
Thời gian làm ĐATN: Từ ngày 01/02/2015 đến 05/05/2015
2. Mục đích nội dung của ĐATN
- Tìm hiểu về đồ họa 3D, các phép biến đổi hình trong đồ họa 3D
- Tìm hiểu về dữ liệu 3D, các loại định dạng, các thông số trong định dạng dữ
liệu .vtk.
- Tìm hiểu về bộ thư viện The Visualization Toolkit (VTK).
- Tìm hiểu bộ thư viện VES trên di động.
- Tìm hiểu về thư viện lập trình Open GL ES trên Android.
- Tìm hiểu về lập trình Android với NDK.
- Xây dựng được ứng dụng chạy trên hệ điều hành Android cho phép hiển thị
chỉnh sửa dữ liệu ảnh 3D.
3. Các nhiệm vụ cụ thể của ĐATN
 Cài đặt bộ thư viện VES trên hệ điều hành Ubuntu và môi trường Android
NDK
 Phân tích thiết kế chương trình
 Xây dựng ứng dụng Xử lý ảnh trên di động với dữ liệu 3D với các yêu cầu
cơ bản sau:
o Từ đầu vào là một file dữ liệu với định dạng .vtk, ứng dụng cho phép
hiển thị hình ảnh với dữ liệu này lên thiết bị di động chạy hệ điều
hành Android
o Cho phép người dùng xoay,phóng to,thu nhỏ,thay đổi góc nhìn.
o Cho phép người dùng xem dữ liệu với nhiều thông tin khác nhau như
xem dưới dạng bề mặt, dạng điểm, dạng liên kết các điểm, và dạng bề
mặt với liên kết.
o Cho phép người dùng chỉnh sửa màu sắc, tô một vùng hoặc tô toàn bộ
hình ảnh 3D.
o Cho phép thay đổi hình dáng của vật thể.
o Cho phép lưu lại dữ liệu đã chỉnh sửa.

4. Lời cam đoan của sinh viên:
Tôi Nguyễn Văn Bình cam kết ĐATN là công trình nghiên cứu của bản thân tôi
dưới sự hướng dẫn của ThS. Lê Tấn Hùng.
Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

2


Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất
kỳ công trình nào khác.
Hà Nội, ngày tháng năm
Tác giả ĐATN
Nguyễn Văn Bình

5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép
bảo vệ:

Hà Nội, ngày tháng năm
Giáo viên hướng dẫn

ThS. Lê Tấn Hùng

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

3


TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Các nhiệm vụ đề ra trong đồ án tốt nghiệp
 Tìm hiểu về đồ họa 3D, Open GL ES, định dạng dữ liệu 3D

 Xây dựng ứng dụng cho hệ điều hành Android cho phép hiển thị và xử lý ảnh
3D
Môi trường thực hiện đồ án tốt nghiệp:
 Bộ môn Công nghệ phần mềm, Viện Công nghệ Thông tin và Truyền thông,
trường Đại Học Bách Khoa Hà Nội.
 Trung tâm nghiên cứu và phát triển Samsung (Samsung Mobile R&D Center)
Các đề tài liên quan:
Bố cục đồ án gồm có ba phần: mở đầu, nội dung và kết luận
Phần mở đầu: Giới thiệu tóm tắt nhiệm vụ, đề tài, mục tiêu và phạm vi thực hiện
của Đồ án.
Phần nội dung: Gồm ba phần:
 Đặt vấn đề và định hướng giải pháp. Các kiến thức về đồ họa 3D, giới thiệu
tổng quan về bộ thư viện VTK, VES và lập trình Android với NDK
 Phân tích yêu cầu và thiết kế ứng dụng xử lý ảnh trên di động với dữ liệu 3D
Phần kết luận: nhận xét đánh kết quả của đồ án, hướng phát triển tiếp của đồ án

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

4


ABSTRACT OF THESIS
The tasks set out in the scheme of graduation
 Learn about 3D graphics, Open GL ES, 3D data format
 Build app for the Android operating system that enabling display and
processing 3D image
Execution Environment thesis:
 School of Infomation and Communication Technology (SoICT), Hanoi
University of Science and Technology (HUST).
 Samsung Mobile Research & Development Center

Project report includes three parts: introduction, content and conclusion
Preamble: Brief tasks, topics, objectives and scope of thesis.
Content: Consists of three sub parts:
 Set problem and solution oriented. The knowledge of 3D graphics, an
overview of the library VTK, VES and programmers with Android NDK
 Requirements analysis and design applications on mobile image processing
with 3D data
 Implementing thesis
Conclusion: Review type of project results, further development of the scheme

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

5


LỜI CẢM ƠN
Lời đầu tiên em xin gửi lời chân thành cám ơn tới các thầy cô trong trường
Đại Học Bách Khoa Hà Nội cùng các thầy cô trong Viện Công nghệ Thông tin và
Truyền thông đã truyền dạy cho em những kiến thức bổ ích trong suốt năm năm học.
Em xin gửi lời cám ơn chân thành đến ThS Lê Tấn Hùng, người đã trực tiếp hướng
dẫn, chỉ dạy và đóng góp nhiều ý tưởng giúp em hoàn thành đồ án của mình.
Em xin gửi lời cám ơn trung tâm nghiên cứu và phát triển Samsung, gia đình thứ hai
của em, đã tạo điều kiện thuận lợi và môi trường bổ ích cho em thực tập để phát huy
đam mê của mình, cũng như đã chia sẻ cho em nhiều kinh nghiệm, kiến thức quý
báu trong quá trình làm việc.
Em xin cảm ơn các anh Lê Trí Dũng, Vũ Ngọc Trọng, Bùi Thành Luân vì đã hướng
dẫn cho em rất nhiệt tình trong quá trình thực hiện đồ án tại Samsung.
Cuối cùng em xin gửi lời cảm ơn tới gia đình, bạn bè đã luôn giúp đỡ, động viên,
trợ giúp em trong suốt quá trình học tập và nghiên cứu.


Hà Nội ngày

tháng

năm

Nguyễn Văn Bình
Lớp CNTT1 – K55

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

6


MỤC LỤC
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ...................................................2
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP ........................................................4
ABSTRACT OF THESIS ...........................................................................................5
LỜI CẢM ƠN .............................................................................................................6
MỤC LỤC ...................................................................................................................7
DANH MỤC HÌNH ẢNH ..........................................................................................9
DANG MỤC BẢNG BIỂU ......................................................................................10
DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ ...........................................11
NỘI DUNG ...............................................................................................................12
A. ĐẶT VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP ...............................................12
1. Đặt vấn đề ..........................................................................................................12
2. Các vấn đề và định hướng giải pháp .................................................................13
3. Cơ sở lý thuyết và công cụ sử dụng ..................................................................14
3.1 Đồ họa máy tính ...........................................................................................14
3.1.1 Các kỹ thuật đồ họa ..............................................................................14

3.1.2 Hệ tọa độ thực và hệ tọa độ thiết bị .....................................................15
3.2 Android NDK ..............................................................................................16
3.3 Thư viện VTK ..............................................................................................17
3.4 Thư viện VES ..............................................................................................19
3.5 Định dạng File VTK ....................................................................................22
B. XÂY DỰNG VÀ ĐÁNH GIÁ CHƯƠNG TRÌNH..............................................28
1. Phân tích thiết kế chương trình..........................................................................28
1.1 Phân tích và đặc tả yêu cầu ..........................................................................28
1.1.1 Use Case tổng quan ..............................................................................29
1.1.2 Đặc tả chức năng view .........................................................................30
1.1.3 Đặc tả chức năng zoom in ...................................................................31
1.1.4 Đặc tả chức năng zoom out ..................................................................32
1.1.5 Đặc tả chức năng rotate ........................................................................33
1.1.6 Đặc tả chức năng change view mode ...................................................34
1.1.7 Đặc tả chức năng 3D mode ..................................................................35
1.1.8 Đặc tả chức năng 2D mode ..................................................................36
1.1.9 Đặc tả chức năng change view mode ...................................................37
1.1.10 Đặc tả chức năng fill area...................................................................38
1.1.11 Đặc tả chức năng fill all .....................................................................39
1.1.12 Đặc tả chức năng fill color continuously ...........................................40
1.1.13 Đặc tả chức năng change surface continuously .................................42
1.1.14 Đặc tả chức năng undo .......................................................................43
1.1.15 Đặc tả chức năng redo ........................................................................44
1.1.16 Đặc tả chức năng save file .................................................................45
1.2 Giải thuật giải quyết bài toán .......................................................................46
1.2.1 Áp dụng Camera trong Open GL .........................................................46
1.2.2 Giải pháp xác định đối tượng ...............................................................48
1.2.3 Giải pháp tô màu ..................................................................................48
Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1


7


1.2.4 Giải pháp thay đổi tọa độ điểm ............................................................51
1.2.5 Giải pháp lưu ảnh .................................................................................52
1.3 Thiết kế kiến trúc chương trình ...................................................................54
1.4 Thiết kế lớp ..................................................................................................56
1.4.1 Thiết kế lớp tại tầng Android App .......................................................56
1.4.2 Thiết kế lớp tại tầng My Library ..........................................................57
2. Cách cài đặt và kết quả thực nghiệm .................................................................61
2.1 Cài đặt môi trường .......................................................................................61
2.2 Kết quả thực nghiệm ....................................................................................62
3. Đánh giá ưu, nhược điểm ..................................................................................66
3.1 Ưu điểm .......................................................................................................66
3.2 Nhược điểm .................................................................................................66
C. KẾT LUẬN ..........................................................................................................67
TÀI LIỆU THAM KHẢO .........................................................................................68

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

8


DANH MỤC HÌNH ẢNH
Hình 1: Kỹ thuật đồ họa vector .................................................................................15
Hình 2: VTK Visualization Pipeline .........................................................................18
Hình 3: Kiến trúc của VES........................................................................................20
Hình 4: Các thành phần cấu thành thư viện VES......................................................20
Hình 5: Cây thừa kế của các lớp trong VES Scene Graph ........................................21
Hình 6: Rendering Model của VES ..........................................................................21

Hình 7: Open GL ES 2.0 Programmable PipeLine ...................................................22
Hình 8: Biểu đồ Use Case tổng quan ........................................................................29
Hình 9: Biểu đồ hoạt động chức năng View. ............................................................30
Hình 10: Biểu đồ hoạt động chức năng Zoom In ......................................................31
Hình 11: Biểu đồ hoạt động chức năng Zoom Out ...................................................32
Hình 12: Biểu đồ hoạt động chức năng Rotate .........................................................33
Hình 13: Biểu đồ hoạt động chức năng Change View Mode ...................................34
Hình 14: Biểu đồ hoạt động chức năng 3D Mode ....................................................35
Hình 15: Biểu đồ hoạt động chức năng 2D Mode ....................................................36
Hình 16: Biểu đồ hoạt động chức năng Change View Mode ...................................37
Hình 17: Biểu đồ hoạt động chức năng Fill Area .....................................................38
Hình 18: Biểu đồ hoạt động chức năng Fill All ........................................................39
Hình 19: Biểu đồ hoạt động chức năng Fill Color Continously ...............................40
Hình 20: Biểu đồ hoạt động chức năng Change Surface ..........................................41
Hình 21: Biểu đồ hoạt động chức năng Change Surface Continuously....................42
Hình 22: Biểu đồ hoạt động chức năng Undo ...........................................................43
Hình 23: Biểu đồ hoạt động chức năng Redo ...........................................................44
Hình 24: Biểu đồ hoạt động chức năng Save File.....................................................45
Hình 25: Tiến trình từ điểm trong không gian đến pixel màn hình ..........................46
Hình 26: Các thành phần cơ bản của Camera ...........................................................47
Hình 27: Mô tả thuật toán Ray Picking .....................................................................48
Hình 28: Ảnh dữ liệu 3D với màu lưu theo điểm .....................................................49
Hình 29: Điểm chạm của vật tương ứng điểm chạm trên màn hình .........................49
Hình 30: Các điểm lân cận điểm chạm .....................................................................51
Hình 31: Màu được thay đổi tại các điểm bị tác động ..............................................51
Hình 32: Cấu trúc chuẩn của một file dữ liệu vtk .....................................................53
Hình 33 : Kiến trúc chương trình ..............................................................................54
Hình 34 : Biểu đồ lớp tầng My Library ....................................................................57
Hình 35 : Giao diện cơ bản và menu ứng dụng ........................................................62
Hình 36 : Giao diện mở file và thay đổi chế độ view ...............................................63

Hình 37 : Chế độ view theo khung và view theo cả khung và bề mặt ......................63
Hình 38 : Chọn màu để tô và ảnh sau khi được tô màu ............................................64
Hình 39 : Ảnh trước và sau khi được làm méo .........................................................64
Hình 40 : Chức năng chọn khung nhìn .....................................................................65
Hình 41 : Hình sau khi Fill All..................................................................................65

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

9


DANG MỤC BẢNG BIỂU
Bảng 1: So sánh đồ họa vector và đồ họa điểm ........................................................15
Bảng 2: Đặc tả chức năng View ................................................................................30
Bảng 3: Đặc tả chức năng zoom in ...........................................................................31
Bảng 4: Đặc tả chức năng Zoom Out ........................................................................32
Bảng 5: Đặc tả chức năng Rotate ..............................................................................33
Bảng 6: Đặc tả chức năng Change view mode .........................................................34
Bảng 7: Đặc tả chức năng 3D Mode .........................................................................35
Bảng 8: Đặc tả chức năng 3D Mode .........................................................................36
Bảng 9: Đặc tả chức năng Change View Mode ........................................................37
Bảng 10: Đặc tả chức năng Fill Area ........................................................................38
Bảng 11: Đặc tả chức năng Fill All ...........................................................................39
Bảng 12: Đặc tả chức năng Fill Color Continously ..................................................40
Bảng 13: Đặc tả chức năng Change Surface .............................................................41
Bảng 14: Đặc tả chức năng change surface continuously .........................................42
Bảng 15: Đặc tả chức năng Undo .............................................................................43
Bảng 16: Đặc tả chức năng Redo ..............................................................................44
Bảng 17: Đặc tả chức năng Save File .......................................................................45
Bảng 18 : Bảng mô tả các lớp tầng My Library ........................................................61


Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

10


DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ
Thuật ngữ

Tên đầy đủ

Liên kết ngoài
/>/sdk/ndk/index.html
/>re_development_kit
/>Native_Interface

NDK

Native Deverlopment Kit

SDK

Software Deverlopment Kit

JNI

Java Native Interface

HUST


Hanoi University of Science
and Technology

www.hust.edu.vn

VTK

Visualization Toolkit

/>
VES

VTK OpenGL ES
Rendering Toolkit

/>
3D

Three Dimensional

2D

Two Dimensional

SVMC

Samsung Vietnam Mobile
R&D Center

/> />www.samsung.vn


Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

11


NỘI DUNG
A. ĐẶT VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP
1. Đặt vấn đề
Công nghệ ngày nay ngày càng phát triển, dữ liệu ảnh 2D đôi khi không đáp
ứng được đủ yêu cầu của người dùng, nhất là trong lĩnh vực y tế, thiết kế sản phẩm,
máy móc .Dữ liệu ảnh 3D cung cấp cho chúng ta một cái nhìn tổng quan hơn đối
với vật thể bằng việc công cấp thêm giá trị độ sâu (DOF) cho ảnh. Qua đó giúp ta
cảm nhận thật hơn và dễ tiếp cận hơn so với ảnh dạng 2D.
Trong y tế, dữ liệu ảnh 3D giúp chúng ta quan sát rõ hơn các bộ phận cơ thể,
các thành phần bên trong, giúp sinh viên trong quá trình học dễ tiếp thu hơn, hoặc
giúp bác sĩ chỉ rõ được vị trí bệnh hay tạo ra các ca mổ ảo trên tập dữ liệu
Trong thiết kế sản phẩm và máy móc: Dữ liệu 3D mô tả sản phẩm một cách
chính xác, chi tiết, đúng với thực tế nên thuận lợi cho việc sản xuất sản phầm.
Việc tạo dữ liệu 3D ngày nay chủ yếu sử dụng các công cụ đồ họa, nên công
việc tạo ra một ảnh 3D thực hiện rất phức tạp và tốn nhiều thời gian và công sức
người vẽ. Ngoài ra việc tạo dữ liệu ảnh 3D từ đời thật thì còn khá mới và chưa có
phương án nào thực sự tốt.Do đó chúng em đã thực hiện đề tài camera 3D nội dung
chính như sau.
Bài toán chung của cả nhóm lớn : Xây dựng được 1 ứng dụng hoàn chỉnh cho phép
capture 1 đối tượng bất kỳ từ thiết bị Camera 3D sau đó hiển thị lên smartphone
Android , thực hiện việc chỉnh sửa hình ảnh 3D thu được. Trong đó công việc cụ thể
như sau :
 Nhóm 1 : Xây dựng tập pointcloud sau khi sử dụng camera 3D để capture vật
thể (Nhóm dự định sử dụng structure.io tuy nhiên sau đó do lý do khách quan

nên chuyển sang dùng Kinect) . Đầu ra : file pcd(chứa tập pointcloud chưa
đa giác hóa)
 Nhóm 2 : Từ đầu vào là 1 file pcd, nhóm 2 sẽ tiến hành đa giác hóa (meshing)
tập pointcloud cho ra file vtk (file chứa tập pointcloud sau khi đã được đa
giác hóa)
 Nhóm 3 : Từ đầu vào là một file vtk sẽ thực hiện hiển thị lên thiết bị di động,
sau đó thực hiện 1 số thao tác chỉnh sửa đơn giản trên hình ảnh 3D đó.
Với phân công công việc như trên, em với tư cách là một thành viên của Nhóm 3
cần giải quyết bài toán cụ thể sau :
 Hiển thị dữ liệu 3D lên trên thiết bị mobile Android
 Thực hiện 1 số chức năng chỉnh sửa hình ảnh đơn giản trên vật thể : tô màu,
thay đổi hình dạng của vật thể …

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

12


2. Các vấn đề và định hướng giải pháp
Bắt đầu nghiên cứu việc xây dựng ứng dụng xử lý ảnh trên Android với dữ
liệu 3D, em đã gặp một số khó khăn , nhưng đã từ từ giải quyết được vấn đề.
 Vấn đề 1: Làm sao để có thể xử lý ảnh => Giải pháp sử dụng thư viện VTK .
 Vấn đề 2: Thư viện VTK không hỗ trợ cho di động => Giải pháp là sử dụng
thư viện VES.
 Vấn đề 3: Làm sao có thể sử dụng được thư viện VES trên Android? => Giải
pháp là sử dụng Android NDK để có thể tương tác với Native code và sử
dụng được các hàm trong thư viện VES
 Vấn đề 4: Làm sao để biễu diễn dữ liệu lên màn hình? Giải pháp là sử dụng
Open GL ES (Phiên bản OpenGL cho di động).


Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

13


3. Cơ sở lý thuyết và công cụ sử dụng
3.1 Đồ họa máy tính
Computer Graphics là một lĩnh vực của Công nghệ thông tin mà ở đó nghiên
cứu, xây dựng và tập hợp các công cụ (mô hình lý thuyết và phần mềm) khác nhau
để: kiến tạo, xây dựng, lưu trữ, xử lý Các mô hình và hình ảnh của đối tượng. Các
mô hình và hình ảnh này có thể là kết quả thu được từ những lĩnh vực khác nhau
của rất nhiều ngành khoa học (vật lý, toán học, thiên văn học…)
Computer graphics xử lý tất cả các vấn đề tạo ảnh nhờ máy tính.
3.1.1 Các kỹ thuật đồ họa
Kỹ thuật đồ hoạ điểm (Sample based-Graphics)
- Các mô hình, hình ảnh của các đối tượng được hiển thị thông qua từng pixel (từng
mẫu
rời rạc)
- Đặc điểm: Có thể thay đổi thuộc tính
+ Xoá đi từng pixel của mô hình và hình ảnh các đối tượng.
+ Các mô hình hình ảnh được hiển thị như một lưới điểm (grid) các pixel rời rạc,
+ Từng pixel đều có vị trí xác định, được hiển thị với một giá trị rời rạc (số nguyên)
các thông số hiển thị (màu sắc hoặc độ sáng)
+ Tập hợp tất cả các pixel của grid cho chúng ta mô hình, hình ảnh đối tượng mà
chúng ta muốn hiển thị.
Phương pháp để tạo ra các pixel
- Phương pháp dùng phần mềm để vẽ trực tiếp từng pixel một.
- Dựa trên các lý thuyết mô phỏng (lý thuyết Fractal, v.v) để xây dựng nên hình ảnh
mô phỏng của sự vật.
- Phương pháp rời rạc hoá (số hoá) hình ảnh thực của đối tượng.

- Có thể sửa đổi (image editing) hoặc xử lý (image processing) mảng các pixel thu
được theo những phương pháp khác nhau để thu được hình ảnh đặc trưng của đối
tượng.
Kỹ thuật đồ hoạ vector
- Mô hình hình học (geometrical model) cho mô hình hoặc hình ảnh của đối tượng
- Xác định các thuộc tính của mô hình hình học này,
- Quá trình tô trát (rendering) để hiển thị từng điểm của mô hình, hình ảnh thực của
đối tượng.
Có thể định nghĩa đồ hoạ vector: Đồ hoạ vector = geometrical model + rendering

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

14


Hình 1: Kỹ thuật đồ họa vector
So sánh giữa Raster và Vector Graphics
Đồ họa điểm
- Hình ảnh và mô hình của các vật thể
được biểu diễn bởi tập hợp các điểm
của lưới
(grid)
- Thay đổi thuộc tính của các pixel =>
thay đổi từng phần và từng vùng của
hình ảnh.
- Copy được các pixel từ một hình ảnh
này sang hình ảnh khác.

Đồ họa Vector
- Không thay đổi thuộc tính của từng

điểm trực tiếp
- Xử lý với từng thành phần hình học cơ
sở của nó và thực hiện quá trình tô trát
và hiển
thị lại.
- Quan sát hình ảnh và mô hình của hình
ảnh và sự vật ở nhiều góc độ khác nhau
bằng cách thay đổi điểm nhìn và góc
nhìn.
Bảng 1: So sánh đồ họa vector và đồ họa điểm

3.1.2 Hệ tọa độ thực và hệ tọa độ thiết bị
Hệ toạ độ thế giới thực (WCS: World Coordinate System)
WCS hay hệ toạ độ thực là hệ toạ độ được dùng mô tả các đối tượng trong
thế giới thực. Một trong hệ toạ độ thực được dùng nhiều nhất là hệ toạ độ Descartes.
Bất kì điểm nào trong mặt phẳng được mô tả bằng cặp toạ độ (x,y) trong đó x,y ∈R.
Gốc toạ độ là điểm O có toạ độ (0,0), Ox,Oy lần lượt là trục hoành và trục tung và
x,y là hoành độ và tung độ.
Các toạ độ thế giới thực cho phép người sử dụng bất kì một thứ nguyên (dimension)
qui ước: foot, cm, nm, km, inch tuỳ ý.
Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

15


Hệ toạ độ thiết bị (DCS: Device Coordinate System)
Hệ toạ độ thiết bị là hệ toạ độ được dùng bởi một thiết bị xuất cụ thể nào đó
như máy in, màn hình...
Các điểm được biểu diễn bởi cặp toạ độ (x,y), nhưng x,y ∈N. Điểm trong toạ độ
thực được định nghĩa liên tục, còn trong toạ độ thiết bị thì rời rạc do tính chất của

tập các số tự nhiên.
Các toạ độ (x,y) có giới hạn trong một khoảng nào đó.

3.2 Android NDK
Về cơ bản, khi nói đến NDK, bạn có thể xây dựng một phần ứng dụng
Android của bạn bằng việc sử dụng code từ một ngôn ngữ khác Java – nghĩa là bạn
có thể sử dụng C hoặc C++ trong những phần chức năng nhất định.
Android NDK hiện tại hỗ trợ 3 nền tảng là Windows, Mã OS X (Intel) và Linux
32/64-bit (x86). Theo như Google: “Android NDK là công cụ song hành với
Android SDK. Chúng cho phép bạn xây dựng những đoạn chương trình đòi hỏi hiệu
năng cao trong ứng dụng của bạn bằng native code. NDK cung cấp các header và
thư viện cho phép bạn xây dựng các activity, xử lý dữ liệu đầu vào, sử dụng các
cảm biến phần cứng, truy cập các tài nguyên ứng dụng và nhiều hơn thế nữa bằng
việc sử dụng ngôn ngữ C và C++. Nếu bạn viết native code, ứng dụng của bạn vẫn
đóng gói trong một file .apk duy nhất và chúng vẫn chạy trong máy ảo trên thiết bị
của bạn. Nguyên tắc cơ bản của mô hình ứng dụng Android không hề bị thay đổi.”
Ngoài việc có thể cải thiện được tốc độ, NDK cũng hỗ trợ khả năng tái sử dụng các
đoạn code có sẵn. Dùng NDK là một cách để đóng gói các thư viện native vào một
file ứng dụng .apk có thể chạy trên thiết bị sử dụng Android. Cần chú ý rằng việc sử
dụng NDK không phải lúc nào cũng mang lại lợi ích cho ứng dụng hay đảm bảo
hiệu năng của ứng dụng được cải thiện. Dùng NDK đồng nghĩa với việc ứng dụng
của bạn cũng trở nên phức tạp hơn. Google cũng cảnh báo khi nói về NDK: “Nhìn
chung, bạn chỉ nên sử dụng native code nếu như nó thực sự cần thiết trong ứng
dụng của bạn, đừng dùng NDK nếu chỉ vì bạn thích lập trình với C/C++”.
Với nền tảng Android, có hai cách để sử dụng native code:
 Cách thứ nhất, bạn biết một ứng dụng sử dụng nền tảng Android và sau đó,
sử dụng JNI (Java Native Interface) để truy cập vào APIs có sẵn của Android
NDK. JNI cho phép code chạy trên máy ảo Java gọi đến các thư viện được
viết bằng những ngôn ngữ khác như C. “Kĩ thuật này không chỉ giúp bạn tận
dụng được các ưu điểm của sự thuận tiện khi sử dụng nền tảng Android mà

còn cho phép bạn viết native code bất kì lúc nào bạn cần”, Google đã nói như
vậy.
 Cách thứ hai, bên trong ứng dụng của mình, bạn xử lý lời gọi hàm trong
vòng đời của một activity (chẳng hạn như onCreate(), onPause(),
onResume() ) bằng native code. Các ứng dụng sử dụng các activity native
này phải chạy trên nền tảng Android 2.3 (API Level 9) hoặc cao hơn. Tất
Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

16


nhiên, lúc đó, các đặc trưng khác của Android sẽ không sử dụng được trên
native code.

3.3 Thư viện VTK
VTK là bộ thư viện mã nguồn mở, miễn phí hỗ trợ cho việc xây dựng hệ
thống phần mềm về đồ họa máy tính 3D, mô hình hóa, xử lý ảnh, xây dựng ảnh.
VTK cũng hỗ trợ cho việc xử lý các tương tác, sự kiện với ảnh, cả 2D và 3D, ngoài
ra nó còn hỗ trợ tính toán song song. VTK được viết bởi ngôn ngữ C++. Nó cũng hỗ
trợ việc chuyển đổi từ core C++ sang các ngôn ngữ khác như Python, Java, và Tcl,
do đó một ứng dụng sử dụng thư viện VTK có thể được biết bởi nhiều loại ngôn
ngữ lập trình
VTK sử dụng Kitware’s Quality Software Process (Bao gồm Cmake, Ctest,
Cdash và Cpack) để build, test và đóng gói hệ thống. VTK được sử dụng trên toàn
thế giới cả trong những ứng dụng thương mại, cũng như trong nghiên cứu và phát
triển. Nó là cơ sở của nhiều ứng dụng đồ họa nổi tiếng trên thế giới như ParaView,
VisTrails, Slicer, MayaVi, và OsiriX.
VTK lần đầu tiên được viết trong cuốn sách The Visualization Toolkit An
Object-Oriented Approach to 3D Graphics. Will Schroeder, Ken Martin, and Bill
Lorensen , ba nhà nghiên cứu về đồ họa và visualization đã viết cuốn sách này và

bộ thư viện trong khoảng thời gian bắt đầu từ tháng 12 năm 1993.Sau khi cuốn sách
xuất bản , họ đã hợp tác với nhiều nhà nghiên cứu và phát triển khác để cùng nhau
phát triển và xây dựng bộ thư viện. VTK được phát triển trên kinh nghiệm của các
tác giả ở GE, đặc biệt là kinh nghiệm về hệ thống đồ họa hướng đối tượng
LYMB.VTK còn chịu ảnh hưởng từ nhiều hệ thống khác như hệ thống visualization
được phát triển bởi Schoeder et, hệ thống hiệu ứng máy tính hướng đối tượng
Clockwork phát triển tại RPI và đặc biệt là cuốn sách Object-Oriented Modeling
and Design với tác giả là Bill Lorensen.
Sau khi phần core của VTK được viết, người sử dụng và nhà phát triển trên
toàn thế giới bắt đầu ứng dụng để giải quyết các vấn đề trong thế giới thực.Riêng tại
công ty, hệ thống GE Medical và các hệ thống doanh nghiệp khác của GE đã ứng
dụng bộ thư viện này. Một vài nhà nghiên cứu khác như bác sĩ Penny Rheinghans
bắt đầu việc giảng dạy với cuốn sách. Trong những năm gần đây Sandia National
Labs đã ủng hộ GE mạnh mẽ và trở thành nhà đồng phát triển với trọng tâm là bổ
sung thông tin trực quan cho VTK.
VTK chưa 700 lớp C++, 350 000 dòng code chính, 215 000 dòng wrapper
code, đa nền tảng (Windows, Unix, MacOs).
 Visualization Techniques: Scalar, Vector, Tensor, Texture, and Volumetric
Methods
 Modeling Techniques: Implicit modelling, Polygon reduction/simplification
VTK Pipeline:
Gồm có 2 pha chính:
Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

17


-

Pha Visualization: Xử lý chuyển từ dữ liệu đầu vào sang dữ liệu hình học

Pha đồ họa: Khởi tạo ngữ cảnh cho ứng dụng

Ngoài ra nó còn được biểu diễn cụ thể bằng sơ đồ sau:

Hình 2: VTK Visualization Pipeline
Trong đó:
 Sources : có 2 kiểu sources cơ bản :
- Readers : đọc dữ liệu hình học từ các file khác nhau với nhiều định dạng
khác nhau
- Independant Sources : là các kiểu hình học có sẵn như : hình vuông, hình
nón, hình cầu , …
 Filters :
Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

18


-

-

Nhận dữ liệu đầu vào từ thành phần khác trong pipeline (sources), xử lý
dữ liệu thô, thêm hoặc bớt dữ liệu để có được bề mặt tốt hơn, trộn hoặc
tách các dữ liệu đầu vào.
Filters là tùy chọn trong VTK Visualization Pipeline, trong thực tế hầu
hết các pipeline đều có ít nhất một filter để xử lý qua dữ liệu thô.

 Mappers :
- Nhận dữ liệu hình học từ Filters hoặc nhận trực tiếp từ Sources, ánh xạ
các dữ liệu này vào một đối tượng mà có thể được render bằng rendering

engine (VTK Actors).
 Actors :
- Nhận dữ liệu hình học như : điểm, đường thẳng, đa giác, pháp tuyến, màu
sắc ,… từ mappers.
- Cho phép điều chỉnh hoặc điều khiển cách tức hiển thị dữ liệu trên màn
hình (chỉnh màu, quy tắc meshing, tọa độ điểm ,…) theo quy tắc của
OpenGL.
 VTK Renderers and Windows :
- Là bước cuối cùng của VTK Pipeline, có vai trò hiển thị dữ liệu lên màn
hình theo tập lệnh Render của OpenGL.
- Các actors phải được add vào một Rendering Windows trước khi chúng
có thể hiển thị được trên màn hình.
3.4 Thư viện VES
Thư viện VTK hỗ trợ rất tốt cho đồ họa 3D tuy nhiên nó vẫn chưa hỗ trợ nền
tảng di động. Do đó muốn sử dụng VTK trên di động chúng ta phải cài thêm bộ thư
viện VES.
VES là VTK OpenGL ES Rendering Toolkit. Đây là bộ thư viện dùng cho di
động sử dụng Open GL ES 2.0. Bên trong thư viện VES có chứa toàn bộ mã nguồn
của VTK. Do đó trên di động, ta có thể gián tiếp sử dụng bộ thư viện VTK thông
qua việc sử dụng VES, dùng VES để gọi sang các hàm của thư viện VTK.
Bộ thư viện VES gồm 2 phần là VES và Kiwi, VES cung cấp đầy đủ các
công cụ để hỗ trợ việc xử lý ảnh, còn Kiwi cung cấp bộ khung của một ứng dụng sử
dụng thư viện VES.

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

19


Hình 3: Kiến trúc của VES

Các thành phần của thư viện VES

Hình 4: Các thành phần cấu thành thư viện VES

Scene Graph
Thư viện VES sử dụng cấu trúc dữ liệu scene graph (Ngữ cảnh đồ họa) để quản lý
ảnh dữ liệu. Mỗi scene graph là một cấu trúc dữ liệu mà nó cung cấp vị trí trong
không gian và mối quan hệ logic giữa các thực thể của scene.

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

20


Hình 5: Cây thừa kế của các lớp trong VES Scene Graph

Rendering Pipeline

Hình 6: Rendering Model của VES

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

21


Programmable Pipeline

Hình 7: Open GL ES 2.0 Programmable PipeLine
3.5 Định dạng File VTK
Visualization Toolkit cung cấp các lớp và hàm để đọc và ghi nhiều loại dữ

liệu. Và họ cũng cung cấp một vài định dạng của riêng mình. Định dạng mới sẽ phù
hợp cung cấp phương pháp đơn giản hơn để giao tiếp giữa phần mềm và dữ liệu.
Phân loại theo cách lưu dữ liệu có hai dạng:
- Dạng đơn giản
- Dạng XML
Dạng đơn giản giúp chúng ta dễ dàng đọc và ghi dữ liệu cả bằng tay hoặc bằng phần
mềm. Tuy nhiên định dạng này không linh hoạt bằng định dạng XML. Định dạng
XML cho phép truy cập ngẫu nhiên dữ liệu. Trong đồ án này, nhóm em sử dụng
định dạng file đơn giản có extension là đuôi .vtk để làm file dữ liệu đầu vào cho
chương trình.
Cấu trúc của một file .VTK :
- Phần đầu tiên của file chứa version và định danh của File. Ví dụ: # vtk
DataFile Version x. x. Với x. x là số hiệu phiên bản của File
(Version).
- Phần thứ hai của File là header.Header chứa các ký tự String và kết thúc
bằng ký tự ngắt dòng.Header chứa tối đa 256 kí tự. Header dùng để định
nghĩa dữ liệu và chứa các thông tin khác
- Phần 3 là định nghĩa kiểu lưu của data, có thể là kí tự ASII hoặc kiểu nhị
phân
Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

22


-

-

Phần 4 định nghĩa cấu trúc dữ liệu của file, nó bắt đầu bằng ‘DATASET’ và
theo sau là kiểu cấu trúc dữ liệu của File.Có các loại dữ liệu hình học như

STRUCTURED_POINTS,STRUCTURED_GRID,UNSTRUCTURED_GRI
D, POLYDATA,RECTILINEAR_GRID, FIELD.
Phần 5 chứa các thông số của ảnh. Phần này thường được bắt đầu với các
keyword như POINT_DATA, CELL_DATA, theo sau là các giá trị của loại
dữ liệu đó. Có nhiều loại thông số có thể lưu ở đây như tọa độ điểm, vector
pháp tuyến, màu sắc …

Các kiểu định dạng dữ liệu của VTK
 Structured Points
File hỗ trợ cả dạng 1D, 2D, 3D của tập các điểm có cấu trúc. Kích thước n x,
n y, n z phải lớn hơn hoặc bằng 1. Dữ liệu khoảng cách s x, s y, s z phải lớn
hơn 0.
Ví dụ mẫu :
DATASET STRUCTURED_ POINTS
DIMENSIONS nx ny nz
ORIGIN x y z
SPACING sx sy sz
 Structured Grid
Định dạng file này hỗ trợ tập dữ liệu lưới có cấu trúc ở dạng 1D, 2D, 3D.
Kích thước n x ,n y ,n z lớn hơn hoặc bằng 1. Tọa độ các điểm trong tập dữ
liệu được xác định bằng trường POINT. Mỗi dòng chứa tọa độ x,y,z của mỗi
điểm.
DATASET STRUCTURED_GRID
DIMENSIONS nx ny nz
POINTS n dataType
p0x p0y p0z
p1x p1y p1z
...
p(n-1)x p(n-1)y p(n-1)z
 Rectilinear Grid

A rectilinear grid defines a dataset with regular topology, and semi-regular
geometry aligned along the x-y-z coordi-nate axes. The geometry is defined
by three lists of monotonically increasing coordinate values, one list for each
of the x-y-z coordinate axes. The topology is defined by specifying the grid
dimensions, which must be greater than or equal to 1.
DATASET RECTILINEAR_ GRID
DIMENSIONS nx ny nz
X_ COORDINATES n x dataType
x0 x1 ... x(nx-1)
Y_COORDINATES ny dataType
y0 y1 ... y(ny-1)
Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

23


Z_COORDINATES nz dataType
z0 z1 ... z(nz-1)



Polygonal Data
Là dạng dữ liệu kết hợp các điểm tạo ra các bề mặt hoặc đoạn thẳng.Polygon
được định nghĩa bởi POINTS, VERTICES, LINES, POLYGONS, hoặc
TRIANGLE_ STRIPS. Các điểm được lưu trữ giống như ở dạng Structured
Grid. Các từ khóa VERTICES, LINES, POLYGONS,TRIANGLE_ STRIPS
định nghĩa cấu trúc hình học của File. Mỗi một keyword lại yêu cầu có 2
thông số: Số các thành phần con (cells) n và kích thước của Cell list. Kích
thước của cell list là số các số cần để lưu hết các cell.
DATASET POLYDATA

POINTS n dataType
p0x p0y p0z
p1x p1y p1z
...
p(n-1)x p(n-1)y p(n-1)z
VERTICES n size
numPoints 0 , i0 ,j0 ,k0 , ...
numPoints 1 , i1 ,j1 ,k1 , ...
...
numPoints n-1 , i(n-1) ,j(n-1) ,k(n-1) , ...
LINES n size
numPoints 0 , i0 ,j0 ,k0 , ...
numPoints 1 , i1 ,j1 ,k1 , ...
...
numPoints n-1 , i(n-1),j(n-1) ,k(n-1) , ...
POLYGONS n size
numPoints 0 , i0 ,j0 ,k0 , ...
numPoints 1 , i1 ,j1 ,k1 , ...
...
numPoints n-1 , i(n-1) ,j(n-1) ,k(n-1) , ...
TRIANGLE_
numPoints
numPoints
...
numPoints

STRIPS n size
0 , i0 ,j0 ,k0 , ...
1 , i1 ,j1 ,k1 , ...
n-1 , i(n-1) ,j(n-1) ,k(n-1) , ...


Các thông số khác trong file VTK
- Vectors
VECTORS dataName dataType
v0x v0y v0z
v1x v1y v1z
Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

24


...
v(n-1)x v(n-1)y v(n-1)z

Sinh viên thực hiện: Nguyễn Văn Bình – 20101141 - Khóa K55 - Lớp CNTT1

25


×