Vi c phát hiệ ạ ệ ện đối tượng chuyển động có thể được áp dụng trong nhiều lĩnh vực như giám sát an ninh, giám sát giao thông, giám sát tàu thuy n, giám sát d ch bề ị ệnh, điều khi n rob
Trang 11
ĐẠI HỌC BÁCH KHOA HÀ NỘI Trường Điện – Điện tử
BÁO CÁO ĐỒ ÁN 1
ĐỀ TÀI: PHÁT HIỆN CHUY ỂN ĐỘ NG C ỦA VẬT THỂ
SỬ D NG OPENCV Ụ
Nhóm sinh viên th c hiự ện:
Nguy n Lâm Oanh ễ 20200456
Nguy n Th Dung ễ ị 20203373
GVHD: TS Hán Tr ng Thanhọ
Hà Nội, 2024
Trang 2MỤC LỤC
M Ở ĐẦU 3
1 Lí do nghiên cứu đề tài 3
2 Mục tiêu nghiên cứu 3
3 Đối tượng nghiên c u 3ứ 4 Phạm vi nghiên c u 4ứ 5 Phương pháp nghiên cứu 4
6 Kết cấu đề tài: 4
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 5
1.1 Tổng quan v Pycharm 5ề 1.2.1 Khái niệm 5
1.2.2. Các tính năng của Pycharm 5
1.2.3. Ưu điểm của Pycharm 7
1.2.4. Nhược điểm của Pycharm 7
1.2 T ng quan v OpenCV 7 ổ ề 1.2.1 Khái niệm 7
1.2.2. Đặc điểm nổi bật của OpenCV 8
1.2.3. Ứng d ng th c t c a Opencvụ ự ế ủ 8
1.2.4 Các module ph ổ biến c a Opencvủ 9
CHƯƠNG 2 THIẾT KẾ CHƯƠNG TRÌNH 11
2.1 Mô tả ứ ng d ng 11ụ 2.2 Đánh giá và điều ch nh 11ỉ 2.3 Xây dựng ng d ng 11ứ ụ 2.4 Giải thích chương trình 12
2.5 Giao diện chương trình 13
KẾT LUẬN 15
Trang 33
MỞ ĐẦU
1. Lí do nghiên cứu đề tài
Trong th c t hi n nay, vi c phát hiự ế ệ ệ ện đối tượng chuyển động là m t trong ộ
nh ng vữ ấn đề quan trọng trong lĩnh ựv c trí tu nhân t o Vi c phát hiệ ạ ệ ện đối tượng chuyển động có thể được áp dụng trong nhiều lĩnh vực như giám sát an ninh, giám sát giao thông, giám sát tàu thuy n, giám sát d ch bề ị ệnh, điều khi n robot và nhiể ều
ứng dụng khác Việc s dụng OpenCV trong nghiên c u phát hiử ứ ện đối tượng có nhi u l i ích, bao g m tề ợ ồ ốc độ ử x lý nhanh, tính ổn định và khả năng xử lý các loại
ảnh và video khác nhau Bên cạnh đó, OpenCV còn có nhiều thuật toán phát hiện đối tượng khác nhau, cho phép người nghiên cứu lựa chọn phù hợp với nhu cầu và yêu c u cầ ủa ứng d ng c ụ ụ thể
2. Mục tiêu nghiên c u ứ
Các m c tiêu c ụ ụ thể ủa nghiên cứ c u phát hiện đối tượng chuyển động bao gồm:
• Tìm cách xây dựng các phương pháp phát hiện đối tượng chuyển động có độ chính xác cao, tốc độ x ử lý nhanh để đáp ứng nhu c u th c t c a các ầ ự ế ủ ứng d ng ụ
• Tìm hi u và phát tri n các thu t toán và k thu t mể ể ậ ỹ ậ ới để ử x lý các vấn đề phát
hiện đối tượng chuyển động khó như phát hiện đối tượng chuyển động trong môi trường phức t p, nhạ ững đối tượng chuyển động b che khu t ho c m t d u, ị ấ ặ ấ ấ các đối tượng chuyển động nhanh, v.v
• Tìm cách tối ưu hóa quá trình phát hiện đối tượng chuyển động để ả gi m thi u ể sai sót phát hiện, làm tăng độ chính xác, đồng thời gi m t i cho hả ả ệ thống x ử lý
và lưu trữ
• Áp d ng các kụ ỹ thuật học máy để phát hiện đối tượng chuyển động trong các tình hu ng khó xố ử lý, như các đối tượng có kích thước, hình d ng và màu sạ ắc khác nhau, giúp tăng độ chính xác và khả năng phát hiện
• Nghiên c u và phát tri n các ng d ng c a phát hiứ ể ứ ụ ủ ện đối tượng chuyển động trong các lĩnh vực khác nhau, như an ninh, giám sát, robot,… giúp tăng hiệu
qu và nâng cao chả ất lượng cuộc sống của con người
3. Đối tượng nghiên c u ứ
• Các đối tượng trong các hình ảnh hoặc video, được di chuy n trong không gian ể
và thường có hướng và tốc độ khác nhau Các đối tượng này có thể là người, động vật, phương tiện giao thông, vật thể trong sản xuất, v.v
• Trong quá trình phát hiện đối tượng chuyển động, các đối tượng này được xác định dựa trên sự khác biệt giữa các khung hình liên tiếp, được phân loại dựa trên các đặc trưng như kích thước, hình dạng, màu sắc, vị trí và hướng di chuyển
Trang 44. Phạm vi nghiên c u ứ
Phạm vi nghiên c u phát hiứ ện đối tượng chuyển động có th áp d ng trong nhiể ụ ều lĩnh vực, bao gồm:
• An ninh và giám sát: Phát hiện đối tượng chuyển động trong các hệ thống an ninh và giám sát giúp nh n di n các hoậ ệ ạt động bất thường ho c nguy hi m, giúp ặ ể ngăn chặn tội phạm và bảo vệ an toàn cho công chúng
• Công nghi p: Phát hiệ ện đối tượng chuyển động trong các dây chuyền sản xuất giúp tăng năng suất và giảm chi phí sản xuất bằng cách giám sát và kiểm tra quy trình s n xu ả ất
• Tự động hóa: Phát hiện đối tượng chuyển động trong các ứng d ng tự động ụ hóa, bao g m xe t hành và robot, giúp cho các thi t b di chuy n m t cách an ồ ự ế ị ể ộ toàn và hiệu qu ả
• Giải trí: Phát hiện đối tượng chuyển động trong các ng d ng giứ ụ ải trí như trò chơi điện tử và các ứng dụng AR/VR giúp tạo ra trải nghiệm người dùng tốt hơn
• Phạm vi nghiên c u có th m rứ ể ở ộng đến vi c áp d ng các kệ ụ ỹ thuật phát hiện đối tượng chuyển động trong các lĩnh vực mới và phát tri n các thu t toán phát ể ậ
hi n chuyệ ển động mới để ải thiện độ c chính xác và tốc độ x ử lý
5. Phương pháp nghiên cứu
Phương pháp nghiên cứu tài liệu: nghiên cứu các tài liệu chuyên ngành
Phương pháp thực nghiệm: xây dựng và chạy thử nghiệm chương trình
6 K ết cấu đề tài:
Chương 1: Giới thiệu về Pycharm, OpenCV, hướng dẫn cài đặt
Chương 2: Xây dựng chương trình Phát hiện chuyển động sử dụng OpenCV
Trang 55
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
1.1 T ng quan v Pycharm ổ ề
1.2.1. Khái niệm
Pycharm là m t n n t ng k t k t hộ ề ả ế ế ợp được JetBrains phát triển như một IDE (Môi trường phát triển tích hợp) để phát triển các ứng d ng cho l ập trình trong Python ụ
M t s ộ ố ứng d ng lụ ớn như Tweeter, Facebook, Amazon và Pinterest sử d ng Pycharm ụ
để làm IDE Python của h Chúng ta có thểọ ch y PyCharm trên Windows, Linux ạ
ho c Mac OS Ngoài ra, nó ch a các module và các package giúp các l p trình viên ặ ứ ậ phát tri n ph n m m b ng Python ti t kiể ầ ề ằ ế ệm thời gian và công sức Hơn nữa, nó cũng
có thể được tùy ch nh theo yêu cỉ ầu c a các nhà phát triủ ển
Hình 1.1 Giao diện c a Pycharm ủ 1.2.2. Các tính năng của Pycharm
Trình sửa code thông minh
• Giúp chúng ta viết mã chất lượng cao hơn
• Nó bao gồm các lược đồ màu (color schemes) cho t khóa, lừ ớp và hàm Điều này giúp tăng khả năng đọc và hiểu mã
• Giúp xác định l i m t cách dỗ ộ ễ dàng
• Cung cấp tính năng tự động hoàn thành và hướng dẫn để hoàn thành mã Điều hướng mã
Trang 6• Nó giúp các nhà phát tri n ch nh s a và c i thi n mã v i ít n l c và th i gian ể ỉ ử ả ệ ớ ỗ ự ờ hơn
• Với điều hướng mã, lập trình viên có thể dễ dàng điều hướng đến một hàm,
l p hoớ ặc tệp
• M t l p trình viên có thộ ậ ể xác định v trí m t ph n t , m t ký hi u ho c mị ộ ầ ử ộ ệ ặ ột
bi n trong mã ngu n trong th i gian ng n ế ồ ờ ắ
• Hơn nữa, bằng cách sử dụng chế độ thấu kính, nhà phát triển có thể kiểm tra
và vá l i toàn b mã ngu n m t cách k ỗ ộ ồ ộ ỹ lưỡng
u trúc
Tái cấ
• Nó có l i th là th c hiợ ế ự ện các thay đổi hi u quệ ả và nhanh chóng đố ớ ải v i c
bi n cế ục bộ (local variables) và biến toàn c c (global variables) ụ
• Tái c u trúc trong PyCharm cho phép các nhà phát tri n c i thi n c u trúc bên ấ ể ả ệ ấ trong mà không thay đổi hiệu su t bên ngoài cấ ủa code
• Pycharm cũng giúp phân chia các lớp và chức năng mở rộng tốt hơn với sự trợ giúp của phương pháp trích xuất
H ỗ trợ cho nhi u công ngh web khác ề ệ
• Nó giúp các nhà phát triển t o các ng d ng web b ng Python ạ ứ ụ ằ
• Nó hỗ ợ tr các công nghệ web phổ ến như HTML, CSS và JavaScript bi
• Các nhà phát tri n có l a ch n ch nh s a tr c tuy n vể ự ọ ỉ ử ự ế ới IDE này Đồng thời,
h ọ có thể xem trước trang web đã cập nhật/đã tạo
• Các nhà phát tri n có th ể ể theo dõi các thay đổi trên trình duyệt web trực tiếp
• PyCharm cũng hỗ trợ AngularJS và NodeJS để phát triển các ứng dụng web
H ỗ trợ cho các web framework Python ph bi n ổ ế
• PyCharm h ỗ trợ các web framework như Django
• Cung cấp tính năng tự động điền và gợi ý cho các thông số của Django
• Giúp vá lỗi các code của Django
• Hỗ ợ tr các web framework thông dụng như web2py và Pyramid
H ỗ trợ cho Thư viện Khoa h c Pythonọ
Trang 77
• PyCharm h ỗ trợ các thư viện khoa h c cọ ủa Python như Matplotlib, NumPy và Anaconda
• Các thư viện khoa học này giúp xây dựng các dự án về Khoa học Dữ liệu và Học máy
• Hỗ ợ tr các biểu đồ tương tác giúp các nhà phát triển hiểu dữ liệu tốt hơn
• Nó có khả năng tích hợp v i nh ng công cớ ữ ụ khác nhau như IPython, Django
và Pytest S ự tích hợp này giúp thúc đẩy các giải pháp độc đáo
1.2.3. Ưu điểm của Pycharm
• Cài đặt PyCharm rất dễ dàng
• PyCharm là m t IDE d s d ng ộ ễ ử ụ
• Có rất nhiều plugin h u ích và phím tữ ắ ữu ích trong PyCharm t h
• PyCharm tích hợp các tính năng của thư viện và IDE như tự động hoàn thành
và tô màu
• Nó cho phép xem mã nguồn trong m t cú nhấp chu t ộ ộ
• Tiết kiệm th i gian phát tri n ph n m m ờ ể ầ ề
• Tính năng đánh dấ ỗi trong code giúp nâng cao hơn nữu l a quá trình phát tri n ể
• Cộng đồng các nhà phát tri n Python vô cùng l n và chúng ta có th gi i quyể ớ ể ả ết các th c mắ ắc/ nghi ng c a mình m t cách dờ ủ ộ ễ dàng
1.2.4. Nhược điểm của Pycharm
• PyCharm không mi n phí và phiên b n Professional cễ ả ủa nó khá đắt
• Tính năng tự điền (auto-complete) sẽ không tốt cho các lập trình viên newbie
• Nó có thể gây ra s cự ố trong khi sửa ch a các công c ữ ụ như venv
1.2 T ng quan v OpenCV ổ ề
1.2.1 Khái niệm
OpenCV (Open Computer Vision) là một thư viện mã ngu n m ồ ở hàng đầu cho x lý vử ề thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết
b ng ngôn ng C/C++, vì v y có tằ ữ ậ ốc độ tính toán r t nhanh, có ấ thể ử ụ s d ng với các ứng dụng liên quan đến th i gian th c Opencv có các interface cho C/C++, ờ ự Python Java vì v y hậ ỗ trợ được cho Window, Linux, MacOs l n Android, iOS ẫ
Trang 8OpenCV có cộng đồng khoảng 50000 người dùng và số lượng download vượt trên 6 triệu l n ầ
Hình 1.2 Giao diện c a OpenCV ủ
1.2.2 Đặ c điểm n i b t c a OpenCV ổ ậ ủ
• OpenCV thu hút được đông đảo người dùng tin tưởng, s d ng b i nh ng tính ử ụ ở ữ năng vô cùng đặc biệt, phân chia các nhóm tính năng cùng các module riêng như sau:
• Opencv có khả năng giúp xử lý cũng như hiển th lên các hình nh, video, I ị ả hay O(highgui, corem imgproc)
• Có thể phát hiện ra được các vật thể như: nonfee, objdetect, features2d,…
• Opencv cũng có tính năng CUDA acceleration hay còn được biết đến là GPU
1.2.3 Ứ ng dụng thực tế c a Opencv ủ
Hiện nay, opencv được ứng dụng khá rộng rãi với nhiều mục đích khác nhau
cả trong công nghệ và các lĩnh vực đời sống khác bao gồm:
• Ứng d ng vào hình ụ ảnh street view
• Có thể kiểm tra, giám sát tự độ ng
• Ứng dụng robot và xe hơi tự lái
Trang 99
• Phân tích được các hình ảnh tỏng y học
• Tìm kiếm cũng như phục hồi đư c các hình ảnh, video ợ
• Ứng d ng vào phim và các cụ ấu trúc 3D chuyển động
• Ứng d ng vào nghụ ệ thu t sắp đặt tương tác ậ
1.2.4 Các module ph ổ biến c a Opencv ủ
Trong Opencv s có các c u trúc module khác nhau và nó bao g m c m t s ẽ ấ ồ ả ộ ố thư viện liên kết tĩnh hoặc cũng có thể là liên kết động Một số module phổ biến
nhất của Opencv gồm:
• Core (core functionality) – được biết đến là m t module nh g n, giúp xác ộ ỏ ọ định được các cấu trúc dữ liệu cơ bản nhất và nó bao gồm cả các mảng đa chiều dày đặc, các ức năng cơ bản Core cũng được sử dụng bởi rất nhiều ch các module khác trong opencv
• Imgproc ( Image Processing ): Đây là module có chức năng xử lý các hình ảnh gốm có l c hình ọ ảnh tuy n tính, phi tuy n tính, cho phép biế ế ến đổi về hình
học như: chỉnh size, warp ph i c nh, ánh x lố ả ạ ại trên cơ sở ả b ng chung, afin,…) Đồng thời module này cũng có khả năng chuyển đổi không gian màu, các biểu đồ,…
• Video (video analysis): module này cho phép phân tích các video có tính năng ước tính chuyển động, tách nền cũng như các thuật toán theo dõi v t th trong ậ ể opencv
• Cali 3d ( Camera Calibration and 3D Resconstruction): đây là thuật toán hình
học đa chiều cơ bản nh t, có thấ ể hiệu chu n máy ẩ ảnh single và stereo cũng như dự đoán được các đối tượng, thuật toán như là thư tín âm thanh nổi, các
y u t giúp tái t o 3D ế ố ạ
• Features2d (2d features framework): module có th phát hiể ện được các đặc tính n i bổ ật nhất trong b nh n di n, thông s i ch i hay b truy su t thông ộ ậ ệ ố đố ọ ộ ấ
s ố
• Objdetect ( object detection): module giúp phát hiện ra các đối tượng, đồng thời mô phỏng cho các hàm đã được định sẵn như Predefined classes VD: con người, khuôn mặt, m t, xe hơi,…) ắ
• Highgui ( high – level GUI ): đây là một giao diện rất dễ sử dụng nhằm thực
hi n quá trình giao tiệ ếp UI đơn giản trong Opencv
Trang 10• Videoio (video I/O): đây cũng là giao diện d sử d ng nhễ ụ ằm thu, mã hóa các video trong opencv
• GPU: thuật toán giúp tăng tốc GPU t nh ng module opencv khác ừ ữ
Trang 1111
CHƯƠNG 2 THIẾT KẾ CHƯƠNG TRÌNH
2.1 Mô tả ng d ứ ụng
Bài toán phát hi n chuyệ ển động (Motion Detection) là m t trong nh ng bài ộ ữ toán quan trọng trong lĩnh vực x lý ử ảnh và video Bài toán này được s dử ụng để phát hi n và giám sát s ệ ự thay đổi trong các hình nh hoả ặc video để phát hi n các ệ chuyển động của đối tượng trong khung hình
Ví d , trong m t hụ ộ ệ thống giám sát an ninh, phát hi n chuyệ ển động có th ể được sử dụng để ảnh báo cho người quản lý khi có một đối tượng di chuy n qua c ể khu vực được giám sát Trong video giám sát giao thông, phát hiện chuyển động
có thể được s dử ụng để theo dõi và phát hiện các phương tiện giao thông trái phép, ho c phát hi n các vặ ệ ật thể di chuyển trên đường
Trong bài toán này, ta s d ng các kử ụ ỹ thuậ ử lý ảnh đểt x so sánh các khung hình liên ti p và tìm ra s khác bi t gi a chúng Các kế ự ệ ữ ỹ thuật này bao g m so ồ sánh độ tương phản, độ sáng và màu s c c a các pixel trên nh N u s khác biắ ủ ả ế ự ệt giữa hai khung hình vượt qua một ngưỡng (threshold) được thi t l p, ta có th kế ậ ể ết luận r ng có s chuyằ ự ển động trong khung hình và ti n hành phát hiế ện đối tượng
di chuy n bể ằng cách xác định các vùng tương ứng trên hai khung hình
2.2 Đánh giá và điều ch ỉnh
Điều chỉnh kích thước khung hình: Kích thước khung hình c n phầ ải được điều chỉnh phù hợp với điều kiện thực tế Nếu khung hình quá l n, việc xử lý sẽ mất ớ nhi u thề ời gian và tài nguyên máy tính Ngượ ạc l i, n u khung hình quá nh , s ế ỏ ẽ khó phát hiện được các chuyển động nh ho c không chính xác ỏ ặ
S dử ụng các phương pháp lọc ảnh: Các phương pháp lọc ảnh như làm mờ
ho c l c thông th p có th giúp gi m nhi u và c i thi n k t qu phát hi n chuy n ặ ọ ấ ể ả ễ ả ệ ế ả ệ ể động
Kiểm tra độ tin c y: K t qu phát hi n chuyậ ế ả ệ ển động cần được kiểm tra để đảm
bảo tính chính xác và độ tin c y Có th s dậ ể ử ụng các phương pháp đánh giá hiệu suấ ểt đ đánh giá kết qu ả
S d ng các thu t toán khác nhau: Có nhi u thuử ụ ậ ề ật toán khác nhau để phát hiện chuyển động, và mỗi thuật toán có ưu nhược điểm riêng Do đó, sử dụng nhiều thuật toán khác nhau có th cể ải thiện k t qu phát hi n chuyế ả ệ ển động
2.3 Xây dựng ng d ứ ụng
Xây d ng ng d ng: Xây d ng ng d ng Phát hi n chuyự ứ ụ ự ứ ụ ệ ển động bằng thư
vi n OpenCV, Tkinter Trong quá trình xây dệ ựng chương trình, tôi đã sử ụng d