1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án tìm hiểu thị giác máy tính vận dụng trong phát triển game

29 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu Thị giác máy tính vận dụng trong phát triển Game
Tác giả Trần Quốc Huy
Người hướng dẫn ThS. Nguyễn Thị Thanh Trúc
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành Công nghệ Phần mềm
Thể loại Đồ án
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 29
Dung lượng 6,79 MB

Nội dung

● Nền tảng phát triển: Hệ điều hành Window ● Hệ thống gợi ý: MediaPipe và OpenCV 1.2 Lý do chọn đề tài Đồ án của em, nghiên cứu về “Thị giác máy tính và ứng dụng trong phát triển Game” đ

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Giảng viên hướng dẫn : ThS Nguyễn Thị Thanh Trúc

Sinh viên thực hiện : Trần Quốc Huy - 2052554

Trang 2

TP HỒ CHÍ MINH, THÁNG 12 NĂM 2023

Trang 3

LỜI CẢM ƠN

Lời đầu tiên, Em xin cảm ơn ThS Nguyễn Thị Thanh Trúc đã tạo điều

kiện cung cấp những kiến thức cần thiết để hoàn thành môn Đồ Án 2

Em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa, bạn bè, tập thểlớp PMCL2020 là những người luôn sẵn sàng sẻ chia và giúp đỡ trong học tập và cuộcsống

Em xin thừa nhận trong thời gian làm đồ án đã không hay liên lạc với cô vì lúc

đó em đang đau đầu vấn đề thực tập tốt nghiệp, mong cô có thể bỏ qua, cám ơn cô rấtnhiều ạ

Trong quá trình làm Đồ án này chúng em không tránh khỏi được những sai sót,chúng em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cô để hoàn thiện vàphát triển các đồ án trong tương lai tốt hơn

Cuối cùng, xin kính chúc các thầy cô giảng viên bộ môn Công nghệ Phần mềm và cô Nguyễn Thị Thanh Trúc luôn có sức khỏe dồi dào, cuộc sống hạnh

phúc, tiếp tục hoàn thành sứ mệnh cao cả là truyền thụ tri thức cho thế hệ mai sau

Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luôn đồng hành cùng mọi người

Thành phố Hồ Chí Minh, tháng 12 năm 2023

Trang 4

NHẬN XÉT

(Của giáo viên hướng dẫn)

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 5

MỤC LỤC

N i dung ội dung

TP H CHÍ MINH, THÁNG 12 NĂM 2023 Ồ CHÍ MINH, THÁNG 12 NĂM 2023 2

M C L C ỤC LỤC ỤC LỤC 5

CH ƯƠNG 1: GIỚI THIỆU CHUNG NG 1: GI I THI U CHUNG ỚI THIỆU CHUNG ỆU CHUNG 6

1.1 T ng quan đ tài ổng quan đề tài ề tài 6

1.2 Lý do ch n đ tài ọn đề tài ề tài 6

1.3 Đ i t ối tượng sử dụng ượng sử dụng ng s d ng ử dụng ụng 7

1.4 Ph m vi nghiên c u ạm vi nghiên cứu ứu 7

1.4.1 Ph m vi môi tr ạm vi nghiên cứu ường 7 ng 1.4.2 Ph m vi ch c năng ạm vi nghiên cứu ứu 7

1.5 Công c áp d ng ụng ụng 7

1.6 N n t ng công ngh ề tài ảng công nghệ ệ 7

CH ƯƠNG 1: GIỚI THIỆU CHUNG NG 2 C S LÝ THUY T VÀ CÔNG NGH ƠNG 1: GIỚI THIỆU CHUNG Ở LÝ THUYẾT VÀ CÔNG NGHỆ ẾT VÀ CÔNG NGHỆ ỆU CHUNG 8

2.1 MediaPipe 8

2.2 OpenCV 9

2.3 Pygame 11

2.4 C s lý thuy t thu t toán ơ sở lý thuyết thuật toán ở lý thuyết thuật toán ết thuật toán ật toán 12

