Tải bản đầy đủ (.pdf) (45 trang)

BÁO CÁO ĐỒ ÁN CƠ SỞ 5 PHÁT HIỆN VÀ NHẬN DIỆN BIỂN BÁO GIAO THÔNG SỬ DỤNG OPENCV

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.87 MB, 45 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO ĐỒ ÁN CƠ SỞ 5

PHÁT HIỆN VÀ NHẬN DIỆN
BIỂN BÁO GIAO THÔNG SỬ DỤNG OPENCV

Sinh viên thực hiện: Hoàng Thị Hương – 18IT2
Trần Thị Hương Ngân – 18IT3
Giảng viên hướng dẫn: ThS. Võ Hùng Cường

Đà Nẵng, ngày 25 tháng 03 năm 2021


Tieuluanmoi

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO ĐỒ ÁN CƠ SỞ 5

PHÁT HIỆN VÀ NHẬN DIỆN
BIỂN BÁO GIAO THÔNG SỬ DỤNG OPENCV

Sinh viên thực hiện: Hoàng Thị Hương – 18IT2
Trần Thị Hương Ngân – 18IT3


Giảng viên hướng dẫn: ThS. Võ Hùng Cường

Đà Nẵng, ngày 25 tháng 03 năm 2021

MỞ ĐẦU


Tieuluanmoi

Ngày nay với các tiến bộ của khoa học kỹ thuật thì mọi cơng việc hầu như đều có
thể tiến hành trên máy tính một cách tự động hóa hồn toàn hoặc một phần. Một trong
những sự thay đổi lớn đó là cách thức chúng ta thu nhận và xử lý dữ liệu. Các cơng cụ
nhập liệu như bàn phím hay máy scan dần bị thay thế bằng các thiết bị tiện lợi hơn như
màn hình cảm ứng, camera…
Hơn thế nữa, các máy tính để bàn khơng cịn là cơng cụ duy nhất có thể hỗ trợ cho
con người. Chúng ta bước sang thế kỷ 21 với sự phát triển mạnh mẽ của các thiết bị di
động, giải trí cầm tay hay smartphone. Với kích thước ngày càng nhỏ gọn và hiệu suất
làm việc thì khơng ngừng được cải tiến, các công cụ mini này hứa hẹn sẽ là một phần
không thể thiếu trong xã hội hiện đại. Và do đó, phát triển các ứng dụng trên các thiết bị
này cũng là một xu thế tất yếu.
Công nghệ nhận dạng là một trong các công nghệ đang được áp dụng cho các thiết
bị di động hiện nay. Nhận dạng có thể bao gồm nhận dạng âm thanh, hình ảnh. Các đối
tượng nhận dạng có nhiều kiểu như tiếng nói, chữ viết, khuôn mặt, mã vạch … và biển
báo giao thông cùng là một trong số đó. Chương trình nhận dạng biển báo giao thông
thường phức tạp và được cài đặt trên những hệ thống có bộ xử lý lớn, camera chất lượng
cao. Mục tiêu của báo cáo là giúp chúng ta phát hiện biển báo và nhận dạng nó một cách
nhanh nhất.


Tieuluanmoi


LỜI CẢM ƠN
Lời đầu tiên, chúng em xin trân trọng cảm ơn và bày tỏ lòng biết ơn sâu sắc nhất
tới giảng viên hướng dẫn môn Đồ án cơ sở 5 - thầy Võ Hùng Cường đã nhiệt tình hướng
dẫn.
Chúng em xin chân thành cảm ơn các thầy cô giáo đang giảng dạy tại Khoa công
nghệ thông tin và truyền thơng – Đại học Đà Nẵng đã nhiệt tình ủng hộ, cung cấp tài liệu
và đưa ra những ý kiến góp ý q báu.
Cuối cùng, chúng tơi xin chân thành cảm ơn tới bạn bè đã động viên, khuyến
khích và tạo điều kiện cho chúng tơi hồn thành tốt đề tài của mình.
Xin chân thành cảm ơn!

Nhóm sinh viên
Hồng Thị Hương
Trần Thị Hương Ngân
Đà Nẵng, ngày 25 tháng 03 năm 2021


Tieuluanmoi

NHẬN XÉT
(Của giảng viên hướng dẫn)
..........................................................................................................................................................................
..........................................................................................................................................................................
................................................................................................................................................
……………………………………………………………………………......................................................
......................................................
……………......................................................................................................................................................
..........................................................................................................................................................................
.....................................................................................................................................................................

……………………………………………………………………………......................................................
..........................................................................................................................................................................
..........................................................................................................................................................................
..........................................................................................................................................................................
............................
……………………………………………………………………………......................................................
..........................................................................................................................................................................
..........................................................................................................................................................................
..........................................................................................................................................................................
...........
……………………………………………………………………………......................................................
......................................................
……………......................................................................................................................................................
..........................................................................................................................................................................
.....................................................................................................................................................................
……………………………………………………………………………......................................................
..........................................................................................................................................................................
..........................................................................................................................................................................
..........................................................................................................................................................................
............................
……………………………………………………………………………......................................................
.....................................


Tieuluanmoi


MỤC LỤC
PHẦN MỞ ĐẦU


I

1. Đặt vấn đề

I

2. Mục đích

II

3. Phương pháp nghiên cứu

III

4. Phạm vi nghiên cứu

III

5. Nội dung nghiên cứu

III

6. Cấu trúc báo cáo

III

CHƯƠNG 1: TỔNG QUAN
1.1. Một số khái niệm cơ bản

2

2

1.1.1.

Trí tuệ nhân tạo

2

1.1.2.

Xử lý ảnh

2

1.1.3.

OpenCV

5

1.2. Giới thiệu về chương trình nhận diện biển báo giao thơng sử dụng OpenCV

8

1.2.1.

Mơ tả chương trình

8


1.2.2.

Ý tưởng

8

CHƯƠNG 2: PHƯƠNG PHÁP ĐỀ XUẤT VÀ TRIỂN KHAI THUẬT TOÁN
2.1. Các phương pháp phát hiện và nhận dạng biển báo giao thông

10
10

2.1.1. Các phương pháp phát hiện

10

2.1.2. Các phương pháp nhận dạng

14

2.2. Phương pháp đề xuất (Mơ hình mạng neural tích chập CNN)

14

2.3. Thuật tốn chương trình

17

2.3.1. Sơ đồ hoạt động chương trình


17

2.3.2. Tập dữ liệu

17

2.3.3. Tiền xử lý và phân chia dữ liệu

18


Tieuluanmoi

2.3.4. Định nghĩa mơ hình

19

2.3.5. Compile mơ hình

19

2.3.6. Khởi tạo đồ thị kết quả mơ hình

20

2.3.7. Tiến hành training

20

CHƯƠNG 3: DEMO CHƯƠNG TRÌNH


21

3.1. Mơ tả bài tốn

21

3.2. u cầu

23

3.3. Chạy project

24

3.4. Kết quả chạy

25

KẾT LUẬN

28

Kết quả đạt được

28

Hạn chế

28


Hướng phát triển

28

TÀI LIỆU THAM KHẢO

29


Tieuluanmoi


DANH MỤC HÌNH ẢNH
Hình 1: Ảnh chụp biển báo trong điều kiện sương mù dày đặc

II

Hình 2: Trí tuệ nhân tạo

2

Hình 3: Nhận dạng vật thể

4

Hình 4: Ví dụ về dùng OpenCV để nhận diện khn mặt

6


Hình 5: Cấu trúc thư viện OpenCV

7

Hình 6: Ví dụ về biển báo được nhận diện

8

Hình 7: Các vị trí đề cử điểm ảnh cho tâm đối tượng

11

Hình 8: Nhân các góc gradient của một tam giác cho 3. Kết quả các góc sẽ bằng nhau. 12
Hình 9: Vùng kiểm sốt

13

Hình 10: Xây dựng ảnh biến đổi khoảng cách

13

Hình 11: Mạng lưới thần kinh tích chập hay Convolutional Neural Networks (CNN)

15

Hình 12: Mơ hình CNN

15

Hình 13: Sờ đồ hoạt động chương trình


17

Hình 14: Biển báo rẽ trái và rẽ phải

18

Hình 15: Biển báo đi thẳng và biển báo dừng

18

Hình 16: Biển báo đi thẳng rẽ trái - Biển báo đi thẳng rẽ phải

18

Hình 17: Train:validation (0.8:0.2)

19

Hình 18: Định nghĩa mơ hình

19

Hình 19: Compile mơ hình

19

Hình 20: Khởi tạo đồ thị và kết quả mơ hình

20


Hình 21: Tiến hành trainning

20

Hình 22: Bài tốn nhận diện biển báo giao thơng

22

Hình 23: Mẫu biển báo hiệu lệnh

23

Hình 24: Kết quả nhận dạng biển báo dừng

25

Hình 25: Kết quả nhận dạng biển báo đi thẳng

25

Hình 26: Kết quả nhận dạng biển báo rẽ phải

26


Tieuluanmoi

Hình 27: Kết quả nhận dạng biển báo rẽ trái


26

Hình 28: Kết quả nhận dạng biển báo đi thẳng rẽ trái

27

Hình 29: Kết quả nhận dạng biển báo đi thẳng rẽ phải

27

DANH MỤC TỪ VIẾT TẮT

CNN
GTSRB
AI
MLL
OpenCV

Convolutional Neural Network
German Traffic Sign Recognition Benchmark
Artificial Intelligence
Machine Learning Library
Open Source Computer Vision Library

IPP

Integrated Performance Primitives

PCA


Principal Components Analysis

SVM

Support vector machine


PHẦN MỞ ĐẦU
1. Đặt vấn đề
Biển báo giao thông là các qui định cho người điều khiển phương tiện tham gia giao
thông bắt buộc phải tuân thủ để đảm bảo an tồn cho người và phương tiện tham gia giao
thơng. Đây là những ký hiệu đơn giản và bắt buộc phải biết đối với những người tham gia
giao thông, chúng được đặt ở những vị trí giúp cho người điều kiển phương tiện tham gia
giao thông dễ quan sát nhất. Tuy nhiên, trên thực tế một số biển báo giao thơng đã bị che
khuất bởi một số cơng trình xây dựng, biển quảng cáo trái phép hay cây mọc phía trước
không được dọn dẹp thường xuyên và đôi khi do tác động ngoại cảnh làm biển báo giao
thơng có thể bị quay nghiêng đi một góc làm cho việc quan sát của người điều khiển
phương tiện giao thông gặp rất nhiều khó khăn.
Ngày nay, khi mà nền khoa học đang phát triển lên những tầm cao mới, các nhà khoa
học mong muốn đưa xe thông minh - loại phương tiện có khả năng tự di chuyển tham gia
giao thơng cùng với các phương tiện khác do con người điều khiển. Để làm được điều
này, có rất nhiều vấn đề được đặt ra từ khâu tự động tránh vật cản tĩnh, tự động tránh các
phương tiện khác cũng đang tham gia giao thông (vật cản động) cho đến vấn đề tuân thủ
các qui định bắt buộc trên tuyến đường thông qua biển báo giao thông. Vấn đề tự động
quan sát và hiểu được biển báo giao thông cho xe thông minh một cách chính xác trong
mọi điều kiện khác nhau về ánh sáng, sương mù, trời mưa, tuyết và ngay cả khi trời tối
đang được đặt ra cho các nhà khoa học, với mong muốn giải quyết đồng thời tính chính
xác và tốc độ xử lý cao.
Rất nhiều nghiên cứu thực nghiệm và lý thuyết đã và đang được thực hiện, tuy nhiên
thực tế trong nhiều tình huống khơng mong muốn các nghiên cứu đang gặp rất nhiều khó

khăn. Bài báo này phát triển giải thuật cho việc dị tìm và nhận diện các biển báo giao
thông trong điều kiện khác nhau về thời tiết, ánh sáng và sương mù (chương trình này đã
được tác giả lập, cho chạy thử nghiệm tại Viện Cơng nghệ Châu Á, Thái lan và hồn
thiện tại trường Đại học Nha trang). Trong nghiên cứu này, một điểm ảnh


có thể được coi là điểm biên nếu ở đó có sự thay đổi đột ngột về mức xám; tập hợp các
điểm biên tạo thành biên. Ảnh được phân tích, xử lý dựa vào biên. Các ảnh dùng trong
nghiên cứu này là ảnh đa cấp xám được chụp từ thực tế trên một số tuyến đường trong
điều kiện thời tiết khác nhau, với ảnh màu sẽ được chuyển sang đa cấp xám trước khi đưa
vào xử lý.

Hình 1: Ảnh chụp biển báo trong điều kiện sương mù dày đặc

Những năm gần đây, trí thơng minh nhân tạo, cụ thể hơn là Machine Learning và
Deep Learning đang nổi lên là bằng chứng cho cuộc công nghệ cách mạng công nghiệp
lần thứ tư. Vận dụng từ học phần Trí tuệ nhân tạo và Xử lý ảnh cho đề tài này, với yêu
cầu đầu vào là một ảnh từ biển báo giao thông và đầu ra là tên tương ứng của biển báo,
với số lượng biển báo giao thông là cố định và đây là bài toán phân biệt nên chúng ta sẽ
coi đây là bài toán phân loại ảnh, với số lớp cần phân loại chính là số lượng loại biển báo
giao thơng cần xác định.

2. Mục đích
Nghiên cứu và tìm hiểu các phương pháp nhận dạng, áp dụng vào nhận diện biển báo
giao thơng, xây dựng chương trình, cài đặt thực nghiệm chương trình phát hiện và nhận
dạng biển báo giao thông từ bộ ảnh tĩnh.


Chương trình được xây dựng giúp người dùng có một cách tiếp cận nhanh chóng hơn
về luật giao thơng, cụ thể là công dụng của các biển báo giao thông.


