lOMoARcPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
HÁT HIỆN VÀ ĐẾM SỐ LƯỢNG PHƯƠNG TIỆN CHUYỂN ĐỘNG QUA VIDEO
NHÓM 19
Phạm Khắc Bình Huỳnh Văn Duy
1
Trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng
2
Trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng
Lớp 21DT1, Khoa Điện – Điện tử Lớp 21DT1, Khoa Điện – Điện tử
21115054120104@ sv.ute.udn.vn 21115054120108.@sv.ute.udn.vn
GVHD: ThS. Phạm Thị Thảo Khương
Khoa Điện – Điện tử, Trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng
1. TỔNG QUAN:
1.1 Đặt vấn đề:
Hiện nay, mặc đã những nghiên cứu, nhiều giải
pháp tháo gỡ tình trạng tắc nghẽn giao thông nhưng hiệu
quả chưa cao và tình trạng kẹt xe vẫn xảy ra thường xuyên
trên các trục đường giao thông, đặc biệt các khu đô thị.
vậy đề tài Deep Learing để đếm số lượng phương tiện
trong thành phố để mang lại kết quả tốt nhất.
1.2 Mục tiêu:
+ Giảm thiểu ùn tắc, tai nạn giao thông. + Nâng cao
nhận thức và ý thức tự giác chấp hành giao thông.
+ Nghiên cứu nhân rộng các giải pháp đột pv
khắc phục tình trạng ùn tắc giao thông, đồng thời
nâng cao hiệu quả quản lý trật tự đô thị.
1.3 Nhiệm vụ :
+ Tìm hiểu các bộ thư viện cài đặt cho mô hình.
+ Sử dụng ng cụ nhận diện để phát hiện ôtô trong video
giao thông.
+ Huấn luyện xây dựng hình nhận dạng, đếm số
xe.
1.4 Ý nghĩa:
+ Hỗ trợ xác định lưu lượng ô tô đang tham gia giao
thông trên các trục đường giao thông, giúp giải quyết các
vấn đề về giao thông.
+ Để phát hiện đếm được số phương tiện đang di
chuyển trên đường.
1.5 Phương pháp nghiên cứu:
+ Tìm hiểu các kĩ thuật xử lý ảnh.
+ Tìm hiểu hệ thống chương trình về phát hiện và đếm xe.
2. KHÁI NIỆM VỀ XỬ LÝ ẢNH VÀ BÀI
TOÁN ĐẾM PHƯƠNG TIỆN QUA
VIDEO:
2.1 Khái niệm về xử lí ảnh:
+ Xử ảnh một lĩnh vực mang tính khoa học công
nghệ.
+ Phương pháp chuyển đổi hình ảnh sang dạng số và thực
hiện một số hoạt động trên đó để nâng cao chất lượng
hình ảnh.
+ Là kỹ thuật áp dụng trong việc tăng cường và xử lý các
ảnh thu nhận từ các thiết bị như camera, webcam,… +
Đặc biệt về lĩnh vực AI: nhận dạng và xử lý ảnh của
robot, giao tiếp giữa robot với con người, xử lý hình ảnh.
2.2 Bài toán đếm phương tiện:
+ Phát hiện xe là một kỹ thuật để phát hiện vị trí, màu sắc
và kích thước khác nhau trong các ảnh bất k. Kỹ thuật
này ch nhận biết về các đặc trưng của xe và bỏ qua
những đặc trưng khác.
+ Nhược điểm: Xe trong ảnh thể những góc chụp
khác nhau và một số xe bị che khuất bởi các đối tượng.
3. TỔNG QUAN VỀ HỆ THỐNG:
3.1 Phân tích:
Bài toán nhận dạng đếm số phương tiện di chuyển là
bài toán phát hiện phương tiện trong môi trường phức
tạp , có nhiều xe xuất hiện đồng thời với nhiều góc chụp
khác nhau cùng với các phương tiện khác trong ảnh. Phát
hiện xe một kỹ thuật để phát hiện vị trí, màu sắc
kích thước khác nhau trong các ảnh bất k. Nhận biết
về c đặc trưng của các xe bỏ qua các đặc trưng khác.
3.2 Lưu đồ thuật toán:
Quy trình nhận dạng ô qua video ngắn được mô phỏng
qua sơ đồ thuật toán sau đây:
#
Pycharm 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.
+ Các biến này định nghĩa các thông số như kích thước
lOMoARcPSD| 46342576
BÁO CÁO HC PHN LP TRÌNH NG DNG
Một số ứng dụng lớn nTweeter, Facebook, Amazon
và Pinterest sử dụng Pycharm để làm IDE Python.
Trình chỉnh sửa mã thông minh:
- Giúp các lập trình viên viết mã chất lượng cao.
- Bao gồm các lược đồ màu cho các từ khóa, lớp hàm.
Điều này giúp tăng khả năng đọc và hiểu mã.
- Xác định lỗi một cách dễ dàng.
- Cung cấp tính năng tự động hoàn thiện và hướng dẫn
hoàn thiện mã. 4.2 Thư viện:
1. OpenCV
2. Thư viện numpy
3. Sử dụng ngôn ngữ lập trình Python
5. TRIỂN KHAI CHƯƠNG TRÌNH:
5.1 Chuẩn bị file và thư viện:
tối thiểu của đối tượng để xem xét (min_contour_width,
min_contour_height), sai số cho phép khi xác định vị trí
đối tượng qua đường (offset), chiều cao của đường đặt để
xem xét (line_height), thời gian chờ giữa các frame khi
hiển thị video (delay), khởi tạo danh sách rỗng để lưu trữ
đối tượng (detect =[]) và biến đếm (counter).
+ Hàm tam_chu_nhat tính toán tọa độ của tâm hình chữ
nhật, dựa trên tọa độ và kích thước của nó. * Khởi tạo
đối tượng VideoCapture:
+ Khởi tạo đối tượng VideoCapture đđọc video từ tệp
“video.mp4”.
+ Đọc lưu lại hai frame liên tiếp. * Xử
lý từng frame trong vòng lặp:
while ret:
# ... (các phần xử lý frame)
- Vòng lặp chính xử lý từng frame trong video.
* Xử lý frame:
+ Tính toán sự chênh lệch tuyệt đối giữa 2 frame liên tiếp.
+ Chuyển đổi nó sang ảnh thang độ xám, làm mờ Gausian.
+ Áp dụng ngưỡng để tạo ra ảnh nhị phân, làm giãn để lắp
đầy các khoảng trống.
+ Vẽ 1 đoạn đường trên frame, thực hiện phép đóng hình
thái để làm mịn đường viền. *Xử đường viền
(Contour):
Sơ lược về chương trình thực hiện:
Phát hiện đối tượng -> các phương tiện đang di chuyển
+
->
xác định khu vực nhỏ trên video -> đếm số phương
tiện đi qua khu vực đó.
+
đi qua vạch xem xét.
->
Theo dõi các đối tượng có hình chữ nhật bao quang
+
đếm số phương tiện đi qua vạch xem xét.
Hiển thị số thứ tự di chuyển qua vạch xem xét.
+
4
:
. CÔNG CỤ SỬ DỤNG THƯ VIỆN
Công cụ phần mềm
4.1
:
+
Một video ngắn về phương tiện 4 bánh di chuyển trên
đường.
Sử dụng Python, thư viện Opencv, phần mềm Pycharm.
+
:
Thuật toán chương trình
5.2
* Khai báo thư viện:
+
import cv2
là thư viện thị giác máy tính để xử lý hình
:
ảnh và video.
+
import numpy as np
là thư viện toán học trong python
:
cho phép làm việc với ma trận và mảng.
* Khởi tạo các biến và hàm:
lOMoARcPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
for (i, c) in enumerate(contorno):
# ... (các phần xử lý đường viền) + Vòng
lặp xử lý từng đường viền (contour).
+ Kiểm tra và vẽ các đối tượng hợp lệ lên frame.
* Xác định đường viền hợp lệ của các đối tượng:
Vòng lặp này lặp qua từng đường viền trong danh sách
contorno, và i ch mục, còn c là chính đường viền đó.
(x, y, w, h) = cv2.boundingRect(c) : Tính toán hình chữ
nhật giới hạn cho đường viền. contour_valid = (w >=
min_contour_width) and (h >= min_contour_height):
Kiểm tra xem chiều rộng và chiều cao của hình chữ nhật
giới hạn có lớn hơn hoặc bằng hay không.
if not contour_valid: Điều kiện để kiểm tra xem đường
viền hợp lệ có sai không. Nếu đường viền không hợp lệ,
mã sử dụng sẽ tiếp tục (continue) bỏ qua phần còn lại của
vòng lặp và chuyển sang lần lặp tiếp theo, bỏ qua việc xử
lý các đường viền không hợp lệ.
* Tọa độ tâm hình chữ nhật của đối tượng được
phát hiện:
tròn màu xanh lá cây có bán kính 4 pixel tại tâm tính toán
(tam) trong ảnh frame1. Tham số -1 ch ra rằng vòng
tròn cần được lấp đầy.
* Lặp lại danh sách và kiểm tra các đối tượng
qua vạch định sẵn:
+ Điều kiện này kiểm tra xem tọa độ y của tâm hiện tại có
nằm trong một phạm vi nhất định xung quanh line_height
hay không. Nếu đúng thì có nghĩa là đối tượng đã vượt
qua vạch được xác định trước và bộ đếm được tăng thêm
1 cho biết một đối tượng đã vượt qua vạch.
+ detect.remove((x, y)) : Nếu một đối tượng đã vượt qua
ranh giới, tâm của nó (x, y) sẽ bị xóa khỏi danh sách phát
hiện. Điều này có thể được thực hiện để tránh việc đếm
cùng một đối tượng nhiều lần.
* Hiển thị và xử lý sự kiện người dùng:
+
cv2. rectangle(frame1, (x, y), (x + w, y + h), (255, 0, 0),
2)
:
Thực hiện vẽ một hình chữ nhật màu xanh xung quanh
đối tượng trong ảnh frame1.
+
tam = tam_chu_nhat(x, y, w, h)
:
Gọi hàm tam_chu_nhat
với các tham số (
x, y, w, h
để xác định tâm
)
(
tam
)
của
hình chữ nhật bao quanh.
+
detect.append(tam):
Trung tâm được tính toán (tam)
được thêm vào danh sách có tên detect.
+
cv2.circle(frame1, t
am, 4, (0, 255, 0), -1
)
:
Vẽ một vòng
lOMoARcPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
+ Vẽ văn bản thông tin hiển thị frame. + Chờ phản hồi
từ bàn phím người dùng, nhấn ‘q’ để thoát khỏi vòng lặp.
* Giải phóng các tài nguyên và đóng cửa sổ.
Giải phóng tài nguyên bởi việc đóng đối tượng
VideoCapture và đóng tất cả các cửa sổ của OpenCV.
6. Kết quả thực nghiệm:
* Trước khi chạy chương trình:
* Sau khi chạy chương trình:
lOMoARcPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
7
. Đánh giá kết quả
:
7.1
Nhận diện xe chuyển động
:
-
Kết quả nhận dạng xe của mô hình là khá cao khi các xe
lưu thông ở đường phố thì có rất nhiều sự khác biệt về
màu sắc, kích thước, số lượng người ngồi trên xe và còn
bị ảnh hưởng bởi nhiều yếu tố khác nhau như bị che
khuất,…
-
Qua thực nghiệm thì nhận thấy rằng mô hình cho kết
quả nhận dạng cao nhất khi mà các xe không bị che khuất
và có kích thước vừa phải.
-
Đối với một số trường hợp xe không nhận dạng được thì
chủ yếu là do bị che khuất, kích thước và xe chưa được
huấn luyện.
7.2
Đếm số lượng phương tiện
:
Độ chính xác của hệ thống đếm phương tiện là khá cao.
Kết quả triển khai bài toán này như ta thấy ở trên có nhiều
khả quan khi ứng dụng vào bài toán yêu cầu xác định độ
chính xác không quá lớn, có thể đưa ra con số chấp nhận
được. Qua đó, ta có thể cải tiến để nâng cao khả năng
nhận dạng xe cũng như độ chính xác của bài toán phức
tạp. Bên cạnh đó thuật toán chưa ổn định cũng là một yếu
tố ảnh hưởng đến kết quả.
8
Kết luận
:
-
Opencv có rất nhiều sức mạnh để giúp bạn bắt đầu thực
hiện tầm nhìn máy tính với python.
Với vài chức năng cơ
bản để xử lý ảnh ở bài viết này bạn có thể làm được một
ứng dụng đơn giản để ch nh sửa ảnh với OpenCV.
-
Với sự phát triển của hệ thống nhận dạng đối tượng
bằng hình ảnh/ video là công nghệ được phát triển trên
nền tảng của trí tuệ nhân tạo AI, nên có thể nói công nghệ
nhận diện đang là xu hướng toàn cầu. Công nghệ này đã
và đang đóng góp không nhỏ cho việc kinh hoạt hệ thống
vận hành thông minh cho nhiều lĩnh vực khác nhau trên
toàn thế giới.
-
Nhưng cũng có những khó khăn khi nhận dạng phương
tiện trong ảnh:
+ Xe ô tô trong ảnh có thể có những góc chụp khác
nhau nên việc nhận dạng sẽ rất khó khăn.
+ Mỗi loại xe sẽ có những đặc trưng khác nhau nên
lOMoARcPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
việc nhân dạng xe cũng có thể không chính xác.
+ Một số xe bị che khuất cũng gây cản trở cho việc ----------------------------------------------------------------------------nhận
dạng.
-
9. Hướng phát triển:
- Để cải thiện độ chính xác, ta sẽ tiến hành thu thập
thêmnhiều dliệu hơn, đa dạng hơn. Tđó sẽ giúp
hình nhận dạng xe chính xác hơn. Ngoài ra để nhận diện
tính toán vận tốc xe hiệu quả, ta ng cần cải thiện thuật
toán nhận dạng và tính toán.
- Sau khi có một hệ thống nhận diện xe hiệu suất
ổnđịnh, đếm chính xác lưu lượng xe ô tham gia giao
thông trên đường ta sẽ ứng dụng vào những bài toán
khác lớn hơn trong thực tế để giải quyết các vấn đề về tắc
nghẽn giao thông.
10. Một số ứng dụng khác liên quan:
- Ứng dụng trong phát hiện đếm lưu lượng xe
tham giagiao thông trên một tuyến đường thông qua hình
ảnh được trích xuất từ các camera.
- Ứng dụng trong phát hiện xe vi phạm luật khi
tham giagiao thông được thông qua hình ảnh từ camera để
xác định hành vi vi phạm của xe khi đang lưu thông trên
đường.
- Ứng dụng trong tìm kiếm xe phục vụ điều tra của
các cơquan chức năng viết được vị trí xe cần tìm kiếm khi
đang tham gia giao thông.
Tài liệu tham khảo:
[1] Mohsen Amoei, 2020. Utilizing Computer Vision
and Data Mining for Predicting Road Traffic
Congestion. Master Thesis, Concordia University,
Canada.
[2] https://opencv.org/
[3] https://pythonprogramming.net/
[4] https://www.python.org/
[5] Thị giác máy tính
[6]Huong-dan-su-dung-opencv-python-tam-nhin-maytinh-
voi-opencv-bang-python
[7] https://viblo.asia/p/sort-deep-sort-mot-goc-nhin-
ve -object-tracking-phan-1-Az45bPooZxY#_3-sort---
simple-online-realtime-object-tracki ng -7 [8]
Vehicular Traffic Congestion Classification by Visual
Features and Deep Learning Approaches:
A Comparison
[9] https://miai.vn/2020/03/09/ket-hop-object-
detectionva-objecttracking-chuong-3-thu-lam-he-
thong-do-toc-doxe-hoi-tren-cao-toc/
[10] Bewley A, Ge Z, Ott L, Ramos F, Upcroft
B,“Simple online and realtime tracking”,
IEEE international conference on image processing (ICIP),
2016.