CH ƯƠNG 1: GIỚI THIỆU CHUNG NG 3 THI T K H TH NG ẾT VÀ CÔNG NGHỆ ẾT VÀ CÔNG NGHỆ ỆU CHUNG ỐNG 15

3.1 S đ ho t đ ng ơ sở lý thuyết thuật toán ồ hoạt động ạm vi nghiên cứu ộng 15

3.2 Di n gi i s đ ho t đ ng ễn giải sơ đồ hoạt động ảng công nghệ ơ sở lý thuyết thuật toán ồ hoạt động ạm vi nghiên cứu ộng 16

3.3 Đ c t ho t đ ng ặc tả hoạt động ảng công nghệ ạm vi nghiên cứu ộng 17

3.3.1 Detect hand landmark 17

3.3.1 Detect face landmarks 17

3.3.3 Calculate Hand Angle 18

3.3.4 Calculate Head offset 19

3.3.5 Draw bullet 19

3.3.6 Draw bird 20

3.3.7 Draw virus 21

3.3.8 Draw pipe 22

3.3.9 Detect Collision 22

CH ƯƠNG 1: GIỚI THIỆU CHUNG NG 4 THI T K GIAO DI N ẾT VÀ CÔNG NGHỆ ẾT VÀ CÔNG NGHỆ ỆU CHUNG 23

4.1 Danh sách màn hình 23

4.2 Chi ti t màn hình ết thuật toán 24

4.2.1 Màn hình “Menu” 24

Trang 6

4.2.2 Màn hình “Play” 25

CH ƯƠNG 1: GIỚI THIỆU CHUNG NG 5 CÀI Đ T VÀ KI M TH ẶT VÀ KIỂM THỬ ỂM THỬ Ử 26

5.1 Môi tr ường ng cài đ t và ki m th : ặc tả hoạt động ểm thử: ử dụng 26

5.2 K t qu ki m th : ết thuật toán ảng công nghệ ểm thử: ử dụng 26

CHUONG 6 K T LU N VÀ H ẾT VÀ CÔNG NGHỆ ẬN VÀ HƯỚNG PHÁT TRIỂN ƯỚI THIỆU CHUNG NG PHÁT TRI N ỂM THỬ 27

6.1 K t qu ết thuật toán ảng công nghệ 27

6.2 H n ch ạm vi nghiên cứu ết thuật toán 27

6.3 H ướng phát triển ng phát tri n ểm thử: 27

6.4 K t lu n ết thuật toán ật toán 27

CH ƯƠNG 1: GIỚI THIỆU CHUNG NG 7 TÀI LI U THAM KH O ỆU CHUNG ẢO 27

Trang 7

CHƯƠNG 1: GIỚI THIỆU CHUNG1.1 Tổng quan đề tài

● Tên ứng dụng: Trash Doves

● Chủ đề chính: Một game sử dụng nhận diện hình ảnh từ camera người chơi để điều khiển nhân vật

● Nền tảng phát triển: Hệ điều hành Window

● Hệ thống gợi ý: MediaPipe và OpenCV

1.2 Lý do chọn đề tài

Đồ án của em, nghiên cứu về “Thị giác máy tính và ứng dụng trong phát triển Game” đãđược chọn với mục đích không chỉ là một dự án thú vị trong lĩnh vực công nghệ lập trìnhgame mà còn nhằm mục tiêu nâng cao kiến thức và kỹ năng của bản thân về các nguyên

lý và ứng dụng của thị giác máy tính, với hệ thống mã nguồn mở từ Mediapipe vàOpenCV, đồ án đã áp dụng hệ thống nhận diện cử chỉ tay và khuôn mặt, tạo ra một trảinghiệm mới lạ

Trang 8

Tên của đồ án là Trash Doves được lấy cảm hứng từ một sticker trên facebook thịnh hànhlúc bấy giờ là một con chim bồ câu lắc cái đầu, cũng là một phần trong trò chơi khi ngườichơi phải lắc đầu đề điều khiển chú chim của mình Ngoài ra, các assest trong game đượclấy cảm hứng từ trò chơi Flappy Bird, việc chọn như này vừa đưa chúng ta quay về thờiquá khứ cũng như cải tiến trò chơi.

Trò chơi được tạo ra cũng là một đáp án trong ứng dụng thị giác máy tính trong việc cảithiện trải nghiệm người chơi và sự tương tác giữa người và máy Việc này không chỉ mở

ra những triển vọng trong việc phát triển sáng tạo trò chơi mà có thể qua lĩnh vực khácnhư giáo dục,y tế,…

● Xử lí và nhận dạng hai bàn tay của con người

● Nhận diện được một số điểm trên khuôn mặt

● Nhận diện được sự thay đổi trong góc độ tay của người dùng

● Tính toán sử dụng công thức để chuyển động của phía mình và phía địch

● Cung cấp những giờ giải lao cho người dùng

1.5 Công cụ áp dụng

● Công cụ phát triển: PyCharm Studio

● Công cụ dùng để phân tích, thiết kế: Figma, Itch.io

Trang 9

● Công cụ quản lý dự án: Github.

● Công cụ trao đổi thông tin giữa thành viên nhóm: Không có

● Công cụ tham khảo: Mediapipe/Google, Udemy, ChatGPT

● Công cụ soạn thảo báo cáo: Microsoft Word

Trang 10

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ2.1 MediaPipe

Mediapipe là một công cụ được Google thiết kế, là tập hợp của một loạt giải pháp MachineLearning đa nền tảng, có thể can thiệp được

Hầu hết các bài toán nổi bật trong lĩnh vực Computer Vision - Thị giác máy tính, đều đượcGoogle cài đặt trong MediaPipe

Ưu điểm:

● Mã nguồn mở và miễn phí: Toàn bộ source code được công khai trên

MediaPipe, người dùng hoàn toàn có thể sử dụng và tùy chỉnh trực tiếp để phù

hợp với bài toán của mình

● Dễ dàng cài đặt và triển khai: Việc cài đặt cực kỳ dễ dàng và tiện lợi, có thể

triển khai trên nhiều nền tảng khác nhau như Mobile (Android/iOS),Desktop/Cloud, Web và IoT devices

Trang 11

● Cung cấp một giải pháp inference nhanh chóng: Google khẳng định rằng bộ

công cụ này có thể chạy ổn định trên hầu hết các cấu hình phần cứng thông dụng

Nhược điểm:

● Đây là phiên bản beta, còn nhiều thiếu sót

● Hạn chế trong các task sử dụng làm trung gian

● Thư viện còn khá ít, chỉ hỗ trợ model đơn giản

2.2 OpenCV

OpenCV, hay Open Source Computer Vision, là một thư viện mã nguồn mở hàng đầu trong

lĩnh vực thị giác máy tính và xử lý ảnh Được phát triển chủ yếu bằng C++ và có sẵn cho nhiều ngôn ngữ lập trình như Python, Java, và C#, OpenCV đã trở thành công cụ quan trọngtrong cộng đồng nghiên cứu và phát triển ứng dụng thị giác máy tính

Khả năng của OpenCV:

ảnh và video, từ các thao tác cơ bản như lọc ảnh đến các chức năng phức tạp như nhậndiện đối tượng và theo dõi chuyển động

Trang 12

● Nhận diện Đối tượng và Khuôn mặt: OpenCV cung cấp các thuật toán và mô hình đểnhận diện và theo dõi đối tượng trong thời gian thực, bao gồm cả khuôn mặt, mắt, và đốitượng khác.

● Thao tác và Biến đổi hình ảnh: Các chức năng biến đổi hình ảnh, như xoay, co giãn, vàcắt cụ thể, giúp tối ưu hóa dữ liệu hình ảnh cho các ứng dụng khác nhau

dụng thị giác máy tính, từ việc xác định vị trí đối tượng đến nhận diện hành động và cửchỉ

Ưu điểm:

nghiên cứu và công nghiệp, có cộng đồng lớn hỗ trợ và phát triển

● Đa nền tảng: Hỗ trợ trên nhiều hệ điều hành và ngôn ngữ lập trình, giúp dễ dàng tíchhợp vào nhiều dự án

● Hiệu suất cao: Các thuật toán của OpenCV được tối ưu hóa để đảm bảo hiệu suất cao,đặc biệt là trong ứng dụng thời gian thực

Trang 13

2.3 Pygame

Pygame là một thư viện mã nguồn mở được xây dựng trên nền tảng SDL (Simple DirectMedia Layer) giúp đơn giản hóa việc phát triển trò chơi và ứng dụng đa phương tiện bằng ngôn ngữ lập trình Python Với sự linh hoạt và dễ sử dụng, Pygame là một lựa chọn phổ biến trong việc tạo các ứng dụng và trò chơi nhỏ đến trung bình

Khả Năng của Pygame:

● Xây dựng trò chơi đa phương tiện: Pygame giúp người phát triển tạo ra các trò chơi và ứng dụng đa phương tiện với khả năng xử lý hình ảnh, âm thanh và sự kiện người chơi

● Đồ họa và âm thanh: Thư viện hỗ trợ vẽ đồ họa, quản lý hình ảnh, và điều khiển

âm thanh, từ đó tạo nên trải nghiệm người dùng đầy đủ

● Đa nền tảng: Pygame hỗ trợ nhiều hệ điều hành, giúp người phát triển dễ dàng triển khai ứng dụng của họ trên nhiều nền tảng

Ưu điểm:

● Dễ học và bắt đầu: Pygame cung cấp một ngưỡng đầu vào thấp cho những người mới bắt đầu với lập trình trò chơi, giúp họ nhanh chóng tạo ra các ứng dụng đơn giản

● Cộng đồng hỗ trợ: Với cộng đồng sôi động, Pygame có nhiều tài liệu, diễn đàn vànguồn tư duy để giúp đỡ người dùng khi gặp vấn đề

Trang 14

● Độ linh hoạt: Pygame linh hoạt đối với các dự án trò chơi từ nhỏ đến trung bình, đặc biệt là khi yêu cầu đồ họa và âm thanh không quá phức tạp.

Nhược điểm:

● Khả Năng Mở Rộng Hạn Chế: Pygame có thể gặp khó khăn khi áp dụng vào các

dự án lớn và phức tạp hơn, nơi cần sự quản lý tài nguyên và mô-đun chuyên sâu hơn

● Hiệu Suất: Với các trò chơi đòi hỏi hiệu suất cao, Pygame có thể không phải là lựa chọn tốt nhất so với các thư viện và framework chuyên sâu hơn

2.4 Cơ sở lý thuyết thuật toán

- Hand LandMark Detection

1 Xác định mô hình tay

- Một mô hình bàn tay lúc đầu sẽ được nhận diện thông qua thư viện opencv và được xử lí thông qua mediapipe để nhận diện được liệu rằng có phải bản tay không

+ min_hand_detection_confidence: Tỉ lệ tự tin trong việc nhận diện bàn tay ( có chỉ số chạy từ 0->1.0 ), khi nhận diện bàn tay, mediapipe sẽ tạo ra một bounding box để chứa đựng cả khung hình bàn tay, trong đồ án lần này, hệ số sẽ được set là0.5 ( khi tỉ lệ dự đoán >=50% sẽ xác định đó là bàn tay ) do camera của người phát triển game không đủ tốt

Trang 15

+ min_tracking_confidence: Tỉ lệ theo dõi bàn tay thành công, có hệ số chạy từ 0 đến 1, việc tracking thành công là việc có thể dự đoán vị trí của 21 điểm trên bàn tay, khi nhận diện thiếu sót, nó sẽ tự dự đoán vị trí còn lại thông qua tư thế, khi không có bàn tay được nhận diện, nó sẽ bỏ qua, trong đồ án lần này, hệ số sẽ được set là 0.5 ( Khi tỉ lệ nhận dạng được 21 điểm trên bàn tay >= 50%) do camera của người phát triển game không đủ tốt.

