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

29 0 0
Tài liệu đã được kiểm tra trùng lặp
đồ án tìm hiểu thị giác máy tính vận dụng trong phát triển game

Đ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

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO ĐỒ ÁN 2ĐỀ TÀI:

Tìm hiểu Thị giác máy tính vận dụng trong phát triểnGame

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 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 CHUNGNG 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ụngng 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 7ng1.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 CHUNGNG 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 CHUNGNG 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.3Calculate Hand Angle 18

3.3.4Calculate Head offset 19

Trang 6

4.2.2 Màn hình “Play” 25

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

5.1 Môi trườngng 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 CHUNGNG 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ểnng 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 CHUNGNG 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ênlý 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ế,…

● 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.

1.6 Nền tảng công nghệ

● Back-end:

○ MediaPipe○ OpenCV

○ Game mechanics● Front-end

○ Pygame○ Python

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

STTTê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

Đầ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, taycò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

Đầ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

Trang 23

Đầu vào Thời gian thêm virus, vị trí, vận tốc,assest, góc

Xử lí - Nếu đủ điều kiện kích hoạt việc, Virus sẽ bay

với vận tốc x pixel/frame

Đầu ra Vẽ hình ảnh của virus liên tục

Điều kiện kích hoạt Khi game đang chạy, 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.8 Draw pipe

Tên chức năng Vẽ các ống

Đầu vào Vị trí hai ống, thời gian kích hoạt, vận tốc

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

Xử lí - Nếu đủ điều kiện kích hoạt sẽ cho ra một cặp

ống trên – dưới

Đầu ra Vẽ các ống 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ó

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

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan