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ử dụng PyCharm để phát triển mã nguồn và quản lý dự án. PyCharm cung cấp cho người dùng một loạt tính năng hữu ích, giúp tăng hiệu suất và tiết kiệm thời gian. Để phát hiện chuyển động sử dụng OpenCV, chúng ta có thể sử dụng một số kỹ thuật xử lý ảnh, như: Lấy background: Lấy background từ các khung hình đầu tiên hoặc từ video. So sánh frame hiện tại với background để xác định các vật thể hoặc phần nào đó của ảnh có chuyển động hay không. Áp dụng các bộ lọc để loại bỏ nhiễu. Sử dụng các hàm xác định ranh giới để xác định các đối tượng. Chương trình có báo cáo đầy đủ, giải thích chi tiết về từng hàm, câu lệnh.
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
THỊ GIÁC MÁY TÍNH
ĐỀ TÀI: PHÁT HIỆN CHUYỂN ĐỘNG SỬ DỤNG OPENCV
SVTH: Nguyễn Thị Thanh Huyền Lớp :
GVHD:
-2023
Trang 2MỤC LỤC
MỞ ĐẦU
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
1.1 Tổng quan về thị giác máy tính 5
1.1.1 Khái niệm 5
1.1.2 Một số lĩnh vực ứng dụng của thị giác máy tính 5
1.2 Tổng quan về Pycharm 10
1.2.1 Khái niệm 10
1.2.2 Các tính năng của Pycharm 11
1.2.3 Ưu điểm của Pycharm 12
1.2.4 Nhược điểm của Pycharm 12
1.3 Tổng quan về OpenCV 13
1.3.1 Khái niệm 13
1.3.2 Đặc điểm nổi bật của OpenCV 13
1.3.3 Ứng dụng thực tế của Opencv 14
1.3.4 Các module phổ biến của Opencv 14
CHƯƠNG 2 CÀI ĐẶT CHƯƠNG TRÌNH
2.1 Cài đặt Pycharm 16
2.2 Hướng dẫn sử dụng Pycharm 19
2.3 Cài đặt OpenCV 20
2.4 Thực hiện chương trình 22
2.5 Chạy chương trình 22
KẾT LUẬN
Trang 3MỞ ĐẦ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 trongnhững vấn đề quan trọng trong lĩnh vực thị giác máy tính và trí tuệ nhân tạo Việcphá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ứuphá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ựachọ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ể của nghiên 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 ứngdụ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áthiện đối tượng chuyển động khó như phát hiện đối tượng chuyển động trongmôi trường phức tạp, những đối tượng chuyển động bị che khuất hoặc mấtdấ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ểusai 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áctì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ắckhá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 độngtrong các lĩnh vực khác nhau, như an ninh, giám sát, robot,… giúp tăng hiệuquả 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ônggian 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
Trang 4trên các đặc trưng như kích thước, hình dạng, màu sắc, vị trí và hướng dichuyển.
Công nghiệp: Phát hiện đối tượng chuyển động trong các dây chuyền sản xuấtgiú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 traquy 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ự độnghó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 antoà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ốthơ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ánphát hiện chuyển động mới để cải thiện độ 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: Cơ sở lý thuyết: Tổng quan về Thị giác máy tính, ứng dụng của thịgiác máy tính
Chương 2: Giới thiệu về Pycharm, OpenCV, hướng dẫn cài đặt
Chương 3: Xây dựng chương trình Phát hiện chuyển động sử dụng OpenCV
Trang 5CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1.1 Tổng quan về thị giác máy tính
1.1.1 Khái niệm
Thị giác máy tính (Computer Vision - CV) là một lĩnh vực của trí tuệ nhântạo (AI) liên quan đến việc giúp máy tính hiểu và xử lý thông tin từ hình ảnh vàvideo Trong thị giác máy tính, các thuật toán được sử dụng để phân tích, định
vị, phân loại và hiểu nội dung của hình ảnh và video
Hình 1.1 Thị giác máy tính (Computer Vision)Với sự phát triển của trí tuệ nhân tạo và công nghệ máy tính, thị giác máytính đang trở thành một lĩnh vực quan trọng và có tiềm năng rất lớn trong nhiềulĩnh vực khác nhau
1.1.2 Một số lĩnh vực ứng dụng của thị giác máy tính
Robot và các máy tự động như xe tự lái là lĩnh vực áp dụng nhiều đến côngnghệ thị giác máy tính Tuy nhiên, hàng loạt các lĩnh vực trong đời sống hàngngày đang phát triển sử dụng đến công nghệ thị giác máy tính:
Lĩnh vực y tế:
Những tiến bộ lớn liên tục xuất hiện trong các lĩnh vực nhận dạng mẫu và xử lýhình ảnh Đồng thời, không có gì đáng ngạc nhiên khi cộng đồng y tế và cácchuyên gia trong lĩnh vực chăm sóc sức khỏe cho rằng hình ảnh y khoa (kỹ thuật
Trang 6tạo hình ảnh trực quan về bên trong của cơ thể để phân tích lâm sàng và can thiệp
y tế, cũng như biểu thị trực quan chức năng của một số cơ quan hoặc mô sinh lýhọc) đã trở thành một phần thiết yếu trong cách thức làm việc của họ, hướng đếncác công cụ chẩn đoán tốt hơn và tăng đáng kể khả năng đưa ra các hành độnghiệu quả hơn
Phân tích hình ảnh y khoa là một trợ giúp lớn cho phân tích dự đoán và trị liệu
Ví dụ, thị giác máy tính được áp dụng cho hình ảnh nội soi có thể làm tăng mức
độ hợp lệ và đáng tin cậy của dữ liệu để giảm tỷ lệ tử vong liên quan đến ung thưđại trực tràng
Trong một ví dụ khác, công nghệ thị giác máy tính cũng cung cấp hỗ trợ kỹthuật cho phẫu thuật Mô hình hình ảnh 3D của hộp sọ, như là một phần của điềutrị khối u não, cung cấp tiềm năng to lớn trong việc chuẩn bị phẫu thuật thần kinhtiên tiến Ngoài ra, khi mà học sâu ngày càng được sử dụng trong các công nghệ
AI, việc tận dụng nó để phân loại các nốt phổi đã đạt được tiến bộ to lớn để chẩnđoán sớm ung thư phổi
Lĩnh vực Bán lẻ:
Thị giác máy tính đang được sử dụng trong các cửa hàng ngày càng nhiều, đặc biệt là giúp cải thiện trải nghiệm của khách hàng Pinterest Lens là một công cụ tìm kiếm sử dụng thị giác máy tính để phát hiện các đối tượng giống như cách Shazam phát hiện âm nhạc Bằng cách sử dụng ứng dụng điện thoại thông minh trong các cửa hàng, bạn có thể hình dung một sản phẩm trông như thế nào và nhận được các sản phẩm khác liên quan đến nó.
Nhận dạng khuôn mặt là một ứng dụng nổi tiếng về thị giác máy tính có thể được sử dụng trong trung tâm mua sắm hoặc trong cửa hàng Lolli & Pops, một cửa hàng kẹo có trụ sở tại Mỹ, đang sử dụng nhận dạng khuôn mặt để tích điểm cho khách hàng trung thành “Hãy tưởng tượng: Bạn bước vào cửa hàng yêu thích của mình và nhân viên bán hàng chào đón bạn bằng tên và bất cứ lúc nào bạn cần, họ chia sẻ với bạn những sản phẩm mới nhất của mình mà bạn có thể sẽ quan tâm nhất.” Sự đổi mới công nghệ có thể đưa
ra các giới thiệu được cá nhân hóa cụ thể cho từng khách hàng.
Dường như không có giới hạn khi nói về các trường hợp sử dụng của thị giác máy tính trong lĩnh vực bán lẻ, chúng cũng có thể bao gồm phân tích các kệ hoặc tầng trong cửa hàng, thậm chí cả phân tích tâm trạng của khách hàng, cụ thể phát hiện cảm xúc dựa trên các thuật toán thông qua hình ảnh trong video và phân tích các biểu cảm nhỏ nhất trên gương mặt, xử lý chúng
và cuối cùng, diễn giải cảm xúc chung.
Trang 7Chấm dứt việc phải xếp hàng để thanh toán có thể là mục tiêu cuối cùng của cải tiến công nghệ trong các cửa hàng Thị giác máy tính kết hợp với AI cuối cùng cũng có thể xóa sổ những hàng đợi thanh toán dài ác mộng.
Amazon đã phát triển một mô hình mới, Amazon Go, thúc đẩy các công nghệ bao gồm thị giác máy tính, IoT và AI để phát hiện, theo dõi và phân tích hành vi cũng như hành động của khách hàng trong cửa hàng để xử lý tự động quá trình thanh toán và gửi cho họ hóa đơn điện tử
Lĩnh vực Ngân hàng:
Khi nói đến việc liên kết các công nghệ AI với ngân hàng, chúng ta chủ yếu nghĩ đến việc phát hiện gian lận Mặc dù đó là một lĩnh vực tập trung đặc biệt cho công nghệ tiên tiến trong lĩnh vực này, thị giác máy tính có thể cải tiến nhiều thứ hơn nữa Các ứng dụng nhận dạng hình ảnh sử dụng học máy
để phân loại và trích xuất dữ liệu phục vụ cho việc giám sát quá trình xác thực các tài liệu như thẻ căn cước hoặc giấy phép lái xe có thể được sử dụng
để cải thiện trải nghiệm của khách hàng từ xa và tăng cường bảo mật.
Máy bay không người lái cũng có thể cải thiện an ninh và hiệu quả của hoạt động cứu hỏa bằng cách giám sát hoặc nghiên cứu các khu vực nguy hiểm Nhân viên cứu hỏa có thể chạy các phân tích dựa trên thuật toán tiên tiến để kiểm tra khói và lửa, từ đó đánh giá rủi ro và đưa ra dự đoán về sự lan truyền lửa.
Hệ sinh thái công nghệ thị giác máy tính tiên tiến
Theo nghiên cứu của ResearchAndMmarket.com, “AI trong thị trường thị giác máy tính dự kiến sẽ được định giá 3,62 tỷ USD vào năm 2018 và dự kiến
sẽ đạt 25,32 tỷ USD vào năm 2023”.
Trang 8Số lượng công nghệ là một phần của thị giác máy tính rất rộng và chúng bao gồm, ví dụ, nhận dạng hình ảnh, công nghệ được sử dụng để nhận dạng đối tượng, con người và cả hành động ngay trước khi học máy hoặc điện toán đám mây hay điện toán cạnh tận dụng các tài nguyên về CPU và khả năng lưu trữ trong nhiều ứng dụng thực tế như như máy bay không người lái cần xử lý thông tin tại chính nơi chúng được tạo ra Trong số những công nghệ tiên tiến đó, học máy và học sâu cho phép phát triển thị giác máy tính.
Học máy – Machine Learning
Học máy là một lớp thuật toán nhằm cung cấp cho các ứng dụng mức độ chính xác cao hơn Điểm thú vị là những thuật toán này không nhất thiết phải có một kế hoạch rõ ràng để đạt được điều này Dựa trên luồng dữ liệu đầu vào, số liệu thống kê định kỳ và phân tích nâng cao, chúng có thể liên tục cải thiện giá trị của kết quả.
Học máy dựa vào tiềm năng cao của các bộ dữ liệu Nói một cách đơn giản, một bộ dữ liệu về cơ bản là một tập hợp các dữ liệu có liên quan được kết hợp lại để mang đến nhiều giá trị hơn.
Hiện nay, hệ sinh thái thị giác máy tính cung cấp cho cộng đồng công nghệ một lượng lớn dữ liệu hình ảnh miễn phí Ví dụ, Thư viện hình ảnh của Đại học Columbia chia sẻ một bộ dữ liệu gồm 100 đối tượng khác nhau được chụp ở mọi góc trong một vòng quay 360 độ.
Học sâu – Deep learning
Học sâu là một phần của trí tuệ nhân tạo dựa trên các nguyên tắc trong cách học của con người để có được kiến thức tốt hơn Do đó, nó cung cấp những khả năng để cải thiện các quy trình, bao gồm tính chính xác của các kết quả thị giác máy tính.
Các thuật toán học sâu dựa vào các mạng thần kinh để ánh xạ các quy trình con dưới dạng phân cấp khái niệm Những khái niệm phức tạp được phân loại thành một chuỗi các khái niệm đơn giản hơn nhiều.
Nhận diện khuôn mặt – Face ID
Nhận dạng khuôn mặt lập bản đồ và lưu trữ danh tính kỹ thuật số nhờ vào các thuật toán học sâu Loại nhận dạng sinh trắc học này có thể được so sánh với các công nghệ nhận dạng giọng nói, mống mắt hoặc dấu vân tay hiện đang rất phổ biến.
Khái niệm này xuất hiện từ năm 2011 khi Google chứng minh rằng có thể tạo ra một máy dò tìm khuôn mặt chỉ bằng những hình ảnh không được gắn
Trang 9nhãn Họ đã thiết kế một hệ thống có thể tự học để phát hiện hình ảnh con mèo mà không cần giải thích với hệ thống là con mèo trông như thế nào Vào thời điểm đó, mạng lưới thần kinh là 1.000 máy tính được tạo thành từ 16.000 lõi Nó được nuôi dưỡng với 10 triệu video YouTube ngẫu nhiên, Tiến
sĩ J Dean, người làm việc trong dự án này, đã giải thích trong một cuộc phỏng vấn với New York Times rằng họ không bao giờ nói với hệ thống trong quá trình đào tạo rằng “đây là một con mèo”, vì vậy nó, về cơ bản, tự phát minh ra khái niệm về một con mèo.
Thị giác máy tính trong cuộc sống hàng ngày
Hình 1.2 Thị giác máy tính
Ngày nay, điện thoại thông minh có thể sử dụng máy ảnh chất lượng cao để nhận dạng Ví dụ: iPhone X của Apple chạy công nghệ Face ID để người dùng có thể mở khóa điện thoại của họ Dữ liệu khuôn mặt này được mã hóa
và lưu trữ trên đám mây và nó cũng có thể được sử dụng cho mục đích khác như xác thực khi thanh toán.
Tại Trung Quốc, các chuyên gia nghiên cứu về công nghệ thị giác máy tính đang đưa nó vào cuộc sống hàng ngày một tốc độ gia tăng đều đặn Không chỉ người tiêu dùng Trung Quốc sử dụng điện thoại thông minh và khả năng nhận dạng khuôn mặt của thiết bị như một phương tiện thanh toán ưa thích
mà công nghệ này còn giúp phát hiện và bắt giữ tội phạm.
Điều này có ý nghĩa gì với con người?
Trang 10Thị giác máy tính đang được sử dụng trong lĩnh vực an ninh để tìm kiếm tội phạm, dự đoán sự di chuyển khẩn cấp của đám đông, v.v.
Bằng cách phát triển ngày càng nhiều thuật toán thị giác máy tính tiên tiến phức tạp và hiệu quả, chúng ta đang cải thiện kết quả của nó và nhận dạng giọng nói của con người vì cả hai chủ đề này đều dựa trên các nguyên tắc so sánh Tất cả những điều này góp phần tăng cường khả năng nhận thức tình huống của AI và robot.
Khả năng học sâu và sức mạnh của các thuật toán học máy ngày càng lớn mạnh là nguyên nhân của những mối lo ngại liên tục gia tăng, hoặc ít nhất là cần phải có một sự chú ý đặc biệt đến sự phát triển của chúng Cụ thể, những công nghệ này đang đặt ra các vấn đề về quyền riêng tư và đạo đức Tuy nhiên, điều đó không có nghĩa là chúng ta nên dừng lại việc nghiên cứu Ngược lại, giống như bất kỳ quá trình phát triển công nghệ nào, thị giác máy tính phải được giám sát bởi tất cả mọi người trên toàn cầu thay vì chỉ là một cường quốc công nghiệp hay quân sự hay nào.
1.2 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ụngPycharm để 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ậptrì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ơnnữ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
Trang 11Hình 1.3 Giao diện của Pycharm
1.
1.1.
1.2.
1.2.1.
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ềunày giúp tăng khả năng đọc và hiểu mã
Trang 12 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
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ổ biến như HTML, CSS và JavaScript
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
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