+ Handness: Tỉ lệ để theo dõi tay trái hay tay phải

2 Xác định góc của tay

Trong game, người phát triển đã sử dụng ngón tay trỏ ( hanglandmark [5] -> handlandmark[8] ) để tạo thành một đường thẳng, áp dụng tính góc của đường thẳng này và đường thẳng ngang sẽ cho ra góc độ của bàn tay

- Face landmark detection

Trang 16

-1 Xác định mô hình mặt

- Một hình ảnh khuông mặt lúc đầu sẽ được nhận diện thông qua thư viện opencv

và được xử lí thông qua mediapipe để nhận diện được liệu rằng có phải bản tay không

+ min_face_detection_confidence: Tỉ lệ tự tin trong việc nhận diện khuôn mặt ( có chỉ số chạy từ 0->1.0 ), khi nhận diện khuôn mặt, mediapipe sẽ tạo ra một bounding box để chứa đựng cả khung hình khuôn mặt, trong đồ án lần này, hệ số

sẽ được set là 0.5 ( khi tỉ lệ dự đoán >=50% sẽ xác định đó là khuôn mặt) do camera của người phát triển game không đủ tốt

+ min_tracking_confidence: Tỉ lệ theo dõi khuôn mặt thành công, có hệ số chạy

từ 0 đến 1, việc tracking thành công là việc có thể dự đoán vị trí của 367 điểm trên khuôn mặt, khi nhận diện thiếu sót, nó sẽ tự dự đoán vị trí còn lại thông qua

tư thế, khi không có khuôn mặt được nhận diện, nó sẽ bỏ qua, trong đồ án lần này, hệ số sẽ được set là 0.5 ( Khi tỉ lệ nhận dạng được 367 điểm trên khuôn mặt

>= 50%) do camera của người phát triển game không đủ tốt

Trang 17

2 Xác định điểm trên mặt

Trong game, người phát triển đã sử dụng vị trí hai mí mắt trên ( facelandmark [386] và facelandmark[159] ) để tạo thành một đường thẳng, vẽ một đường tròn ởgiữa, game sẽ tính trong một khoảng thời gian rằng điểm đỏ có nhấc lên đủ một khoảng cách nhất định trong một thời gian không

Trang 18

CHƯƠNG 3 THIẾT KẾ HỆ THỐNG3.1 Sơ đồ hoạt động

3.2 Diễn giải sơ đồ hoạt động

STT Tên hoạt động chính Ý nghĩa / Ghi chú

cho bởi camera

cho bởi camera

của đạn

xét việc nhảy của chim

Trang 19

7 Draw Virus Vẽ chuyển động của virus

3.3 Đặc tả hoạt động

3.3.1 Detect hand landmark

Tên chức năng Nhận diện bàn tay từ hình ảnh

Đầu vào Bức ảnh được chụp có bàn tay trong ảnh

Tiền xử lí Chuyển đổi ảnh từ dạng BGR -> RGB

Xử lí

- Phân tích nhận diện model tay

- Xác định tay thuộc tay nào

- Đặt các landmard theo vị trí các đầu ngón tay

Đầu ra Các điểm landmark ở trên tay, đánh số từ 0-21

Điều kiện kích hoạt Khi game đang hoạt động

Dòng sự kiện thay thế - Khi có một tay: sẽ chỉ detect được 1 tay, cho ra

được list các landmard của bên tay đó

Dòng sự kiện ngoại lệ

- Không phát hiện tay: sẽ bỏ qua quy trình

3.3.1 Detect face landmarks

Tên chức năng Nhận diện khuôn mặt từ hình ảnh

Đầu vào Bức ảnh được chụp có khuôn mặt trong ảnh

