Xây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minhXây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minhXây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minhXây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minhXây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minhXây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minhXây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minhXây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minhXây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minhXây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minh
Trang 1và Thành phố Hồ Chí Minh Để giải quyết vấn đề này, chúng ta đang cố gắng từng bước xây dựng một hệ thống giao thông đồng bộ và ứng dụng khoa học kỹ thuật mới trong hệ thống điều khiển giao thông
Hiện nay, trên thế giới các hệ thống giám sát thông minh bằng hình ảnh đã được phát triển và chứng minh được hiệu quả nhất định trên một số lĩnh vực như giám sát hoạt động con người, giám sát giao thông, Nhiều
hệ thống đã được nghiên cứu và phát triển, ví dụ như hệ thống giám sát giao thông có thể cho chúng ta biết được số lượng phương tiện lưu thông qua đoạn đường, các thông tin về tốc độ, đường đi của phương tiện Tuy nhiên, các hệ thống vẫn gặp phải một số khó khăn như hiệu quả của việc quan sát luôn phụ thuộc vào điều kiện môi trường quan sát, kiểu chuyển động của đối tượng hay các lý do khách quan khác Vì vậy, các hệ thống này vẫn còn đang được nhiều nhà khoa học,trung tâm nghiên cứu trên thế giới và Việt Nam quan tâm phát triển
Xuất phát từ thực tế trên, việc nghiên cứu và đưa ra các giải pháp phân tích lưu lượng, mật độ xe tại các giao lộ bằng hình ảnh thu được từ camera, hổ trợ việc điều khiển tín hiệu đèn giao thông là vô cùng thiết
Trang 2thực Được sự hướng dẫn của TS Ngô Quốc Việt tôi đã tiến hành nghiên
cứu đề tài “Xây dựng ứng dụng phân tích lưu lượng xe trong hệ thống giao thông thông minh”
Việc lựa chọn đề tài với các mục đích sau:
Nghiên cứu các phương pháp tiền xử lý và xử lý video nhằm xác định đối tượng chuyển động, các kỹ thuật xử lý xác định lưu lượng và mật
độ, ước lượng vận tốc chuyển động phương tiện giao thông, các tài liệu liên quan đến một số nghiên cứu về xử lý ảnh số và video
Sử dụng thư viện mã nguồn mở OpenCV(Open Computer vision) xây dựng chương trình thực nghiệm đếm số lượng từng loại xe, xác định vận tốc dòng xe, mật độ dòng xe
Luận văn sẽ được trình bày với 4 chương chính với nội dung như sau:
Chương 1 - TỔNG QUAN NGHIÊN CỨU
Chương 2 - CƠ SỞ LÝ THUYẾT
Chương 3 - PHÂN TÍCH LƯU LƯỢNG XE
Chương 4 - THỰC NGHIỆM VÀ ĐÁNH GIÁ
Trang 3Chương 1 - TỔNG QUAN NGHIÊN CỨU 1.1 Giới thiệu hệ thống giám sát thông minh
1.2 Một số hệ thống giám sát giao thông ứng dụng công nghệ xử
lý ảnh trên thế giới
1.3 Một số hệ thống giám sát giao thông ứng dụng công nghệ xử
lý ảnh ở Việt Nam
1.4 Giới thiệu bài toán phân tích lưu lượng xe
- Đầu vào của hệ thống sẽ là hình ảnh từ video thu được tại các điểm quan sát
- Đầu ra của hệ thống sẽ là các thông tin về chuyển động, số lượng, mật độ, của các phương tiện được giám sát.
Hình 1.2: Sơ đồ khối thiết kế hệ thống phân tích lưu lượng xe
Trang 4Tóm lại việc phân tích lưu lượng xe bằng hình ảnh có thể hiểu là việc phân tích và xử lý hình ảnh video qua việc giải quyết các bài toán sau:
Bài bài toán phát hiện các đối tượng chuyển động
Phát hiện các đối tượng chuyển động là bước cơ bản đầu tiên trong bài toán phân tích hình ảnh video, cụ thể đó là việc tách các các đối tượng chuyển động từ các hình ảnh nền của các đối tượng đó Phương pháp thường được sử dụng trong bài toán này đó là: phương pháp trừ ảnh nền, các phương pháp dựa trên thống kê, phương pháp chênh lệch tạm thời, và
các phương pháp dựa trên luồng thị giác,…
Bài toán nhận dạng và theo vết chuyển động của xe
Yêu cầu đối với bài toán nhận dạng và theo dõi chuyển động của xe
là xác định các thông tin về dòng xe, bao gồm: số lượng từng loại xe đi vào vùng quan sát, mật độ dòng xe, tốc độ chuyển động trung bình của dòng xe
1.5 Kết chương
Chương này trình bày tổng quan các nghiên cứu và các hệ thống giám sát giao thông ứng dụng công nghệ xử lý ảnh trên thế giới và trong nước, giới thiệu bài toán phân tích lưu lượng xe sẽ trình bày trong luận văn
Trang 5Chương 2 - CƠ SỞ LÝ THUYẾT 2.1 Các khái niệm cơ bản
2.1.1 Video
2.1.2 Xử lý ảnh và video
2.1.3 Bộ lọc hình thái (Morphology Filter)
2.2 Phát hiện và theo vết đối tượng chuyển động
Hình 2.5: Sơ đồ khối Hệ thống theo vết đối tượng chuyển động
2.2.1 Phát hiện đối tượng chuyển động
Phát hiện đối tượng chuyển động là quá trình đưa ra vết các đối tượng chuyển động từ các khung hình video [5] Quá trình này thực chất là quá trình xử lý chuỗi ảnh liên tiếp trong một đoạn video để phát hiện ra các đối tượng chuyển động trong một đoạn hình ảnh theo như hình 2.6
Hình 2.6: Tổng quan các khối xử lý trong bài toán phát hiện đối tượng
Đối tượng được giám sát
Phát hiện chuyển
Theo vết đối
Trang 62.2.2 Theo vết đối tượng chuyển động
Các phương pháp sử dụng theo vết đối tượng
Theo vết dựa vào mô hình: Hệ thống theo vết dựa vào mô hình 3D Độ chính xác cao, số lượng đối tượng theo dõi ít
2D-Theo vết đối tượng dựa vào miền: Nhận dạng những miền liên kết với nhau trong ảnh, khối mà có liên kết với mục tiêu được theo dõi
Theo vết đối tượng dựa vào đường bao động (Active Contour): Đường viền bao đối tượng được theo dõi, và liên tục cập nhật tự động Hạn chế chính của cách tiếp cận này là xử lý thế nào với trường hợp nhập nhằng
Theo vết đối tượng dựa vào đặc trưng: Các đặc trưng như tâm, màu sắc của đối tượng
2.3 Một số phương pháp phát hiện đối tượng chuyển động
2.3.1 Phương pháp trừ nền
2.3.2 Phương pháp Frame Difference
2.3.3 Phương pháp Temporal Median Filter
2.3.4 Phương pháp Gaussian Mixture Model
2.4 Giải quyết bài bài toán phát hiện các đối tượng chuyển động
Trong luận văn này học viên sử dụng phương pháp Frame Difference kết hợp với một số bộ lọc ảnh để phát hiện đối tượng chuyển động
Trang 7Hình 2.14: Sơ đồ phát hiện đối tượng chuyển động bằng phương pháp
Trang 8Ii(x,y) là cường độ sáng của pixel (x,y) thuộc khung Fi
Ii-1(x,y) là cường độ sáng của pixel (x,y) thuộc khung Fi-1
Để cho ra mặt nạ nhị phân của các đối tượng chuyển động B(x, y), ta
lấy ngưỡng như sau:
Sau các bước trên, kết quả nhận được là mặt nạ đối tượng chuyển động Mặt nạ đối tượng chuyển động là ảnh nhị phân với các điểm ảnh thuộc về đối tượng chuyển động sẽ mang giá trị 1 và các điểm ảnh thuộc
về nền sẽ mang giá trị 0 Mặt nạ nhị phân được phát hiện ở bước này sẽ là đối số đầu vào cho thuật toán tính mật độ dòng xe được trình bày trong mục 3.3
Trang 9Bước 5: Biểu diễn đối tượng:
Sau khi phát hiện vùng điểm ảnh thuộc đối tượng chuyển động và
áp dụng các phương pháp xử lý để loại bỏ các khu vực nhiễu, các điểm ảnh được nhóm lại thành các khối đại diện cho đối tượng, từ các khối đại diện cho đối tượng tiến hành xác định tính chất của đối tượng như: hình bao, đường viền, diện tích, vị trí,
2.5 Kết chương
Chương này trình bày cơ sở lý thuyết về các bộ lọc xử lý ảnh, các phương pháp phát hiện, theo dõi đối tượng chuyển động, giải quyết bài toán phát hiện các đối tượng chuyển động
Trang 10Chương 3 - PHÂN TÍCH LƯU LƯỢNG XE
3.1 Ước lượng số lượng phương tiện giao thông
3.1.1 Giới thiệu bài toán
Hình 3.1: Sơ đồ phương pháp đếm xe đề xuất
Đầu vào: danh sách các xe đã được theo vết (danh sách các xe đã được theo vết là kết quả đầu ra của thuật toán theo vết chuyển động xe được trình bài trong mục 3.4)
Đầu ra: số lượng từng loại xe
Điều kiện để 1 xe được đếm hợp lệ là:
List vehicle tracking V
v = getVehicleFromV()
prev= OldPosision(v)
cur = currentPosision(v)
Passed counting
Vehicle counting
True
False
Check v is end of list?
False
prev = cur
Trang 11 Xe đã được theo vết: Mục đích của việc theo vết là nhằm tránh việc 1 xe bị đếm nhiều lần
Xe đã vượt qua vạch ảo trên đường như mô tả trong hình 3.2
Hình 3.2: Mô tả vạch ảo(Counting line) được sử dụng để đếm xe
Để đếm số lượng xe chúng ta tạo 1 vạch ảo (counting line) trên mặt đường như hình 3.2 Vạch ảo sẽ chia mặt đường thành mặt phẳng A và mặt phẳng B Một xe được xác định là vượt qua vạch ảo khi xe di chuyển từ mặt phẳng A đến mặt phẳng B hay nói cách khác khi vị trí trước đó của xe nằm trên mặt phẳng A và vị trí hiện tại nằm trên mặt phẳng B thì xe được xác định là vượt qua vạch ảo Với mỗi xe vượt qua vạch ảo thì ta đếm số lượng xe tăng lên 1
Mô tả thuật toán:
Gọi V là danh sách các xe đã được theo vết bởi thuật toán theo vết chuyển động xe được trình bài trong mục 3.4
Bước 1: Lấy 1 xe v trong danh sách xe V đã theo vết
Bước 2 : Tính vị trí tọa độ điểm trọng tâm trong khung hình trước đó của
xe v và vị trí tọa độ điểm trọng tâm trong khung hình hiện tại của xe v:
Vạch ảo đếm xe(Counting
B
A
Mặt phẳng
Mặt phẳng
Trang 12 Nếu vị trí tọa độ điểm trọng tâm trong khung hình trước đó của xe v thuộc mặt phẳng A và vị trí tọa độ điểm trọng tâm trong khung hình hiện tại của xe v thuộc mặt phẳng B thì tăng số lượng xe lên 1 Nếu còn
xe trong danh sách V chưa xét thì quay lại bước 1, ngược lại thì kết
Input: Danh sách các xe đã được theo vết V
Output: Số lượng xe tương ứng từng loại xe
count_large = 0, count_small=0;// Khởi tạo
For each (v in V )
// vị trí xe ở khung hình trước đó, vị trí hiện tại của xe
old_posision = getOldPosisionVehicle(v);
current_position = getVehiclePosition(centroid);
if(old_position = “A” && current_position = “B”)
Trang 13Hình 3.3: Mô tả vùng quan sát để tính tốc độ xe
Chiều dài của vùng quan sát do người dùng định nghĩa trước và có thể xác định bằng cách dựa vào chiều dài của vạch kẻ đường và khoảng cách giữa 2 vạch kẻ đường như hình 3.4[4]
Hình 3.4: Mô tả kích thước vạch kẻ đường, đơn vị tính mét
(Nguồn: Quy chuẩn kỹ thuật quốc gia về báo hiệu đường bộ năm 2012)
Trang 14Trong hình 3.3: L1 là chiều dài của vạch kẻ đường, L2 là khoảng cách giữa hai vạch kẻ đường Chiều dài L1 = 1m ÷ 3m; L2 = 3m ÷ 9m và
tỷ lệ L1 : L2 = 1:3
Tốc độ khung hình trên giây của video và số khung hình để xe di chuyển qua vùng quan sát được sử dụng để tính thời gian xe di chuyển qua vùng quan sát, cụ thể hơn thời gianxe di chuyển qua vùng quan sát được tính dựa vào tỉ số giữa số khung hình để xe di chuyển qua vùng quan sát và tốc độ khung hình trên giây của video ta có công thức:
( ) Trong đó:
∆t là thời gian để xe di chuyển qua vùng quan sát(thời gian từ khi xe bắt đầu vào vùng quan sát đến khi xe ra khỏi vùng quan sát)
n là số khung hình để xe di chuyển qua vùng quan sát
fps là số khung hình trên giây của video
Vận tốc của xe sẽ được xác định dựa vào chiều dài của vùng quan sát( ) và thời gian để xe di chuyển qua vùng quan sát (∆t) và được tính theo theo công thức:
( )
Trong đó:
là tốc độ của xe đơn vị tính bằng km/h
Trang 15LROI là chiều dài của vùng quan sát tính theo mét
Trang 16Hình 3.5: Hình minh họa tính diện tích chiếm dụng mặt đường của xe
Theo phương pháp này, hình ảnh của khu vực giám sát F được xử lý
để tìm ra FG, Diện tích các khu vực chiếm dụng mặt đường của xe FG được tính bằng công thức
( )
Mật độ của dòng xe được tính bằng cách lấy giá tỉ số giữa tổng số điểm ảnh thuộc tất cả các đối tượng xe trong FG và tổng số điểm của mặt đường BG sau đó nhân cho 100 để tính mật độ theo phần trăm như công thức (3.5):
(
) ( )
3.3.2 Thuật toán đánh giá mật độ xe
3.4 Giải quyết bài toán nhận dạng và theo vết chuyển động của xe
3.4.1 Khái quát về bài toán nhận dạng và theo vết đối tượng
3.4.2 Nhận dạng xe dựa trên kích thước đường bao của đối tượng 3.4.3 Theo vết chuyển động xe và tính lưu lượng xe
Trang 17Hình 3.6: Sơ đồ thuật toán theo vết, tính lưu lượng xe
Các bước thực hiện:
Bước 1: Rút trích thông tin đối tượng chuyển động
Gọi M là danh sách chứa các đối tượng chuyển động Các đối tượng
con thuộc danh sách M được ký hiệu là mi Mỗi đối tượng mi chứa các thông tin như: Nhãn đối tượng(là ID của đối tượng), tâm đường bao đối tượng, dài, rộng, diện tích,…
Gọi T là danh sách các đối tượng chuyển động được theo vết Các
đối tượng con thuộc danh sách T sẽ được ký hiệu là t j Mỗi đối tượng tj
chứa các thông tin như: chỉ số ID đối tượng, các thông tin tương tự mi ,
M=danh sách chuyển động, T = {}
Còn m i trong
M chưa xét ?
Tính lưu lượng xe
Đúng
Đọc m i
T rỗng? Thêm m
i vào T
Sai
Trang 18lifetime(Số khung hình đối tượng được giám sát), active(số khung hình đã được theo vết), inactive(số khung hình đã không cập nhật, mất dấu)
Các đối tượng thuộc danh sách M sẽ được so khớp đặc trưng với các đối tượng cần theo vết trong danh sách T, để xác định xem mỗi đối tượng cần theo vết trong T sẽ là đối tượng nào trong danh sách M ở khung hình
tiếp theo sẽ được thực hiện trong bước 2
Bước 2: So sánh và cập nhật danh sách theo vết
Sau khi có được danh sách đối tượng M từ ảnh nhị phân chứa đối
tượng chuyển động của khung hình hiện tại, nếu danh sách T rỗng thì mi sẽ
được thêm ngay vào danh sách T để quản lý và theo vết Ngược lại, nếu danh sách T đã có đối tượng thì thao tác so khớp đối tượng và kiểm tra điều kiện sẽ được thực hiện
Để so khớp các m i với các t j, khoảng cách Euclide được sử dụng để
đánh giá khoảng cách giữa tâm của từng mi với tâm của tất cả các tj Nếu
m i và tj có khoảng cách tâm nhỏ nhất và phải nhỏ hơn một ngưỡng cho
trước thì m i trùng khớp với t j Ngưỡng được xác định là khoảng cách lớn nhất của tâm đối tượng giữa hai khung hình
Trong trường hợp có nhiều đối tượng tj thỏa đặc trưng khoảng cách với mi thì ta sử dụng thêm đặc trưng kích thước đường bao để xác định chính xác đối tượng tj phù hợp nhất
Thực hiện so khớp:
Trang 19 Nếu m i không trùng với bất kỳ tj nào thì mi sẽ được xem là đối
tượng mới và sẽ thực hiện bước 3.1 thêm đối tượng vào danh
sách T
Nếu mi trùng khớp với tj thì mi là đối tượng đang theo dõi ta
thực hiện bước 3.2
Nếu tất cả đối tượng trong danh sách T đã được so khớp các
đối tượng trong danh sách M mà tồn tại các đối tượng tj
không được cập nhật lại thông tin thì thực hiện bước 3.3: xóa
đối tượng tj ra khỏi danh sách
Bước 3.1: Thêm mới đối tượng vào danh sách T
Khi thêm mi vào danh sách T, chỉ số đối tượng của tj sẽ là chỉ số lớn nhất của các tj đang quản lý tăng thêm 1 Nếu tj là đối tượng đầu tiên thì sẽ
có chỉ số là 1 Các thông tin như nhãn, đường bao đối tượng, tâm đường
bao đối tượng,… của tj sẽ được gán dựa vào các thông tin đối tượng của
m i Nếu còn mi trong M chưa xét thì quay lại bước 1 để xử lý đối tượng
tiếp theo, ngược lại thì kết thúc
Bước 3.2: Cập nhật thông tin đối tượng trong danh sách T và phân tích lưu lượng xe
Trong bước 2, nếu xác định được là có tồn tại một mi trùng với duy nhất một tj thì Mi sẽ được xem như là đối tượng đang theo dõi và thông tin của m i sẽ đượng sử dụng để cập nhật lại thông tin tại vị trí mới cho t j Khi
cập nhật lại thông tin cho tj, chỉ số đối tượng của tj sẽ không thay đổi, các thông tin nhãn, tâm đường bao, sẽ được lấy từ đối tượng mi
Trang 20Tính lưu lượng xe như: Số lượng phương tiện sử dụng thuật toán được trình bày mục 3.1, Vận tốc trung bình dòng xe trình bày ở mục 3.2, mật độ dòng xe trình bày ở mục 3.3
Nếu còn mi trong M chưa xét thì quay lại bước 1 để xử lý đối tượng
tiếp theo, ngược lại thì kết thúc
Bước 3.3: Xóa đối tượng ra khỏi danh sách T
Với mỗi đối tượng tj không được cập nhật lại thông tin thì tj sẽ được
đánh dấu không cập nhật bằng cách tăng giá trị không cập nhật(inactive)
của tj lên 1, nếu inactive của tj lớn hơn 1 ngưỡng cho trước thì xoá tj ra
khỏi danh sách T
Nếu còn mi trong M chưa xét thì quay lại bước 1 để xử lý đối tượng
tiếp theo, ngược lại thì kết thúc
3.5 Kết chương
Chương này trình bày phương pháp ước lượng số lượng phương tiện giao thông, mật độ và vận tốc dòng xe, giải quyết bài toán nhận dạng và theo vết chuyển động nhằm ước lượng số lượng, vận tốc, mật độ dòng xe