3. Phương pháp nghiên cứu
Phương pháp tài liệu:


Tìm hiểu lập trình Python và cơ sở lý thuyết về thuật tốn CNN



Tìm hiểu các phương pháp nhận dạng biển báo giao thơng

​Tìm hiểu và lựa chọn công cụ hỗ trợ
Phương pháp thực nghiệm:


Xây dựng chương trình thực nghiệm

4. Phạm vi nghiên cứu
Dữ liệu xử lý là là file ảnh thu từ video với góc ảnh nghiêng khơng đáng kể. Ảnh thu
lại được trong điều kiện ánh sáng bình thường (trời khơng mưa to, không bị ngược sáng,
không bị sương mù dày đặc), có chất lượng ổn.

5. Nội dung nghiên cứu


Tìm hiểu các kĩ thuật xử lý ảnh trong nhận diện hình học



Xây dựng hệ thống nhận diện các biển báo khác nhau




Công cụ thực hiện: Pycharm



Ngôn ngữ: Python

6. Cấu trúc báo cáo
Báo cáo “ Phát hiện và nhận diện biển báo giao thông sử dụng OpenCV ” bao gồm
tất cả 4 phần.
Chương I – Tổng quan: Giới thiệu khái quát và mục đích của đề tài này. Giới thiệu
về các kiến thức nền tảng cũng như công nghệ và phần mềm được sử dụng trong đề tài
bao gồm kiến thức về xử lý ảnh, thư viện xử lý ảnh OpenCV


Chương II – Phương pháp đề xuất và xây dựng thuật tốn: Trình bày tổng quan về
biển báo giao thơng Việt Nam, phương pháp đề xuất và từ đó triển khai thuật toán xây
dựng để giải quyết bài toán nhận dạng biển báo.


Chương III – Demo chương trình: Từ phương pháp và thuật tốn đã tìm hiểu, xây
dựng một chương trình để nhận dạng đưa ra đầu ra cho bài toán cần giải quyết.
Phần Kết luận – Đánh giá kết quả và kết luận: Tổng kết quá trình thực hiện và rút ra
hướng phát triển sau này.


CHƯƠNG 1: TỔNG QUAN
1.1. Một số khái niệm cơ bản

1.1.1. Trí tuệ nhân tạo
Trí tuệ nhân tạo AI là trí thông minh của máy do con người tạo ra. Ngay từ khi
chiếc máy tính điện tử đầu tiên ra đời, các nhà khoa học máy tính đã hướng đến phát hiển
hệ thống máy tính (gồm cả phần cứng và phần mềm) sao cho nó có khả năng thơng minh
như lồi người.
Mặc dù cho đến nay, theo quan niệm của người viết, ước mơ này vẫn còn xa mới
thành hiện thực, tuy vậy những thành tựu đạt được cũng không hề nhỏ: chúng ta đã làm
được các hệ thống (phần mềm chơi cờ vua chạy trên siêu máy tinh GeneBlue) có thể
thắng được vua cờ thế giới; chúng ta đã làm được các phần mềm có thể chứng minh được
các bài tốn hình học; v.v. Hay nói cách khác, trong một số lĩnh vực, máy tính có thể thực
hiện tốt hơn hoặc tương đương con người (tất nhiên không phải tất cả các lĩnh vực).

Hình 2: Trí tuệ nhân tạo

1.1.2. Xử lý ảnh
Xử lý ảnh là một trong những mảng quan trọng nhất trong kỹ thuật thị giác máy
tính, là tiền đề cho nhiều nghiên cứu thuộc lĩnh vực này. Hai nhiệm vụ cơ bản của quá


trình xử lý ảnh là nâng cao chất lượng thơng tin hình ảnh và xử lý số liệu cung cấp cho
các q trình khác trong đó có việc ứng dụng thị giác vào điều khiển.
Quá trình bắt đầu từ việc thu nhận ảnh nguồn (từ các thiết bị thu nhận ảnh dạng số
hoặc tương tự) gửi đến máy tính. Dữ liệu ảnh được lưu trữ ở định dạng phù hợp với quá
trình xử lý. Người lập trình sẽ tác động các thuật toán tương ứng lên dữ liệu ảnh nhằm
thay đổi cấu trúc ảnh phù hơp với các ứng dụng khác nhau.
Quá trình xử lý nhận dạng ảnh được xem như là quá trình thao tác ảnh đầu vào
nhằm cho ra kết quả mong muốn. Kết quả đầu ra của một q trình xử lý ảnh có thể là
một ảnh “đã được xử lý” hoặc một kết luận.
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc
trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong

khơng gian và nó có thể xem như một hàm n biến P(c,c1,c2,…).Do đó,ảnh trong xử lý
ảnh có thể xem như ảnh n chiều.
1.1.2.1. Nhận dạng hình ảnh
Nhiều cải tiến cơng nghệ mới gần đây dựa vào cơng nghệ nhận dạng hình ảnh –
Image Recognition. Cơng nghệ đằng sau tính năng nhận dạng khn mặt trong điện thoại
thông minh của chúng ta, chế độ tự hành trong xe tự lái và chẩn đốn hình ảnh trong
chăm sóc sức khỏe,… đã có những bước tiến lớn trong những năm gần đây. Tất cả chúng
đều sử dụng các giải pháp giúp cảm nhận về các vật thể trước mặt chúng. Do đó, tại sao
chúng thường được gọi là thị giác máy tính hay cách gọi khác là điện tốn thị giác.
Những máy tính này có thể đưa ra quyết định chính xác dựa trên những gì chúng nhìn
thấy.
Nhận diện hình ảnh hoặc thị giác máy tính là một kỹ thuật tìm kiếm các cách để tự
động hóa tất cả công việc mà một hệ thống thị giác của con người có thể làm. Hãy nhắc
đến những cái tên như TensorFlow của Google, DeepFace của Facebook, Dự án Oxford
của Microsoft. Chúng đều là những ví dụ tuyệt vời về hệ thống nhận diện hình ảnh học
sâu. Mặt khác, các API được lưu trữ cho phép các doanh nghiệp tiết kiệm một


số tiền lớn cho các nhóm phát triển. Ví dụ như Google Cloud Vision, Clarifai, Imagga…
Nhận dạng hình ảnh ngày nay có thể so sánh với nhận thức thị giác của con người.
Nó đã đi vào cuộc sống hàng ngày và phục vụ các nhu cầu khác nhau. Facebook và các
nền tảng truyền thông xã hội khác sử dụng công nghệ này để tăng cường tìm kiếm hình
ảnh và hỗ trợ người dùng khiếm thị. Các doanh nghiệp bán lẻ sử dụng nhận dạng hình
ảnh để quét cơ sở dữ liệu lớn để đáp ứng tốt hơn nhu cầu của khách hàng và cải thiện cả
trải nghiệm khách hàng tại cửa hàng và trực tuyến. Trong chăm sóc sức khỏe, hệ thống
nhận dạng và xử lý hình ảnh y tế giúp các chuyên gia dự đoán rủi ro sức khỏe, phát hiện
bệnh sớm hơn và cung cấp nhiều dịch vụ tập trung vào bệnh nhân hơn. Danh sách này có
thể đi và về.
Nhận dạng riêng các vật thể có trong hình rơi vào nhóm các nhiệm vụ thị giác máy
tính cũng bao gồm tìm kiếm trực quan, phát hiện đối tượng, phân đoạn ngữ nghĩa và hơn

thế nữa.
Bản chất của nhận dạng các vật thể có trong hình là trong việc cung cấp một thuật
tốn có thể lấy một hình ảnh đầu vào thơ và sau đó nhận ra những gì trên hình ảnh này và
hiển thị rõ từng vật thể lên. Cần lưu ý rằng máy móc khơng thể nhìn thấy và cảm nhận
hình ảnh như chúng ta làm. Đối với họ, đó là tất cả về tốn học, và bất kỳ đối tượng nào
sẽ trông như thế này:


Hình 3: Nhận dạng vật thể

Các cơng ty lớn như Tesla, Google, Uber, Adobe Systems… cũng sử dụng công
nghệ nhận diện hình ảnh. Để chứng minh rằng cơng nghệ này đang tồn tại khắp thế giới,
hãy xem xét các số liệu thống kê gần đây. Các nhà nghiên cứu dự đốn rằng thị trường
tồn cầu của cơng nhận diện hình ảnh sẽ đạt 38,92 tỷ USD vào năm 2021. Đó là một con
số rất lớn. Vì vậy, khơng ngạc nhiên khi ngày càng nhiều thứ được gọi là ứng dụng
imagetech đang tận dụng nhận diện hình ảnh cho các mục đích khác nhau. Thậm chí là
trong cả kinh doanh.
Điều gì giúp mở rộng cơng nghệ nhận diện hình ảnh ngày nay? Đó là các cơng cụ
mã nguồn mở giúp lập trình dễ dàng hơn. Trong khi đó giá cả thì ngày càng rẻ hơn. Các
khung công tác và thư viện nguồn mở giúp các cơng ty có thể hưởng lợi từ cơng nghệ
nhận diện hình ảnh theo cấp số nhân.
Ví dụ, các cơ sở dữ liệu mở lớn như Pascal VOC và ImageNet cung cấp quyền
truy cập vào hàng triệu hình ảnh được gắn thẻ. Họ giúp các cơng ty cơng nghệ hình ảnh
phát triển và cải tiến các thuật toán học máy (Machine learning) của riêng họ. Đối với
một nhà phát triển chuyên nghiệp, nhận diện hình ảnh thời gian thực cũng sử dụng một
thư viện đa nền tảng nguồn mở. Nó được gọi là OpenCV. Đây được xem là điểm giải
quyết đầu tiên. Đồng thời nó là nguồn tài nguyên có thẩm quyền nhất cho các chuyên gia
nhận diện hình ảnh. Một bộ thư viện tuyệt vời khác cho tầm nhìn máy tính bao gồm
OpenNN, VXL… và nhiều loại khác.
1.1.3. OpenCV

OpenCV là một mã nguồn mở, là thư viện thị giác máy tính. Thư viện OpenCV
được viết bằng C và C++ và chạy trên Linux, Windows và Mac OS X. Phát triển tốt trên
các giao diện: Python, Ruby, Matlab, và các ngôn ngữ khác. OpenCV được thiết kế để
tính tốn hiệu quả và tập trung mạnh vào các ứng dụng thời gian thực. OpenCV được viết
tối ưu hóa bằng C và có thể tận dụng lợi thế của bộ vi xử lý đa lõi.
OpenCV tự động sử dụng thư viện IPP thích hợp trong thời gian chạy nếu thư viện
được cài đặt. Một trong những mục tiêu của OpenCV là cơ sở cho thị giác máy tính giúp
người sử dụng và xây dựng các ứng dụng thị giác máy tính khá phức tạp một


cách nhanh chóng. Thư viện OpenCV chứa hơn 500 chức năng được sử dụng trong nhiều
lĩnh vực của thị giác máy tính, bao gồm kiểm tra nhà máy sản xuất sản phẩm, hình ảnh y
tế, an ninh, giao diện người dùng, hiệu chỉnh máy ảnh, thị giác 3 chiều, và robot.
Bởi vì thị giác máy tính và việc học lập trình thường đi chung với nhau. OpenCV
có mục đích chung là tạo ra MLL. MLL thì rất hữu ích cho những tác vụ của thị giác đó
là nhiệm vụ của OpenCV. Sublibrary là tập trung vào nhận dạng mẫu thống kê và phân
nhóm.
Chức năng có trong thư viện OpenCV:
Thư viện OpenCV bao gồm một số tính năng nổi bật như:
● Bộ công cụ hỗ trợ 2D và 3D
● Nhận diện khuôn mặt
● Nhận diện cử chỉ
● Nhận dạng chuyển động, đối tượng, hành vi,
● Tương tác giữa con người và máy tính
● Điều khiển Robot
● Hỗ trợ thực tế tăng cường


Hình 4: Ví dụ về dùng OpenCV để nhận diện khuôn mặt


Cấu trúc của OpenCV:
OpenCV là một bộ thư viện rất lớn, được cấu trúc thành 5 phần chính, trong đó có
4 phần được phân chia như hình 4 dưới đây. Trong đó, CV chứa các hàm xử lý hình ảnh
căn bản và các thuật toán nhận dạng cấp cao; MLL là bộ thư viện phục vụ cho ngành máy
học. HighGUI chứa các lệnh nhập xuất và hàm để truy xuát hình ảnh, video; CXCore
chứa các cấu trúc cơ bản, các hàm vẽ và các hàm dùng chung cho toàn bộ thư viện.
Trong hình bên dưới, khơng bao gồm CvAux, thành phần chứa các thuật tốn cịn
trong giai đoạn thử nghiệm hoặc các hàm bị ngừng phát triển. Trong CvAux, ngƣời dùng
có thể tìm thấy khá nhiều hàm có khả năng sẽ xuất hiện chính thức trong OpenCV trong
tương lai. Có thể kể đến như:
- Nhận dạng cử chỉ từ camera
- Đặc tả các texture (vân bề mặt)
- Theo dõi mắt và miệng
- Theo dõi 3D


- Tìm khung xương của vật thể

Hình 5: Cấu trúc thư viện OpenCV

1.2. Giới thiệu về chương trình nhận diện biển báo giao thơng sử dụng
OpenCV
1.2.1. Mơ tả chương trình
Bài báo cáo này trình bày phương pháp phát hiện và nhận dạng các biển báo giao
thông đường bộ sử dụng kết hợp các kỹ thuật phát hiện biên và phân tích hình dáng đối
tượng để phát hiện vùng ứng viên có thể là biển báo giao thơng. Sau đó, rút trích đặc
trưng và huấn luyện qua thuật tốn CNN để nhận dạng biển báo.
Nhận diện biển báo giao thơng: có rất nhiều loại biển báo giao thông khác nhau
như biển báo giới hạn tốc độ, biển cấm đi vào, tín hiệu giao thông, rẽ trái hoặc phải, trẻ
em băng qua đường, cấm xe nặng vượt qua,…Nhận diện biển báo giao thơng là q trình

nhận biết nội dung biến báo và xác định biển báo đó thuộc loại nào.


Hình 6: Ví dụ về biển báo được nhận diện

1.2.2. Ý tưởng
Từ một ảnh thu được, ta dựa vào đặc trưng màu sắc, ứng dụng tốt thư viện
OpenCV để nhận dạng màu sắc của các biển báo cụ thể để phân loại và nhận biết đó là
biển báo gì. Sau đó đưa ra thơng tin về biển báo đã được phát hiện và nhận dạng.
Quy trình bài tốn: Đầu tiên, ảnh đầu vào là một ảnh có biển báo đơn và có nền.
Khi đưa vào hệ thống thì ảnh sẽ được phân đoạn để loại bỏ nền nhằm làm nổi bật các đối
tượng có thể là biển báo giao thơng, các đối tượng này được lọc để chọn ra vùng ứng viên
là biển báo giao thông. Tiếp theo, đưa ảnh biển báo giao thơng đã được tách ra vào mơ
hình CNN đã được huấn luyện trước đó để nhận dạng loại biển báo. Cuối cùng, hệ thống
sẽ đưa ra thông tin biển báo cho người dùng.


CHƯƠNG 2: PHƯƠNG PHÁP ĐỀ XUẤT VÀ TRIỂN KHAI
THUẬT TOÁN
2.1. Các phương pháp phát hiện và nhận dạng biển báo giao thơng
Biển báo giao thơng hay cịn gọi là hệ thống báo hiệu là hệ thống được đặt trên
đường giao thơng, nó là cách thức để thơng báo đến người tham gia giao thơng về tình
trạng đường, đưa ra những chỉ dẫn hoặc cảnh báo để giúp cho người tham gia giao
thông đưa ra những hành vi hợp lý và kịp thời.
2.1.1. Các phương pháp phát hiện
Phát hiện các đối tượng là tiền đề cho việc nhận dạng. Việc phát hiện hay xác định
một đối tượng chuyên biệt nói chung và biển báo nói riêng thơng qua frame ảnh thu được
từ camera với sự trợ giúp của máy tính là một vấn đề khó. Đã có rất nhiều phương pháp
và hướng tiếp cận của vấn đề xác định biển báo giao thông. Một số phương pháp phổ
biển hiện nay được áp dụng:

2.1.1.1. Phương pháp dựa trên màu sắc (color-based detection methods)
Cách tiếp cận phổ biến trong vấn đề xác định biển báo giao thơng dựa trên màu
sắc là tìm một vùng ảnh có chứa màu sắc đặc trưng, sử dụng phương pháp phân ngưỡng
đơn giản hoặc phân ngưỡng ảnh cao cấp. Kết quả của vùng ảnh sau đó sẽ ngay lập tức
được xem như là biển báo giao thông hoặc thông qua giai đoạn tiếp theo xem như là vùng
cần quan tâm. Khuyết điểm chính của phương pháp này là trong thực tế màu sắc có xu
hướng khơng đáng tin cậy, mà phụ thuộc vào các thời điểm trong ngày, điều kiện thời tiết,
bóng râm…Khơng gian màu RGB được đánh giá là rất nhạy cảm với ánh sáng , do đó
nhiều nhà nghiên cứu đã chọn phân ngưỡng dựa trên màu sắc trong các không gian màu
khác như HSI.
2.1.1.2. Phương pháp dựa trên hình dạng (shape-based methods)
Phát hiện biển báo giao thơng dựa trên hình dạng có nhiều cách tiếp cận đã được
công bố trong nhiều tài liệu hiện nay.Tuy nhiên có lẽ phương pháp dựa trên hình dạng
phổ biến nhất là sử dụng phép biến đổi Hough. Phép biến đổi Hough là một kĩ thuật dùng
để xác định một hình dạng ngẫu nhiên trong ảnh.Ý tưởng cơ bản là sử dụng