Tiền xử lí Chuyển đổi ảnh từ dạng BGR -> RGB

Trang 20

Xử lí

- Phân tích nhận diện model mặt

- Chọn landmard theo vị trí 2 mí mắt trên

- Vẽ một đường nối 2 mí mắt

- Vẽ một điểm trung tâm đường nối 2 mí mắt

Đầu ra Điểm trung tâm đại diện cho sự chuyển động của

phần đầu

Điều kiện kích hoạt Khi game đang hoạt động

Dòng sự kiện thay thế - Khi chỉ có một mí mắt: sẽ sử dụng phán đoán

cho ra mí mắt còn lại

Dòng sự kiện ngoại lệ

- Không phát hiện mắt/mặt: sẽ bỏ qua

3.3.3 Calculate Hand Angle

Tên chức năng Tính toán góc của ngón trỏ so với đường thẳng

Đầu vào List các landmark đã được xác định từ bước detect

- Nếu là tay trái: giới hạn góc nửa trái hình tròn

- Nếu là tay phải: giới hạn góc nửa phải hìnhtròn

Đầu ra Góc được tạo bởi 1 hoặc 2 tay

Điều kiện kích hoạt Khi phát hiện được 1 hoặc 2 tay

Dòng sự kiện thay thế - Khi có một tay: sẽ chỉ detect được 1 tay, tay

còn lại sẽ follow theo model chim và không

Trang 21

hoạt động

Dòng sự kiện ngoại lệ

- Không phát hiện tay: sẽ bỏ qua quy trình

3.3.4 Calculate Head offset

Tên chức năng Tính toán chuyển động của phần đầu

Đầu vào Điểm trung tâm giữa 2 mí mắt trên

Tiền xử lí Cho thời gian chạy

Xử lí

- Tính vị trí sau – vị trí ban đầu của mí mắt

- Nếu kết quả cho ra là dương, chứng tỏ mắt đangđẩy lên phía trên, lúc này xét thời gian

- Nếu thời gian < thời gian cho phép sẽ cho làtrue

- Ngược lại là false

Đầu ra Flag kích hoạt sự kiện nhảy của chim

Điều kiện kích hoạt Khi phát hiện được điểm ở giữa 2 mí mắt

Dòng sự kiện thay thế Khi có một mí mắt sẽ phán đoán để cho ra được điểm

Dòng sự kiện ngoại lệ - Khi không phát hiện mí mắt sẽ bỏ qua

3.3.5 Draw bullet

Tên chức năng Vẽ các hình viên đạn dựa vào góc từ công đoạn tính

góc tay

Đầu vào Góc của bàn tay

Tiền xử lí Kết hợp các yếu tố cho sẵn như assest, tốc độ của đạn

Trang 22

Xử lí

- Tính toán update+ Sau mỗi frame, đạn sẽ di chuyển với vận tốc xpixel/frame

+ Tính góc để cho đạn di chuyển

Đầu ra Đường đạn được update và vẽ liên tục

Điều kiện kích hoạt Khi phát hiện được tay

Dòng sự kiện thay thế Khi có một bên tay, chỉ bên tay đó được xử lí

Dòng sự kiện ngoại lệ - Khi không phát hiện tay sẽ bỏ qua

3.3.6 Draw bird

Tên chức năng Vẽ chim trên màn hình

Đầu vào Điểm giữa 2 mí mắt

Tiền xử lí Kết hợp gia tốc, vận tốc, assest

Xử lí

- Nếu đầu vào đủ điều kiện kích hoạt việc nhảy,chim sẽ nhảy với gia tốc x và vận tốc ypixel/frame

Đầu ra Hình ảnh chim được vẽ liên tục

Điều kiện kích hoạt Bất cứ lúc nào không game over

Dòng sự kiện thay thế Không có

Dòng sự kiện ngoại lệ Không có

3.3.7 Draw virus

Tên chức năng Vẽ các virus tấn công người chơi

Ngày đăng: 15/05/2024, 09:26

w