Preview text:

lOMoAR cPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
HÁT HIỆN VÀ ĐẾM SỐ LƯỢNG PHƯƠNG TIỆN CHUYỂN ĐỘNG QUA VIDEO NHÓM 19
Phạm Khắc Bình
Huỳnh Văn Duy
1 Trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng
2Trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng
Lớp 21DT1, Khoa Điện – Điện tử
Lớp 21DT1, Khoa Điện – Điện tử
21115054120104@ sv.ute.udn.vn
21115054120108.@sv.ute.udn.vn
GVHD: ThS. Phạm Thị Thảo Khương
Khoa Điện – Điện tử, Trường Đại học Sư phạm Kỹ thuật - Đại học Đà Nẵng 1. TỔNG QUAN:
+ Phương pháp chuyển đổi hình ảnh sang dạng số và thực
1.1 Đặt vấn đề:
hiện một số hoạt động trên đó để nâng cao chất lượng
Hiện nay, mặc dù đã có những nghiên cứu, nhiều giải hình ảnh.
pháp tháo gỡ tình trạng tắc nghẽn giao thông nhưng hiệu
+ Là kỹ thuật áp dụng trong việc tăng cường và xử lý các
quả chưa cao và tình trạng kẹt xe vẫn xảy ra thường xuyên
ảnh thu nhận từ các thiết bị như camera, webcam,… +
trên các trục đường giao thông, đặc biệt là ở các khu đô thị.
Đặc biệt về lĩnh vực AI: nhận dạng và xử lý ảnh của
Vì vậy đề tài Deep Learing để đếm số lượng phương tiện
robot, giao tiếp giữa robot với con người, xử lý hình ảnh.
trong thành phố để mang lại kết quả tốt nhất.
2.2 Bài toán đếm phương tiện: 1.2 Mục tiêu:
+ Phát hiện xe là một kỹ thuật để phát hiện vị trí, màu sắc
+ Giảm thiểu ùn tắc, tai nạn giao thông. + Nâng cao
và kích thước khác nhau trong các ảnh bất k礃. Kỹ thuật
nhận thức và ý thức tự giác chấp hành giao thông.
này ch椃ऀ nhận biết về các đặc trưng của xe và bỏ qua
+ Nghiên cứu và nhân rộng các giải pháp đột phá về những đặc trưng khác.
khắc phục tình trạng ùn tắc giao thông, đồng thời và
+ Nhược điểm: Xe trong ảnh có thể có những góc chụp
nâng cao hiệu quả quản lý trật tự đô thị.
khác nhau và một số xe bị che khuất bởi các đối tượng. 1.3 Nhiệm vụ :
3. TỔNG QUAN VỀ HỆ THỐNG:
+ Tìm hiểu các bộ thư viện cài đặt cho mô hình. 3.1 Phân tích:
+ Sử dụng công cụ nhận diện để phát hiện ôtô trong video
Bài toán nhận dạng và đếm số phương tiện di chuyển là giao thông.
bài toán phát hiện phương tiện trong môi trường phức
+ Huấn luyện và xây dựng mô hình nhận dạng, đếm số
tạp , có nhiều xe xuất hiện đồng thời với nhiều góc chụp xe.
khác nhau cùng với các phương tiện khác trong ảnh. Phát 1.4 Ý nghĩa:
hiện xe là một kỹ thuật để phát hiện vị trí, màu sắc và
+ Hỗ trợ xác định lưu lượng ô tô đang tham gia giao
kích thước khác nhau trong các ảnh bất k礃. Nhận biết
thông trên các trục đường giao thông, giúp giải quyết các
về các đặc trưng của các xe và bỏ qua các đặc trưng khác.
+ Các biến này định nghĩa các thông số như kích thước vấn đề về giao thông.
3.2 Lưu đồ thuật toán:
+ Để phát hiện và đếm được số phương tiện đang di
Quy trình nhận dạng ô tô qua video ngắn được mô phỏng chuyển trên đường.
qua sơ đồ thuật toán sau đây:
1.5 Phương pháp nghiên cứu:
+ Tìm hiểu các kĩ thuật xử lý ảnh.
+ Tìm hiểu hệ thống chương trình về phát hiện và đếm xe.
2. KHÁI NIỆM VỀ XỬ LÝ ẢNH VÀ BÀI
TOÁN ĐẾM PHƯƠNG TIỆN QUA VIDEO:
2.1 Khái niệm về xử lí ảnh: #
+ Xử lí ảnh là một lĩnh vực mang tính khoa học và công
Pycharm là một nền tảng kết kết hợp được JetBrains nghệ.
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. lOMoAR cPSD| 46342576
+ Một video ngắn về phương tiện 4 bánh di chuyển trên đường. + Sử dụng Pyth B o Á n O , t C h ÁO ư v HỌ iện C P Op H enẦN cv , LẬ p P h TR ần Ì mNH ềm ỨN Py G chD a Ụ r NG m.
5.2 Thuật toán chương trì : nh
* Khai báo thư viện:
+ import cv2 :là thư viện thị giác máy tính để xử lý hình ảnh và video.
+ import numpy as np :là thư viện toán học trong python
cho phép làm việc với ma trận và mảng.
* Khởi tạo các biến và hàm:
Sơ lược về chương trình thực hiện:
+ Phát hiện đối tượng -> các phương tiện đang di chuyển
-> xác định khu vực nhỏ trên video -> đếm số phương
tiện đi qua khu vực đó. + Vẽ
hộp xung quanh đối tương -> xác định các đối tượng đi qua vạch xem xét.
+ Theo dõi các đối tượng có hình chữ nhật bao quang ->
đếm số phương tiện đi qua vạch xem xét. + Hiển
thị số thứ tự di chuyển qua vạch xem xét.
4 . CÔNG CỤ SỬ DỤNG VÀ THƯ VIỆN:
4.1 Công cụ phần mềm :
Một số ứng dụng lớn như Tweeter, Facebook, Amazon
và Pinterest sử dụng Pycharm để làm IDE Python.
Trình chỉnh sửa mã thông minh:
- Giúp các lập trình viên viết mã chất lượng cao.
- Bao gồm các lược đồ màu cho các từ khóa, lớp và hàm.
Điều này giúp tăng khả năng đọc và hiểu mã.
- Xác định lỗi một cách dễ dàng.
- Cung cấp tính năng tự động hoàn thiện và hướng dẫn
+ Khởi tạo đối tượng VideoCapture để đọc video từ tệp
hoàn thiện mã. 4.2 Thư viện: “video.mp4”. 1. OpenCV
+ Đọc và lưu lại hai frame liên tiếp. * Xử 2. Thư viện numpy
lý từng frame trong vòng lặp:
3. Sử dụng ngôn ngữ lập trình Python while ret:
5. TRIỂN KHAI CHƯƠNG TRÌNH:
# ... (các phần xử lý frame)
5.1 Chuẩn bị file và thư viện:
- Vòng lặp chính xử lý từng frame trong video.
tối thiểu của đối tượng để xem xét (min_contour_width, * Xử lý frame:
min_contour_height), sai số cho phép khi xác định vị trí
+ Tính toán sự chênh lệch tuyệt đối giữa 2 frame liên tiếp.
đối tượng qua đường (offset), chiều cao của đường đặt để
+ Chuyển đổi nó sang ảnh thang độ xám, làm mờ Gausian.
xem xét (line_height), thời gian chờ giữa các frame khi
+ Áp dụng ngưỡng để tạo ra ảnh nhị phân, làm giãn để lắp
hiển thị video (delay), khởi tạo danh sách rỗng để lưu trữ đầy các khoảng trống.
đối tượng (detect =[]) và biến đếm (counter).
+ Hàm tam_chu_nhat tính toán tọa độ của tâm hình chữ
nhật, dựa trên tọa độ và kích thước của nó. * Khởi tạo
+ Vẽ 1 đoạn đường trên frame, và thực hiện phép đóng hình
đối tượng VideoCapture:
thái để làm mịn đường viền. *Xử lý đường viền (Contour): lOMoAR cPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
* Tọa độ tâm hình chữ nhật của đối tượng được phát hiện:
for (i, c) in enumerate(contorno):
tròn màu xanh lá cây có bán kính 4 pixel tại tâm tính toán
# ... (các phần xử lý đường viền) + Vòng
(tam) trong ảnh frame1. Tham số -1 ch椃ऀ ra rằng vòng
lặp xử lý từng đường viền (contour).
tròn cần được lấp đầy.
+ Kiểm tra và vẽ các đối tượng hợp lệ lên frame.
* Lặp lại danh sách và kiểm tra các đối tượng
* Xác định đường viền hợp lệ của các đối tượng:
qua vạch định sẵn:
Vòng lặp này lặp qua từng đường viền trong danh sách
+ Điều kiện này kiểm tra xem tọa độ y của tâm hiện tại có
contorno, và i là ch椃ऀ mục, còn c là chính đường viền đó.
nằm trong một phạm vi nhất định xung quanh line_height
hay không. Nếu đúng thì có nghĩa là đối tượng đã vượt
(x, y, w, h) = cv2.boundingRect(c) : Tính toán hình chữ
qua vạch được xác định trước và bộ đếm được tăng thêm
nhật giới hạn cho đường viền. contour_valid = (w >=
1 cho biết một đối tượng đã vượt qua vạch.
min_contour_width) and (h >= min_contour_height):
+ detect.remove((x, y)) : Nếu một đối tượng đã vượt qua
Kiểm tra xem chiều rộng và chiều cao của hình chữ nhật
ranh giới, tâm của nó (x, y) sẽ bị xóa khỏi danh sách phát
giới hạn có lớn hơn hoặc bằng hay không.
hiện. Điều này có thể được thực hiện để tránh việc đếm
if not contour_valid: Điều kiện để kiểm tra xem đường
viền hợp lệ có sai không. Nếu đường viền không hợp lệ,
mã sử dụng sẽ tiếp tục (continue) bỏ qua phần còn lại của
+ cv2. rectangle(frame1, (x, y), (x + w, y + h), (255, 0, 0),
2) : Thực hiện vẽ một hình chữ nhật màu xanh xung quanh
đối tượng trong ảnh frame1.
+ tam = tam_chu_nhat(x, y, w, h) : Gọi hàm tam_chu_nhat
với các tham số ( x, y, w, h ) để xác định tâm ( tam ) của hình chữ nhật bao quanh.
+ detect.append(tam): Trung tâm được tính toán (tam)
được thêm vào danh sách có tên detect.
+ cv2.circle(frame1, t am, 4, (0, 255, 0), -1 ) : Vẽ một vòng
vòng lặp và chuyển sang lần lặp tiếp theo, bỏ qua việc xử
cùng một đối tượng nhiều lần.
lý các đường viền không hợp lệ.
* Hiển thị và xử lý sự kiện người dùng: lOMoAR cPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
+ Vẽ văn bản thông tin và hiển thị frame. + Chờ phản hồi
* Sau khi chạy chương trình:
từ bàn phím người dùng, nhấn ‘q’ để thoát khỏi vòng lặp.
* Giải phóng các tài nguyên và đóng cửa sổ.
Giải phóng tài nguyên bởi việc đóng đối tượng
VideoCapture và đóng tất cả các cửa sổ của OpenCV.
6. Kết quả thực nghiệm:
* Trước khi chạy chương trình: lOMoAR cPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
7 . Đánh giá kết quả :
7.1 Nhận diện xe chuyển động :
- Kết quả nhận dạng xe của mô hình là khá cao khi các xe
lưu thông ở đường phố thì có rất nhiều sự khác biệt về
màu sắc, kích thước, số lượng người ngồi trên xe và còn
bị ảnh hưởng bởi nhiều yếu tố khác nhau như bị che khuất,…
- Qua thực nghiệm thì nhận thấy rằng mô hình cho kết
quả nhận dạng cao nhất khi mà các xe không bị che khuất
và có kích thước vừa phải.
- Đối với một số trường hợp xe không nhận dạng được thì
chủ yếu là do bị che khuất, kích thước và xe chưa được huấn luyện.
7.2 Đếm số lượng phương tiện :
Độ chính xác của hệ thống đếm phương tiện là khá cao.
Kết quả triển khai bài toán này như ta thấy ở trên có nhiều
khả quan khi ứng dụng vào bài toán yêu cầu xác định độ
chính xác không quá lớn, có thể đưa ra con số chấp nhận
được. Qua đó, ta có thể cải tiến để nâng cao khả năng
nhận dạng xe cũng như độ chính xác của bài toán phức
tạp. Bên cạnh đó thuật toán chưa ổn định cũng là một yếu
tố ảnh hưởng đến kết quả.
8 Kết luận :
- Opencv có rất nhiều sức mạnh để giúp bạn bắt đầu thực
hiện tầm nhìn máy tính với python. Với vài chức năng cơ
bản để xử lý ảnh ở bài viết này bạn có thể làm được một
ứng dụng đơn giản để ch椃ऀ nh sửa ảnh với OpenCV.
- Với sự phát triển của hệ thống nhận dạng đối tượng
bằng hình ảnh/ video là công nghệ được phát triển trên
nền tảng của trí tuệ nhân tạo AI, nên có thể nói công nghệ
nhận diện đang là xu hướng toàn cầu. Công nghệ này đã
và đang đóng góp không nhỏ cho việc kinh hoạt hệ thống
vận hành thông minh cho nhiều lĩnh vực khác nhau trên toàn thế giới.
- Nhưng cũng có những khó khăn khi nhận dạng phương tiện trong ảnh:
+ Xe ô tô trong ảnh có thể có những góc chụp khác
nhau nên việc nhận dạng sẽ rất khó khăn.
+ Mỗi loại xe sẽ có những đặc trưng khác nhau nên lOMoAR cPSD| 46342576
BÁO CÁO HỌC PHẦN LẬP TRÌNH ỨNG DỤNG
việc nhân dạng xe cũng có thể không chính xác.
+ Một số xe bị che khuất cũng gây cản trở cho việc ----------------------------------------------------------------------------nhận dạng. -
9. Hướng phát triển: -
Để cải thiện độ chính xác, ta sẽ tiến hành thu thập
thêmnhiều dữ liệu hơn, đa dạng hơn. Từ đó sẽ giúp mô
hình nhận dạng xe chính xác hơn. Ngoài ra để nhận diện
và tính toán vận tốc xe hiệu quả, ta cũng cần cải thiện thuật
toán nhận dạng và tính toán. -
Sau khi có một hệ thống nhận diện xe có hiệu suất
ổnđịnh, đếm chính xác lưu lượng xe ô tô tham gia giao
thông trên đường ta sẽ ứng dụng nó vào những bài toán
khác lớn hơn trong thực tế để giải quyết các vấn đề về tắc nghẽn giao thông.
10. Một số ứng dụng khác liên quan: -
Ứng dụng trong phát hiện và đếm lưu lượng xe
tham giagiao thông trên một tuyến đường thông qua hình
ảnh được trích xuất từ các camera. -
Ứng dụng trong phát hiện xe vi phạm luật khi
tham giagiao thông được thông qua hình ảnh từ camera để
xác định hành vi vi phạm của xe khi đang lưu thông trên đường. -
Ứng dụng trong tìm kiếm xe phục vụ điều tra của
các cơquan chức năng viết được vị trí xe cần tìm kiếm khi đang tham gia giao thông.
Tài liệu tham khảo:
[1] Mohsen Amoei, 2020. Utilizing Computer Vision
and Data Mining for Predicting Road Traffic
Congestion. Master Thesis, Concordia University, Canada. [2] https://opencv.org/
[3] https://pythonprogramming.net/ [4] https://www.python.org/ [5] Thị giác máy tính
[6]Huong-dan-su-dung-opencv-python-tam-nhin-maytinh- voi-opencv-bang-python
[7] https://viblo.asia/p/sort-deep-sort-mot-goc-nhin-
ve -object-tracking-phan-1-Az45bPooZxY#_3-sort---
simple-online-realtime-object-tracki ng -7 [8]
Vehicular Traffic Congestion Classification by Visual
Features and Deep Learning Approaches: A Comparison
[9] https://miai.vn/2020/03/09/ket-hop-object-
detectionva-objecttracking-chuong-3-thu-lam-he-
thong-do-toc-doxe-hoi-tren-cao-toc/
[10] Bewley A, Ge Z, Ott L, Ramos F, Upcroft
B,“Simple online and realtime tracking”,
IEEE international conference on image processing (ICIP), 2016.