một cạnh của ảnh, mỗi điểm ảnh của cạnh ảnh có khả năng là tâm của đối tượng nếu như
điểm ảnh đó nằm trên biên. Kĩ thuật này sớm ra đời trong lịch sử thị giác máy tính
(computer vision). Nó đã được mở rộng và thay đổi nhiều lần với nhiều biến thể khác
nhau. Ở đây chúng ta chỉ trình bày về nghiên cứu của Loy và Barnes, và nó được xem là
phương pháp hiệu quả cho việc nhận dạng biển báo giao thông. Loy và Barnes đã đề xuất
bộ phát hiện đa giác đều tổng quát và chỉ sử dụng nó để phát hiện biển báo giao thơng.
Bộ phát hiện dựa trên phép biến đổi đối xứng xuyên tâm nhanh, về mặt tổng quan nó
tương tự như phép biến đổi Hough. Đầu tiên ta tính đạo hàm cấp một của ảnh từ ảnh gốc.
Ảnh đạo hàm cấp một sau đó được phân ngưỡng để cho các điểm có biên độ thấp bị loại
bỏ. Các điểm ảnh cịn lại có khả năng là vị trí của tâm đa giác đều. Một điểm ảnh đóng
vai trị là điểm có khả năng được chọn trên nhiều vị trí được phân bổ dọc theo đường trực
giao với đạo hàm cấp một của điểm ảnh và có khoảng cách đến các điểm ảnh là tương
đương với các bán kính của đa giác đều. Lưu ý rằng thật sự có tới hai đường thẳng có thể

thỏa mãn yêu cầu này, một là cùng hướng với đạo hàm và một là theo hướng ngược lại.
Cả hai đều có thể sử dụng nếu chúng ta khơng thể biết trước liệu biển báo này sáng hơn
hay tối hơn so với quang cảnh nền.

Hình 7: Các vị trí đề cử điểm ảnh cho tâm đối tượng

Chiều dài của đường biểu quyết được bao bởi bán kính của đa giác đều. Các điểm
ảnh được chọn ở cuối đường thẳng có trọng số tiêu cực, để tối thiểu hóa ảnh hưởng của
các đường thẳng trong ảnh mà dài quá để có thể xem như là một cạnh của đa giác. Kết
quả ảnh đề cử (vote image) được gán nhãn là 0r.
Ngoài ảnh đề cử (vote image) ra, một ảnh khác được gọi là ảnh đẳng giác
(equiangular image) được tạo. Thủ tục được đề xuất như sau: Nếu góc đạo hàm của các
điểm ảnh trên cạnh của một đa giác đều mặt ( –sided) được nhân với , thì kết quả các góc
sẽ bằng nhau. Ví dụ, xét một tam giác đẳng giác và thử một giá trị góc đạo


hàm tại mỗi bên. Giả sử chúng ta có được các giá trị đạo hàm của 730 , 1930 , và 3130 .
Các đạo hàm được cách nhau một khoảng 3600 / n = 1200 . Sau đó 730 x 3 = 2190 và 1930
x 3 = 5790 , 5790 – 3600 = 2190 . Tương tự như vậy 3130 x 3 = 9390 , 9390 – 2 x
3600 = 2190 . Với từng điểm ảnh được chọn là tâm của đa giác, một vector đơn vị được
tạo ra. Độ dốc (slope) của vector đơn vị được cho bằng với góc đạo hàm của điểm ảnh
nhân với số mặt của đa gia đều. Các điểm ảnh sau đó một lần nữa được chọn trên những
vị trí được mơ tả bằng một đường thẳng đề cử, ngoại trừ đề cử mang dạng của một vector
đơn vị. Các điểm được chọn được biểu diễn trong một ảnh mới gọi là ảnh đẳng giác.
Từng điểm trong ảnh đại diện cho một vector là tổng của các điểm được chọn đóng góp.
Các điểm được chọn từ các cạnh của đa giác đẳng giác sẽ có cùng độ dốc (slope), do đó
độ lớn của các vector được chọn trong trọng tâm đa giác đẳng giác sẽ là lớn nhất.

Hình 8: Nhân các góc gradient của một tam giác cho 3. Kết quả các góc sẽ bằng nhau.


Cuối cùng, ảnh đề cử và định mức của ảnh đẳng giác được kết hợp để tạo ra đáp
ứng tổng thể. Độ phức tạp của phương thức này là , trong đó là độ dài cực đại của đường
thẳng được chọn, là số lượng điểm ảnh có trong ảnh và là số lượng bán kính đang được
xem xét.
Khuyết điểm chính của hướng tiếp cận này là bán kính của đa giác phải được biết
trước, và đây không bao giờ là điều dễ thực hiện. Ở đây có thể được giải quyết bằng cách
thử nhiều bán kính nhưng nó tiêu tốn quá nhiều thời gian xử lý. Một hướng tiếp cận khác
là tìm hình dạng đặc trưng được sử dụng là bộ phát hiện góc và sau đó giả thiết là vị trí
của đa giác đều bằng cách quan sát quan sát mối liên hệ giữa các góc. Paulo và Correia
xác định biển báo tam giác và tứ giác bằng cách áp dụng bộ phát hiện


×