báo cáo về nghiên cứu hệ thống camera phát hiện và tự động bám theo đối tượng di chuyển
Trang 1NGHIÊN CỨU HỆ THỐNG CAMERA PHÁT HIỆN VÀ TỰ ĐỘNG
BÁM THEO ĐỐI TƯỢNG DI CHUYỂN
RESEARCH A CAMERA SYSTEM FOR AUTOMATIC DETECT AND TRACKING OF MOVING OBJECTS
SVTH: Phạm Quang Sơn, Lê Đoàn Trương
Lớp 05DT1, 05DT3, Khoa Điện tử Viễn thông, Trường Đại học Bách Khoa
GVHD: Ths Nguyễn Duy Nhật Viễn
Khoa Điện tử Viễn thông, Trường Đại học Bách Khoa
TÓM TẮT
Camera tự động phát hiện và bám theo đối tượng di chuyển có ứng dụng rộng rãi cho hệ thống giám sát và an ninh Hệ thống được trình bày trong báo cáo này bao gồm một camera gắn trên một cơ cấu cơ khí có thể quay 360 độ được điều khiển bởi hệ thống nhúng Hệ thống có nhiệm vụ phát hiện và bám đối tượng đang di chuyển, thông qua điều khiển động cơ DC sao cho ảnh của đối tượng thu được ở chính giữa tâm camera Hình ảnh thu được sẽ truyền lên internet thông qua giao thức HTTP theo kiểu stream Báo cáo cũng giới thiệu về phương pháp xử lí ảnh, tự động tìm kiếm và nhận dạng đối tượng di động Các kết quả nghiên cứu được thực hiện bằng mô hình thực tế và kết quả đạt được như mong muốn
ABSTRACT
Camera, which automatically detects and tracks motion objects, is used widely for the security and surveillance system The System introduced in this paper consists of mechanical structure mounted Camera which can rotate 360 degree and be controlled by an embedded system The target of system is to move camera when anything moves in the vision area of camera
to the center of image The received images will be transmitted over the Internet through HTTP protocol, this image is mjpeg type This paper also introduces about Image Processing Method, Technique which automatically detect and track motion objects All research results were obtained
by using a practical model and we produced the excellent results as well as we expected
1 Đặt vấn đề
Phát hiện đối tuợng di chuyển và bám theo là một trong những ứng dụng quan trọng của hệ thống an ninh và hệ thống giám sát Ngày nay việc giám sát bằng camera rất phổ biến nhưng việc cho hệ thống tự động phát hiện ra đối tượng và bám theo đối tượng là rất khó khăn vì: Xây hệ thống xử lý ảnh trên nền vi điều khiển khó thực hiện, việc lập trình
và mở rộng các ứng dụng có nhiều hạn chế và không thừa hưỡng được những phần mềm
hỗ trợ xử lý ảnh cũng như các thư viện có sẵn
Để giải quyết vấn đề trên, đề tài nghiên cứu vấn đề thu thập và xử lý ảnh trên hệ thống nhúng linux Với cách làm này, hệ thống dễ dàng thu nhận được hình ảnh từ webcam dạng jpeg và xử lý ảnh nhờ các thư viện có sẵn hỗ trợ cho linux như libjpg, uvc lib, opencv…
2 Hệ thống nhúng
Linux nhúng là hệ điều hành được cài đặt trên các thiết bị nhúng với cấu trúc điển hình như sau:
Trang 2Hình 1 Cấu trúc tổng quát của một hệ thống Linux
Hình 2 Cấu trúc phần cứng hỗ trợ linux nhúng Hình 3 Chức năng phần cứng
Thiết bị phần cứng được sử dụng trong đề tài này là KIT ARM9 với các tính năng sau: CPU AT91SAM9260 32 bit, 180Mhz là bộ xử lý thực hiện điều hành, xử lý tất cả mọi hoạt động của hệ thống SDRAM là chip MT48LC16M16A2, 32M làm nhiệm vụ load kenel, làm bộ đệm, bộ nhớ tạm thời trong quá trình hoạt động FLASH là chip K9F2G08UOM 256M làm nhiệm vụ lưu trữ boot loader, lưu trữ nhân của hệ điều hành Console dùng UART0 để truy cập và thao tác trên hệ thống
Các thiết bị ngoại vi tùy theo ứng dụng mà kết nối như ethernet DM9161EA 10/100 duplex, usb host, usb device, sd card 4GB, uart, ADC Extension Connector
3 Thuật toán xử lý ảnh
3.1 JPEG
3.1.1 Khái niệm:
Chuẩn JPEG mô tả một họ kỹ
thuật nén ảnh cho tone liên tục (mức
xám hay màu) của ảnh JPEG khai
thác độ dư thừa sinh lý thị giác trong
ảnh JPEG được tiến nhất trí với giải
pháp DCT thích nghi để cải thiện và
tăng cường ảnh
3.1.2 Mã hóa JPEG:
Hình 4 Sơ đồ mã hóa JPEG
Trang 33.1.3 Chuyển đổi Cosin rời rạc DCT (Discrete Cosine Transform)
DCT thuận:
otherwise
or f
j i f v j u
i v
u v
u
F
1
0 0
2
1 )
(
) , ( 16 ).
1 2 ( cos 16 ).
1 2 ( cos 4
) ( ) ( ,
7
0 7
DCT ngược:
otherwise
or f
v u F v j u
i v
u j
i
f
1
0 0
2
1 )
(
) , ( 16
).
1 2 ( cos 16
).
1 2 ( cos ) ( ) ( 4
1 )
,
(
7
0 7
0
~
3.2 Thuật toán phát hiện sự chuyển động và bám theo đối tượng
3.2.1 Thuật toán phát hiện sự chuyển động
Có nhiều phương pháp tiếp cận
để phát hiện chuyển động trong hình ảnh
video liên tục Có thể so sánh khung hình
hiện tại với hình nền chúng ta chụp từ
ban đầu khi bật camera hoặc từ khung
hình trước Đối với phương pháp thứ
nhất thì đơn giản và giảm được việc xử
lý Tuy nhiên, cách tiếp cận có một bất
lợi lớn - điều gì sẽ xảy ra, ví dụ nếu có
một đối tượng đang di chuyển ở frame
đầu tiên, nhưng sau đó nó đã biến mất
Phương pháp thứ hai thì xử lý phức tạp
hơn, xử lý nhiều hơn nhưng lại thích nghi
với mọi môi trường, kể cả môi trường ít
thay đổi hoặc thay đổi nhiều Nhược
điểm là nếu đối tượng di chuyển một
cách rất chậm thì hệ thống không phát
hiện ra Nhưng có thể giải quyết bằng
cách tăng số khung hình trên giây Trong
đề tài này giới thiệu theo phương pháp
thứ hai
Giả sử rằng chúng ta có một bản
gốc 24 bpp RGB là hình ảnh hiện tại
(img1) và khung hình trước đó (img2),
một bản sao màu xám của nó
(gray_img1) và (gray_img2) Trước hết,
chúng ta hãy tìm những khu vực nơi hai khung hình khác nhau bằng cách trừ từng pixel
Begin
Thu khung hình hiện tại, và trước
đó Chuyển thành ảnh xám
So sánh từng pixel của 2 ảnh xám
Giá trị > ngưỡng cho truớc
Pixel ảnh đầu ra màu đen
Pixel ảnh đầu ra màu trắng
Số điểm trắng >
mức báo động
Không có
sự di chuyển
End
Có sự di chuyển
N
N
Y
Y
Hình 5 Lưu đồ thuật toán phát hiện sự chuyển động
Trang 4của 2 khung hình xám kia và so sánh với một ngưỡng cho trước Tiếp đó, chúng ta sẽ nhận được một hình ảnh ở đầu ra (result) với các
điểm ảnh màu trắng nơi mà những điểm ảnh
của khung hiện tại khác với khung hình trước
đó với một ngưỡng cho trước ở trên còn lại
màu đen Ta có thể đếm các điểm ảnh màu
trắng và nếu số điểm ảnh của nó lớn hơn một
mức độ báo động xác định trước chúng ta có
thể báo hiệu về một sự kiện chuyển động
Lưu đồ thuật toán được thể hiện ở hình 5
3.2.2 Thuật toán bám theo đối tượng
Khi có sự di chuyển giữa 2 khung hình
ta sẽ xác định được tọa độ lớn nhất và nhỏ nhất
trên một hàng mà ở đó pixel của hai khung
hình có giá trị khác nhau, sau đó ta sẽ tìm được
giá trị trung bình của các tọa độ kia đó là tâm
của đối tượng di chuyển Nếu tâm này nằm
ngoài điểm ảnh mà định nghĩa trước là điểm
min và max thì điều khiển động cơ quay sang
trái hoặc phải tùy vào là vượt điểm max hoặc
min Lưu đồ thuật toán được thể hiện ở hình 6
4 Kết quả
Kết quả thi công phần cứng hệ thống cũng như thuật toán xử lý ảnh được thể hiện bằng các hình ảnh dưới đây
4.1 Thi công hệ thống
Hình 7 Hình ảnh thật hệ thống
4.2 Kết quả thực hiện thuật toán xử lý ảnh
Hình 8 Ảnh đầu vào 1 và Ảnh đầu vào 2
Hệ thống gồm webcam độ phân giải 5.0 Mpxl, tiêu cự f = 3.58mm, tín hiệu ra 30 hình/s Quá trình xử lý điều khiển thực hiện bởi chip AT91SAM9260 tốc độ 180MHz Phần mềm được viết bằng ngôn ngữ C chạy trên nền Linux
Begin
Xác định tọa độ điểm khác biệt trên
1 hàng Xác định tâm
Tâm > xmax
Quay phải động
cơ 1 bước
Tâm < xmin
Quay trái động
cơ
1 bước
End
Y
N
Y
N
Hình 6 Lưu đồ thuật toán bám theo đối tượng
Trang 5Hình 9 Ảnh sau khi chuyển sang gray
Hình 10 Ảnh đầu ra và tâm của sự thay đổi
Kết luận
Bài báo đã xây dựng được thuật toán xử lý ảnh và điều khiển bám theo đối tượng chính xác Mô hình thực nghiệm cho kết quả tốt khẳng định tính đúng đắn của thuật toán
TÀI LIỆU THAM KHẢO
[1] Ths Nguyễn Duy Nhật Viễn (2006), “Giáo trình xử lý ảnh”, Ch 3 Tr 26-39
[2] Andrew Kirillov, Software Developer (4/2007), “Motion Detection Algorithms” [3] http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx