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.
KHOA 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 MỤC LỤC MỞ ĐẦU Lí nghiên cứu đề tài .3 Mục tiêu nghiên cứu 3 Đối tượng nghiên cứu Phạm vi nghiên cứu Phương pháp nghiên cứu Kết cấu đề tài: CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 Tổng quan thị giác máy tính 1.1.1 Khái niệm 1.1.2 Một số lĩnh vực ứng dụng thị giác máy tính .5 1.2 Tổng quan Pycharm 10 1.2.1 Khái niệm 10 1.2.2 Các tính Pycharm 11 1.2.3 Ưu điểm Pycharm .12 1.2.4 Nhược điểm Pycharm .12 1.3 Tổng quan OpenCV .13 1.3.1 Khái niệm 13 1.3.2 Đặc điểm bật OpenCV 13 1.3.3 Ứng dụng thực tế Opencv 14 1.3.4 Các module phổ biến Opencv 14 CHƯƠNG 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 chương trình 22 2.5 Chạy chương trình 22 KẾT LUẬN Lí nghiên cứu đề tài MỞ ĐẦU Trong thực tế nay, việc phát đối tượng chuyển động vấn đề quan trọng lĩnh vực thị giác máy tính trí tuệ nhân tạo Việc phát đối tượng chuyển động áp dụng nhiều lĩnh vực 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 nhiều ứng dụng khác Việc sử dụng OpenCV nghiên cứu phát đối tượng có nhiều lợi ích, bao gồm tốc độ xử lý nhanh, tính ổn định khả xử lý loại ảnh video khác Bên cạnh đó, OpenCV cịn có nhiều thuật toán phát đố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 yêu cầu ứng dụng cụ thể Mục tiêu nghiên cứu Các mục tiêu cụ thể nghiên cứu phát đối tượng chuyển động bao gồm: Tìm cách xây dựng phương pháp phát đối tượng chuyển động có độ xác cao, tốc độ xử lý nhanh để đáp ứng nhu cầu thực tế ứng dụng Tìm hiểu phát triển thuật toán kỹ thuật để xử lý vấn đề phát đối tượng chuyển động khó phát đối tượng chuyển động môi trường phức tạp, đối tượng chuyển động bị che khuất dấu, đối tượng chuyển động nhanh, v.v Tìm cách tối ưu hóa q trình phát đối tượng chuyển động để giảm thiểu sai sót phát hiện, làm tăng độ xác, đồng thời giảm tải cho hệ thống xử lý lưu trữ Áp dụng kỹ thuật học máy để phát đối tượng chuyển động tình khó xử lý, đối tượng có kích thước, hình dạng màu sắc khác nhau, giúp tăng độ xác khả phát Nghiên cứu phát triển ứng dụng phát đối tượng chuyển động lĩnh vực khác nhau, an ninh, giám sát, robot,… giúp tăng hiệu nâng cao chất lượng sống người Đối tượng nghiên cứu Các đối tượng hình ảnh video, di chuyển khơng gian thường có hướng tốc độ khác Các đối tượng người, động vật, phương tiện giao thơng, vật thể sản xuất, v.v Trong trình phát đối tượng chuyển động, đối tượng xác định dựa khác biệt khung hình liên tiếp, phân loại dựa đặc trưng kích thước, hình dạng, màu sắc, vị trí hướng di chuyển Phạm vi nghiên cứu Phạm vi nghiên cứu phát đối tượng chuyển động áp dụng nhiều lĩnh vực, bao gồm: An ninh giám sát: Phát đối tượng chuyển động hệ thống an ninh giám sát giúp nhận diện hoạt động bất thường nguy hiểm, giúp ngăn chặn tội phạm bảo vệ an tồn cho cơng chúng Cơng nghiệp: Phát đối tượng chuyển động dây chuyền sản xuất giúp tăng suất giảm chi phí sản xuất cách giám sát kiểm tra quy trình sản xuất Tự động hóa: Phát đối tượng chuyển động ứng dụng tự động hóa, bao gồm xe tự hành robot, giúp cho thiết bị di chuyển cách an toàn hiệu Giải trí: Phát đối tượng chuyển động ứng dụng giải trí trị chơi điện tử ứng dụng AR/VR giúp tạo trải nghiệm người dùng tốt Phạm vi nghiên cứu mở rộng đến việc áp dụng kỹ thuật phát đối tượng chuyển động lĩnh vực phát triển thuật toán phát chuyển động để cải thiện độ xác tốc độ xử lý Phương pháp nghiên cứu Phương pháp nghiên cứu tài liệu: nghiên cứu tài liệu chuyên ngành Phương pháp thực nghiệm: xây dựng chạy thử nghiệm chương trình Kết cấu đề tài: Chương 1: Cơ sở lý thuyết: Tổng quan Thị giác máy tính, ứng dụng thị giác máy tính Chương 2: Giới thiệu Pycharm, OpenCV, hướng dẫn cài đặt Chương 3: Xây dựng chương trình Phát chuyển động sử dụng OpenCV CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 Tổng quan 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ĩnh vực trí tuệ nhân tạo (AI) liên quan đến việc giúp máy tính hiểu xử lý thơng tin từ hình ảnh video Trong thị giác máy tính, thuật tốn sử dụng để phân tích, định vị, phân loại hiểu nội dung hình ảnh video Hình 1.1 Thị giác máy tính (Computer Vision) Với phát triển trí tuệ nhân tạo cơng nghệ máy tính, thị giác máy tính trở thành lĩnh vực quan trọng có tiềm lớn nhiều lĩnh vực khác 1.1.2 Một số lĩnh vực ứng dụng thị giác máy tính Robot máy tự động xe tự lái lĩnh vực áp dụng nhiều đến công nghệ thị giác máy tính Tuy nhiên, hàng loạt lĩnh vực đời sống hàng ngày 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 lớn liên tục xuất lĩnh vực nhận dạng mẫu xử lý hình ảnh Đồng thời, khơng có đáng ngạc nhiên cộng đồng y tế chuyên gia lĩnh vực chăm sóc sức khỏe cho hình ảnh y khoa (kỹ thuật tạo hình ảnh trực quan bên thể để phân tích lâm sàng can thiệp y tế, biểu thị trực quan chức số quan mô sinh lý học) trở thành phần thiết yếu cách thức làm việc họ, hướng đến cơng cụ chẩn đốn tốt tăng đáng kể khả đưa hành động hiệu Phân tích hình ảnh y khoa trợ giúp lớn cho phân tích dự đốn trị liệu Ví dụ, thị giác máy tính áp dụng cho hình ảnh nội soi làm tăng mức độ hợp lệ đáng tin cậy liệu để giảm tỷ lệ tử vong liên quan đến ung thư đại trực tràng Trong ví dụ khác, cơng nghệ thị giác máy tính cung cấp hỗ trợ kỹ thuật cho phẫu thuật Mơ hình hình ảnh 3D hộp sọ, phần điều trị khối u não, cung cấp tiềm to lớn việc chuẩn bị phẫu thuật thần kinh tiên tiến Ngoài ra, mà học sâu ngày sử dụng cơng nghệ AI, việc tận dụng để phân loại nốt phổi đạt tiến 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 sử dụng cửa hàng ngày nhiều, đặc biệt giúp cải thiện trải nghiệm khách hàng Pinterest Lens cơng cụ tìm kiếm sử dụng thị giác máy tính để phát đối tượng giống cách Shazam phát âm nhạc Bằng cách sử dụng ứng dụng điện thoại thông minh cửa hàng, bạn hình dung sản phẩm trơng nhận sản phẩm khác liên quan đến Nhận dạng khn mặt ứng dụng tiếng thị giác máy tính sử dụng trung tâm mua sắm cửa hàng Lolli & Pops, cửa hàng kẹo có trụ sở Mỹ, 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 nhân viên bán hàng chào đón bạn tên lúc bạn cần, họ chia sẻ với bạn sản phẩm mà bạn quan tâm nhất.” Sự đổi cơng nghệ đưa giới thiệu cá nhân hóa cụ thể cho khách hàng Dường khơng có giới hạn nói trường hợp sử dụng thị giác máy tính lĩnh vực bán lẻ, chúng bao gồm phân tích kệ tầng cửa hàng, chí phân tích tâm trạng khách hàng, cụ thể phát cảm xúc dựa thuật toán thơng qua hình ảnh video phân tích biểu cảm nhỏ gương mặt, xử lý chúng cuối cùng, diễn giải cảm xúc chung Chấm dứt việc phải xếp hàng để tốn mục tiêu cuối cải tiến công nghệ cửa hàng Thị giác máy tính kết hợp với AI cuối xóa sổ hàng đợi toán dài ác mộng Amazon phát triển mơ hình mới, Amazon Go, thúc đẩy cơng nghệ bao gồm thị giác máy tính, IoT AI để phát hiện, theo dõi phân tích hành vi hành động khách hàng cửa hàng để xử lý tự động q trình tốn 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ơng nghệ AI với ngân hàng, chủ yếu nghĩ đến việc phát gian lận Mặc dù lĩnh vực tập trung đặc biệt cho công nghệ tiên tiến lĩnh vực này, thị giác máy tính cải tiến nhiều thứ Các ứng dụng nhận dạng hình ảnh sử dụng học máy để phân loại trích xuất liệu phục vụ cho việc giám sát trình xác thực tài liệu thẻ cước giấy phép lái xe sử dụng để cải thiện trải nghiệm khách hàng từ xa tăng cường bảo mật Lĩnh vực An ninh Việc sử dụng rộng rãi đa dạng thị giác máy tính áp dụng cho lĩnh vực an ninh Máy bay không người lái, UAV, tận dụng hệ thống thị giác máy tính để tăng cường khả phát người việc phát cháy rừng, sử dụng hình ảnh hồng ngoại (IR) phần giao thức giám sát cháy rừng Các thuật toán nâng cao phân tích đặc điểm hình ảnh video chuyển động độ sáng để phát lửa Hệ thống thực trích xuất nhắm mục tiêu để phát dễ dàng mẫu tính toán cách để thấy khác biệt đám cháy chuyển động thực tế bị hiểu nhầm hỏa hoạn Máy bay không người lái cải thiện an ninh hiệu hoạt động cứu hỏa cách giám sát nghiên cứu khu vực nguy hiểm Nhân viên cứu hỏa chạy phân tích dựa thuật tốn tiên tiến để kiểm tra khói lửa, từ đánh giá rủi ro đưa dự đoán 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 ResearchAndMmarket.com, “AI thị trường thị giác máy tính dự kiến định giá 3,62 tỷ USD vào năm 2018 dự kiến đạt 25,32 tỷ USD vào năm 2023” Số lượng công nghệ phần thị giác máy tính rộng chúng bao gồm, ví dụ, nhận dạng hình ảnh, cơng nghệ sử dụng để nhận dạng đối tượng, người hành động trước học máy điện toán đám mây hay điện toán cạnh tận dụng tài nguyên CPU khả lưu trữ nhiều ứng dụng thực tế như máy bay không người lái cần xử lý thơng tin nơi chúng tạo Trong số công nghệ tiên tiến đó, học máy 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ớp thuật toán nhằm cung cấp cho ứng dụng mức độ xác cao Điểm thú vị thuật tốn khơng thiết phải có kế hoạch rõ ràng để đạt điều Dựa luồng liệu đầu vào, số liệu thống kê định kỳ phân tích nâng cao, chúng liên tục cải thiện giá trị kết Học máy dựa vào tiềm cao liệu Nói cách đơn giản, liệu tập hợp liệu có liên quan kết hợp lại để mang đến nhiều giá trị Hiện nay, hệ sinh thái thị giác máy tính cung cấp cho cộng đồng cơng nghệ lượng lớn liệu hình ảnh miễn phí Ví dụ, Thư viện hình ảnh Đại học Columbia chia sẻ liệu gồm 100 đối tượng khác chụp góc vòng quay 360 độ Học sâu – Deep learning Học sâu phần trí tuệ nhân tạo dựa nguyên tắc cách học người để có kiến thức tốt Do đó, cung cấp khả để cải thiện quy trình, bao gồm tính xác kết thị giác máy tính Các thuật tốn học sâu dựa vào mạng thần kinh để ánh xạ quy trình dạng phân cấp khái niệm Những khái niệm phức tạp phân loại thành chuỗi khái niệm đơn giản nhiều Nhận diện khuôn mặt – Face ID Nhận dạng khuôn mặt lập đồ lưu trữ danh tính kỹ thuật số nhờ vào thuật toán học sâu Loại nhận dạng sinh trắc học so sánh với cơng nghệ nhận dạng giọng nói, mống mắt dấu vân tay phổ biến Khái niệm xuất từ năm 2011 Google chứng minh tạo máy dị tìm khn mặt hình ảnh khơng gắn nhãn Họ thiết kế hệ thống tự học để phát hình ảnh mèo mà khơng cần giải thích với hệ thống mèo trơng Vào thời điểm đó, mạng lưới thần kinh 1.000 máy tính tạo thành từ 16.000 lõi Nó ni dưỡng với 10 triệu video YouTube ngẫu nhiên, Tiến sĩ J Dean, người làm việc dự án này, giải thích vấn với New York Times họ không nói với hệ thống q trình đào tạo “đây mèo”, nó, bản, tự phát minh khái niệm mèo Thị giác máy tính 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 sử dụng máy ảnh chất lượng cao để nhận dạng Ví dụ: iPhone X Apple chạy cơng nghệ Face ID để người dùng mở khóa điện thoại họ Dữ liệu khn mặt mã hóa lưu trữ đám mây sử dụng cho mục đích khác xác thực tốn Tại Trung Quốc, chuyên gia nghiên cứu công nghệ thị giác máy tính đưa vào sống hàng ngày tốc độ gia tăng đặn Không người tiêu dùng Trung Quốc sử dụng điện thoại thông minh khả nhận dạng khuôn mặt thiết bị phương tiện tốn ưa thích mà cơng nghệ cịn giúp phát bắt giữ tội phạm Điều có ý nghĩa với người? Thị giác máy tính sử dụng lĩnh vực an ninh để tìm kiếm tội phạm, dự đốn di chuyển khẩn cấp đám đơng, v.v Bằng cách phát triển ngày nhiều thuật toán thị giác máy tính tiên tiến phức tạp hiệu quả, cải thiện kết nhận dạng giọng nói người hai chủ đề dựa nguyên tắc so sánh Tất điều góp phần tăng cường khả nhận thức tình AI robot Khả học sâu sức mạnh thuật toán học máy ngày lớn mạnh nguyên nhân mối lo ngại liên tục gia tăng, cần phải có ý đặc biệt đến phát triển chúng Cụ thể, công nghệ đặt vấn đề quyền riêng tư đạo đức Tuy nhiên, điều khơng có nghĩa nên dừng lại việc nghiên cứu Ngược lại, giống q trình phát triển cơng nghệ nào, thị giác máy tính phải giám sát tất người tồn cầu thay cường quốc công nghiệp hay quân hay 1.2 Tổng quan Pycharm 1.2.1 Khái niệm Pycharm tảng kết kết hợp JetBrains phát triển IDE (Mơi trường phát triển tích hợp) để phát triển ứng dụng cho lập trình trong Python Một số ứng dụng lớn Tweeter, Facebook, Amazon Pinterest sử dụng Pycharm để làm IDE Python họ Chúng ta chạy PyCharm Windows, Linux Mac OS Ngồi ra, chứa module package giúp lập trình viên phát triển phần mềm Python tiết kiệm thời gian cơng sức Hơn nữa, tùy chỉnh theo yêu cầu nhà phát triển 10 Hình 1.3 Giao diện Pycharm 1.1 1.2 1.2.1 1.2.2 Các tính Pycharm Trình sửa code thông minh Giúp viết mã chất lượng cao Nó bao gồm lược đồ màu (color schemes) cho từ khóa, lớp hàm Điều giúp tăng khả đọc hiểu mã Giúp xác định lỗi cách dễ dàng Cung cấp tính tự động hồn thành hướng dẫn để hồn thành mã Điều hướng mã Nó giúp nhà phát triển chỉnh sửa cải thiện mã với nỗ lực thời gian Với điều hướng mã, lập trình viên dễ dàng điều hướng đến hàm, lớp tệp Một lập trình viên xác định vị trí phần tử, ký hiệu biến mã nguồn thời gian ngắn 11 Hơn nữa, cách sử dụng chế độ thấu kính, nhà phát triển kiểm tra vá lỗi tồn mã nguồn cách kỹ lưỡng Tái cấu trúc Nó có lợi thực thay đổi hiệu nhanh chóng biến cục (local variables) biến toàn cục (global variables) Tái cấu trúc PyCharm cho phép nhà phát triển cải thiện cấu trúc bên mà không thay đổi hiệu suất bên code Pycharm giúp phân chia lớp chức mở rộng tốt với trợ giúp phương pháp trích xuất Hỗ trợ cho nhiều cơng nghệ web khác Nó giúp nhà phát triển tạo ứng dụng web Python Nó hỗ trợ cơng nghệ web phổ biến HTML, CSS JavaScript Các nhà phát triển có lựa chọn chỉnh sửa trực tuyến với IDE Đồng thời, họ xem trước trang web cập nhật/đã tạo Các nhà phát triển theo dõi thay đổi trình duyệt web trực tiếp PyCharm hỗ trợ AngularJS NodeJS để phát triển ứng dụng web Hỗ trợ cho web framework Python phổ biến PyCharm hỗ trợ web framework Django Cung cấp tính tự động điền gợi ý cho thông số Django Giúp vá lỗi code Django Hỗ trợ web framework thông dụng web2py Pyramid Hỗ trợ cho Thư viện Khoa học Python PyCharm hỗ trợ thư viện khoa học Python Matplotlib, NumPy Anaconda Các thư viện khoa học giúp xây dựng dự án Khoa học Dữ liệu Học máy Hỗ trợ biểu đồ tương tác giúp nhà phát triển hiểu liệu tốt Nó có khả tích hợp với cơng cụ khác IPython, Django Pytest Sự tích hợp giúp thúc đẩy giải pháp độc đáo 12 1.2.3 Ưu điểm Pycharm Cài đặt PyCharm dễ dàng PyCharm IDE dễ sử dụng Có nhiều plugin hữu ích phím tắt hữu ích PyCharm PyCharm tích hợp tính thư viện IDE tự động hồn thành tơ màu Nó cho phép xem mã nguồn cú nhấp chuột Tiết kiệm thời gian phát triển phần mềm Tính đánh dấu lỗi code giúp nâng cao trình phát triển Cộng đồng nhà phát triển Python vô lớn giải thắc mắc/ nghi ngờ cách dễ dàng 1.2.4 Nhược điểm Pycharm PyCharm khơng miễn phí phiên Professional đắt Tính tự điền (auto-complete) khơng tốt cho lập trình viên newbie Nó gây cố sửa chữa công cụ venv 1.3 Tổng quan OpenCV 1.3.1 Khái niệm 1.3 OpenCV (Open Computer Vision) thư viện mã nguồn mở hàng đầu cho xử lý thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết ngôn ngữ C/C++, có tốc độ tính tốn nhanh, sử dụng với ứng dụng liên quan đến thời gian thực Opencv có interface cho C/C++, Python Java hỗ trợ cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng khoảng 50000 người dùng số lượng download vượt triệu lần 13 Hình 1.4 Giao diện OpenCV 1.3.2 Đặc điểm bật OpenCV OpenCV thu hút đông đảo người dùng tin tưởng, sử dụng tính vơ đặc biệt, phân chia nhóm tính module riêng sau: Opencv có khả giúp xử lý hiển thị lên hình ảnh, video, I hay O(highgui, corem imgproc) Có thể phát vật thể như: nonfee, objdetect, features2d,… Opencv có tính CUDA acceleration hay biết đến GPU 1.3.3 Ứng dụng thực tế Opencv Hiện nay, opencv ứng dụng rộng rãi với nhiều mục đích khác công nghệ 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 xe tự lái Phân tích hình ảnh tỏng y học 14 Tìm kiếm phục hồi hình ảnh, video Ứng dụng vào phim cấu trúc 3D chuyển động Ứng dụng vào nghệ thuật đặt tương tác 1.3.4 Các module phổ biến Opencv Trong Opencv có cấu trúc module khác bao gồm số thư viện liên kết tĩnh liên kết động Một số module phổ biến Opencv gồm: Core (core functionality) – biết đến module nhỏ gọn, giúp xác định cấu trúc liệu bao gồm mảng đa chiều dày đặc, chức Core sử dụng nhiều module khác opencv Imgproc ( Image Processing ): Đây module có chức xử lý 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 hình học như: chỉnh size, warp phối cảnh, ánh xạ lại sở bảng chung, afin,…) Đồng thời module có khả chuyển đổi không gian màu, biểu đồ,… Video (video analysis): module cho phép phân tích video có tính ước tính chuyển động, tách thuật toán theo dõi vật thể opencv Cali 3d ( Camera Calibration and 3D Resconstruction): thuật tốn hình học đa chiều nhất, hiệu chuẩn máy ảnh single stereo dự đoán đối tượng, thuật toán thư tín âm nổi, yếu tố giúp tái tạo 3D Features2d (2d features framework): module phát đặc tính bật nhận diện, thông số đối chọi hay truy suất thông số Objdetect ( object detection): module giúp phát đối tượng, đồng thời mô cho hàm định sẵn Predefined classes VD: người, khuôn mặt, mắt, xe hơi,…) Highgui ( high – level GUI ): giao diện dễ sử dụng nhằm thực trình giao tiếp UI đơn giản Opencv Videoio (video I/O): giao diện dễ sử dụng nhằm thu, mã hóa video opencv 15 GPU: thuật toán giúp tăng tốc GPU từ module opencv khác 16 CHƯƠNG THIẾT KẾ CHƯƠNG TRÌNH 2.1 Mơ tả ứng dụng Bài tốn phát chuyển động (Motion Detection) toán quan trọng lĩnh vực xử lý ảnh video Bài toán sử dụng để phát giám sát thay đổi hình ảnh video để phát chuyển động đối tượng khung hình Ví dụ, hệ thống giám sát an ninh, phát chuyển động sử dụng để cảnh báo cho người quản lý có đối tượng di chuyển qua khu vực giám sát Trong video giám sát giao thông, phát chuyển động sử dụng để theo dõi phát phương tiện giao thông trái phép, phát vật thể di chuyển đường Trong toán này, ta sử dụng kỹ thuật xử lý ảnh để so sánh khung hình liên tiếp tìm khác biệt chúng Các kỹ thuật bao gồm so sánh độ tương phản, độ sáng màu sắc pixel ảnh Nếu khác biệt hai khung hình vượt qua ngưỡng (threshold) thiết lập, ta kết luận có chuyển động khung hình tiến hành phát đối tượng di chuyển cách xác định vùng tương ứng hai khung hình 2.2 Đánh giá điều chỉnh Bài toán phát chuyển động (Motion Detection) toán quan trọng lĩnh vực xử lý ảnh video Bài toán sử dụng để phát giám sát thay đổi hình ảnh video để phát chuyển động đối tượng khung hình Ví dụ, hệ thống giám sát an ninh, phát chuyển động sử dụng để cảnh báo cho người quản lý có đối tượng di chuyển qua khu vực giám sát Trong video giám sát giao thông, phát chuyển động sử dụng để theo dõi phát phương tiện giao thông trái phép, phát vật thể di chuyển đường Trong toán này, ta sử dụng kỹ thuật xử lý ảnh để so sánh khung hình liên tiếp tìm khác biệt chúng Các kỹ thuật bao gồm so sánh độ tương phản, độ sáng màu sắc pixel ảnh Nếu khác biệt hai khung hình vượt qua ngưỡng (threshold) thiết lập, ta kết luận có chuyển động khung hình tiến hành phát 17 đối tượng di chuyển cách xác định vùng tương ứng hai khung hình Điều chỉnh kích thước khung hình: Kích thước khung hình cần phải điều chỉnh phù hợp với điều kiện thực tế Nếu khung hình lớn, việc xử lý nhiều thời gian tài nguyên máy tính Ngược lại, khung hình q nhỏ, khó phát chuyển động nhỏ khơng xác Sử dụng phương pháp lọc ảnh: Các phương pháp lọc ảnh làm mờ lọc thông thấp giúp giảm nhiễu cải thiện kết phát chuyển động Kiểm tra độ tin cậy: Kết phát chuyển động cần kiểm tra để đảm bảo tính xác độ tin cậy Có thể sử dụng phương pháp đánh giá hiệu suất để đánh giá kết Sử dụng thuật toán khác nhau: Có nhiều thuật tốn khác để phát chuyển động, thuật tốn có ưu nhược điểm riêng Do đó, sử dụng nhiều thuật tốn khác cải thiện kết phát 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 chuyển động thư viện OpenCV, Tkinter Trong trình xây dựng chương trình, sử dụng PyCharm để phát triển mã nguồn quản lý dự án PyCharm cung cấp cho người dùng loạt tính hữu ích, giúp tăng hiệu suất tiết kiệm thời gian 18 Hình 2.1 Source code Phát đối tượng chuyển động Để phát chuyển động sử dụng OpenCV, sử dụng số kỹ thuật xử lý ảnh, như: Lấy background: Lấy background từ khung hình từ video So sánh frame với background để xác định vật thể phần ảnh có chuyển động hay khơng Áp dụng lọc để loại bỏ nhiễu Sử dụng hàm xác định ranh giới để xác định đối tượng 2.4 Giải thích chương trình Trong chương trình trên, sử dụng hàm cv2.VideoCapture() để lấy khung hình từ camera Sau đó, lấy background từ khung hình xử lý khung hình để phát chuyển động Các đối tượng phát bao quanh hộp màu xanh Nếu người dùng nhấn phím "q", chương trình dừng lại giải phóng tài nguyên Chương trình sử dụng OpenCV Tkinter để tạo giao diện đơn giản cho phép người dùng mở camera tệp video để phát chuyển động Trong chương trình, ta sử dụng module Tkinter để tạo giao diện đơn giản với nút "Open Camera" Khi người dùng nhấn nút này, chương trình mở camera phát chuyển động khung hình đầu vào Nếu người dùng muốn mở tệp video thay mở camera, họ nhấn nút "Open File" chọn tệp video từ cửa sổ mở tệp Trong chương trình, sử dụng hàm open_camera() để mở camera phát chuyển động Đầu tiên, ta sử dụng câu lệnh cap = cv2.VideoCapture(0) để mở camera Sau đó, ta đọc khung hình (frame) từ camera cách sử dụng hàm cap.read() Đối số hàm trả biến boolean cho biết liệu việc đọc khung hình có thành cơng hay khơng Nếu khơng, ta vịng lặp while Đối số thứ hai hàm chứa khung hình đọc Sau đó, ta chuyển đổi khung hình sang ảnh xám cách sử dụng cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) Tiếp theo, ta sử dụng cv2.absdiff() để tính tốn khác biệt khung hình khung hình trước Ta sử dụng giá trị ngưỡng để tạo ảnh nhị phân, giá trị pixel lớn ngưỡng đặt 255 giá trị pixel nhỏ ngưỡng đặt Sau đó, ta tìm đối 19 tượng có chuyển động cách tìm đường viền ảnh nhị phân Nếu diện tích đường viền nhỏ ngưỡng đó, ta bỏ qua Ngược lại, ta vẽ hình chữ nhật xung quanh đối tượng hiển thị khung hình lên hình Dùng hàm cv2.cvtColor() để làm chuyển đổi màu khung hình từ BGR sang màu xám (gray) Dùng hàm cv2.absdiff() để lấy giá trị tuyệt đối hiệu khung hình (gray) khung hình trước (last_frame) Điều giúp loại bỏ nhiễu tạo tranh khác biệt hai khung hình liên tiếp Sử dụng cv2.threshold() để áp dụng ngưỡng nhị phân lên tranh khác biệt, giúp tách riêng vùng chuyển động Sử dụng cv2.findContours() để tìm đường viền vùng chuyển động Duyệt qua tất đường viền tìm thấy vẽ hộp giới hạn (bounding box) xung quanh vùng chuyển động, diện tích đường viền lớn 900 pixel Cuối cùng, sử dụng cap.release() để giải phóng tài nguyên camera cv2.destroyAllWindows() để đóng tất cửa sổ hiển thị 2.5 Giao diện chương trình 20