GIỚI THIỆU 1.1 Các ứng dụng của phát hiện chuyển động... Được áp dụng nhiều trong thực tế, ví dụ như nâng cao khả năng lấy nét trong máy ảnh kỹ thuật số, tăng độ an toàn cho phương phươn
Trang 1KHOA CNTT
- - -
-ĐỀ TÀI
PHÁT HIỆN VÀ THEO DÕI CHUYỂN ĐỘNG
- Giáo viên hướng dẫn : thầy Hà Mạnh Toàn
Năm học 2020 - 2021
I GIỚI THIỆU
1.1 Các ứng dụng của phát hiện chuyển động
Trang 2Phát hiện chuyển động là một phát minh quan trọng Được áp dụng nhiều trong thực tế, ví dụ như nâng cao khả năng lấy nét trong máy ảnh
kỹ thuật số, tăng độ an toàn cho phương phương tiện vận tải sử dụng trí tuệ nhân tạo
Hình 1.1
1.2 Xác định đối tượng chuyển động
Trong các nhiện vụ mà ta yêu cầu máy tính thực hiện, phân tích và nhận biết tất cả các các đối tượng vẫn là một thách thức mặc dù máy tính ngày nay đã rất xuất sắc trong việc tái tạo
Trang 3chính xác trong việc nhận diện đối tượng.
Hình 1.2
1.3 Hình dạng của đối tượng, vật thể
Thế giới được hình thành từ nhiều vật thể khác nhau, xuất
hiện với nhiều tư thế Do vậy việc so sánh với cơ sở dữ liệu mẫu là không hề đơn giản.
Trang 4Hình 1.3
1.4 Phân loại nhận dạng
Thách thức nhất trong việc nhận dạng là nhận dạng loại, như
có thể phân biệt các trường hợp, các lớp đa dạng như con người, động vật , phương tiện.
Trang 5Hình 1.4a, 1.4b
II PHƯƠNG PHÁP NHẬN BIẾT CHUYỂN ĐỘNG ĐƠN GIẢN
Trang 6- Ý tưởng của Motion Detection được sáng tạo bởi vì máy ảnh, hình ảnh thực chất là một dãy số, các video được hình thành từ các khung hình di chuyển liên tục
- Khi áp dụng Motion Detection cho video thì ta sẽ lấy 2 khung hình liền kề (pair) trừ cho nhau để tìm điểm khác biệt Nói về bản chất của video thì có thể xem nó là một chồng ảnh, bởi video chính là việc trình chiếu các khung ảnh theo thời gian Do đó, việc áp dụng xử lý ảnh trên video sẽ là việc ta áp dụng xử lý ảnh trên từng khung hình (frame) bằng cách lần lượt lặp cho đến hết tất cả khung hình có trong video
Hình 2.1
III PHẦN MỀM NHẬN DIỆN CHUYỂN ĐỘNG ĐƠN GIẢN VỚI PYTHON VÀ OpenCV
Trang 7- Đầu tiên chúng ta cần cài đặt Python 3.8 và OpenCV :
Sau khi cài đặt Python 3.8 và OpenCV ta copy file
cv2.cp38-win_amd64.pyd từ thư mục OpenCV\build\python\cv2\python-3.8
Copy vào thư mục \Python 38\Lib\site-packages
Cài đặt numpy
Vào thư mục \Python37\Scripts chạy lệnh :
pip install pillow
2 Viết mã nguồn
Phần mềm sẽ thực hiện theo 3 bước
Bước 1 : Tìm chuyển động, so sáng các khu hình
Bước 2 : Tạo đường viền bao quanh đối tượng chuyển động
Bước 3 : Hiển thị kết quả
Bước 1:
Để đọc video ta sử dụng
cap = cv2.VideoCapture('FunniestSecurityCameraFails.mp4')
Trang 8Đọc hai khung hình từ video trong capture
ret , frame1 = cap read()
ret , frame2 = cap read()
Tìm ra điểm khác biệt giữa khung hình thứ nhất và khung hình thứ 2 diff = cv2.absdiff( frame1 , frame2 )
Chuyển sang thang độ xám để dễ dàng nhận diện các đường viền gray = cv2.cvtColor( diff , cv2.COLOR_BGR2GRAY)
Và để làm mờ thang độ xám
blur = cv2.GaussianBlur( gray , ( 5 5 , ), ) 0
Tìm sự khách biệt giữa hai khung hình và hiển thị
cv2.imshow( "feed", frame1 )
frame1 = frame2
ret , frame2 = cap read()
- Chạy thử chương trình
*Những đường viền được vây quanh những đối tượng chuyển động
Trang 9Bước 2 : Tìm đường viền vuông dựa trên đường viền vừa kiểm tra
*contour in contours
- Lặp lại danh sách các đường viền được tìm thấy bên trong vòng lặp for và lưu các tọa độ đường viền được tìm thấy
- ( x, y, w, h ) là các tọa độ
for contour in contours :
( x , , , y w h ) = cv2 boundingRect( contour )
if cv2 contourArea( contour ) < 900:
continue
cv2 rectangle( frame1 , ( x , ), ( y x w + , y h + ), ( , 0 255 , ), ) 0 2
cv2 putText( frame1 , "***: {} " format( 'Motion Tracking' ), ( 10 , 20 ), cv2 FONT_HERSHEY_SIMPLEX,
, ( 1 0, , 0 255 ), ) 3
- Đối tượng có diện tích nhỏ hơn 900 thì tiếp tục và lớn hơn thì bỏ qua
if cv2 contourArea( contour ) < 900:
continue
Bước 3 : Render
Trang 10Hết ! Cảm ơn thầy và các bạn đã quan tâm và theo dõi.