BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
LUẬN VĂN THẠC SĨ
NGÔ ANH TUẤN
ỨNG DỤNG XỬ LÝ ẢNH VÀ THUẬT TOÁN
LEVENBERG-MARQUARDT TRONG VIỆC
PHÁT HIỆN, NHẬN DẠNG BIỂN BÁO GIAO THÔNG
NGÀNH: KỸ THUẬT ĐIỆN TỬ - 60520203
S K C0 0 4 5 9 8
Tp. Hồ Chí Minh, tháng 04/2015
z
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
LUẬN VĂN THẠC SĨ
NGÔ ANH TUẤN
ỨNG DỤNG XỬ LÝ ẢNH VÀ
THUẬT TOÁN LEVENBERG-MARQUARDT
TRONG VIỆC PHÁT HIỆN, NHẬN DẠNG
BIỂN BÁO GIAO THÔNG
PABX và phát triển các dịch vụ tổng đài.
Ngày & nơi bảo vệ đồ án, luận án hoặc thi tốt nghiệp: Trường Đại Học Kỹ Thuật Công Nghệ
Tp. Hồ Chí Minh.
Người hướng dẫn: Th.S Đinh Quốc Hùng.
III. QUÁ TRÌNH CÔNG TÁC CHUYÊN MÔN KỂ TỪ KHI TỐT NGHIỆP ĐẠI HỌC:
Thời gian
2011-2012
2012-2013
2014-nay
Nơi công tác
Công việc đảm nhiệm
Công ty thiết kế Renesas Design Việt
Nam - RVC
Viện nghiên cứu đào tạo và phát triển vi
mạch Việt Nam - ICDREC
Công ty THHH phần mềm FPT - FPT
Software
Kỹ sư thiết kế, lập trình phần cứng
vi mạch
Kỹ sư thiết kế, lập trình phần cứng
vi mạch
Kỹ sư lập trình nhúng, lập trình ứng
dụng
i
iii
TÓM TẮT
Biển báo giao thông mang những thông tin quan trọng vì nó hỗ trợ người lái xe ý thức
và chủ động hơn trong việc xử lý các tình huống nguy hiểm tiềm ẩn và giúp thuận tiện hơn
trong việc điều khiển phương tiện lưu thông. Về cơ bản, một hệ thống nhận dạng biển báo
giao thông bao gốm 2 giai đoạn chính: giai đoạn phát hiện và giai đoạn nhận dạng. Việc
xác định biển báo giao thông thường dựa trên các thông tin về màu sắc và hình dạng.
Trong luận văn này, tôi đề xuất một giải thuật dùng để phát hiện và nhận dạng (hình
dạng) các biển báo giao thông đuờng bộ trên thời gian thực. Biển báo ban đ ầu được phát
hiện thông qua phân ngưỡng màu sắc (đỏ hay xanh), sau đó hình dạng của biển báo đó
được nhận dạng và tái tạo bằng đường cong Gielis. Quá trình phát hiện biển báo giao thông
được thực hiện thông qua nhiều quá trình như: chuyển đổi không gian màu RGB sang
không gian màu IHLS, phân ngưỡng NHS, loại nhiễu, loại bỏ các thành phần dư thừa, tăng
cường ảnh, xác định biên, xác định bao lồi ảnh, xác định tâm và khối tái tạo hình dạng (áp
dụng thuật toán Levenberg Marquardt trong việc xác định hình dạng của biển báo giao
thông từ tập hợp các điểm trên biên). Phương pháp phát hiện và nhận dạng biển báo giao
thông đã nêu cho phép phát hiện các biển báo giao thông với hình dạng phổ biến như hình
tròn, tam giác, lục giác … bằng một giải thuật duy nhất mà không phải thông qua các bước
huấn luyện như các phương pháp nhận dạng khác.
Luận văn sử dụng các kỹ thuật thu thập dữ liệu với camera nhúng, các kỹ thuật xử lý
ảnh cùng một số hàm của thư viện thị giác máy tính mã nguồn mở OpenCV để xử lý hình
ảnh thu nhận. Luận văn là sự kết hợp của những kiến thức về xử lý ảnh số, lập trình C++ để
xử lý và mô tả thuật toán, lập trình nhúng(ngôn ngữ lập trình python) và lập trình module
siêu âm để ước luợng khoảng cách và camera nhúng.
iv
MỤC LỤC
TRANG TỰA
QUYẾT ĐỊNH GIAO ĐỀ TÀI
LÝ LỊCH KHOA HỌC ................................................................................................................. i
LỜI CAM ĐOAN ......................................................................................................................... ii
LỜI CẢM ƠN .............................................................................................................................. iii
TÓM TẮT .................................................................................................................................... iv
MỤC LỤC .................................................................................................................................... vi
CÁC TỪ VIẾT TẮT ................................................................................................................... ix
DANH SÁCH CÁC HÌNH.......................................................................................................... x
CHƯƠNG 1: GIỚI THIỆU ...................................................................................................... 1
1.1 Tổng quan tình hình nghiên cứu.......................................................................................... 1
1.2 Các kết quả nghiên cứu trong và ngoài nước đã công bố ................................................ 2
1.2.1 Các kết quả nghiên cứu trong nước.............................................................................. 2
1.2.2 Các kết quả nghiên cứu ngoài nước ............................................................................. 4
1.3 Nhiệm vụ của đề tài .............................................................................................................. 6
1.3.1 Yêu cầu của đề tài........................................................................................................... 6
1.3.2 Nội dung cần thực hiện .................................................................................................. 7
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT XỬ LÝ ẢNH.............................................................. 9
2.1 Các lý thuyết xử lý ảnh ......................................................................................................... 9
2.1.1 Không gian màu.............................................................................................................. 9
2.1.2 Các toán tử hình thái .................................................................................................... 11
vi
2.1.3 Lọc trung vị (Median Filter) ....................................................................................... 19
2.2 Thư viện thị giác máy tính mã nguồn mở OpenCV ........................................................ 21
2.2.1 Giới thiệu thư viện mã nguồn mở OpenCV .............................................................. 21
2.2.2 Lịch sử OpenCV ........................................................................................................... 22
2.2.3 Kiến trúc của OpenCV ................................................................................................. 23
5.2 Mạch thi công ...................................................................................................................... 73
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................................. 74
6.1 Kết luận................................................................................................................................. 74
6.2 Hướng phát triển.................................................................................................................. 75
TÀI LIỆU THAM KHẢO ......................................................................................................... 76
viii
CÁC TỪ VIẾT TẮT
CPU
GB
HSI
IPP
MB
IPP
MB
ML
OpenCV
ORC
PCA
RGB
SVM
NHS
IHLS
RO
GC
CW
CCW
HÌNH
TRANG
Hình 1.1 Mô hình SVM được đề nghị [1] .................................................................................... 3
Hình 1.2 Tổng quan đề tài dùng đặc trưng cục bộ và bộ phân lớp SVM [3] ........................... 4
Hình 1.3 Mô hình nhận dạng DVM mà nhóm tác giả đề xuất [6]............................................. 5
Hình 1.4 Mô hình xử lý nhận dạng biển báo giao thông của bài báo “A System for Traffic
Sign Detection, Tracking, and Recognition Using Color, Shape, and Motion Information”
[7]. ..................................................................................................................................................... 5
Hình 1.5 Mô hình phát hiện biển báo giao thông của bài báo “Color-Based Road Sign
Detection and Tracking” [8] . ........................................................................................................ 6
Hình 2.1 Mô hình không gian màu RGB...................................................................................... 9
Hình 2.2 Mô hình không gian màu HSL. ................................................................................... 11
Hình 2.3 Ảnh và đối tượng trong ảnh. ........................................................................................ 12
Hình 2.4 Quan hệ giữa hai tập hợp.............................................................................................. 13
Hình 2.5 Phép giãn nhị phân. ....................................................................................................... 15
Hình 2.6 Quá trình quét của phần tử cấu trúc trên hình ảnh nhị phân. ................................... 16
Hình 2.7 Phép co nhị phân trên hai đối tượng ........................................................................... 17
Hình 2.8 Quá trình thực hiện phép đóng ảnh. ............................................................................ 18
Hình 2.9 Minh họa phép đóng ảnh trên phương diện ý nghĩa hình học. ................................ 19
Hình 2.10 Cách thức hoạt động của lọc trung vị ....................................................................... 19
Hình 2.11 Quá trình phát triển của OpenCV. ............................................................................ 23
Hình 2.12 Cấu trúc cơ sở của OpenCV. ..................................................................................... 24
x
Hình 2.13 Một số thông số của đường cong Gielis và các hình dạng (với a=b=1) ............. 25
Hình 2.14 Mô phỏng các hình học đơn giản trên Matlab bằng hệ tọa độ cực (a’, b’, c’, d’)
và hệ tọa độ Descart (a, b, c, d) ................................................................................................... 25
Hình 3.24 Hình ảnh bị che chắn dẫn đến kết quả sai. ............................................................... 42
Hình 3.25 Các đầu vào và đầu ra của khối tái tạo hình dạng dùng đường cong Gielis ........ 43
Hình 3.26 Sơ đồ khối của khối tái tạo hình dạng của biển báo với đường cong Gielis. ...... 43
Hình 3.27 Sơ đồ giải thuật của thuật toán Levenberg-Marquardt. .......................................... 44
Hình 3.28 Giao diện chương trình ............................................................................................... 47
Hình 3.29 Mở ảnh cần xử lý......................................................................................................... 47
Hình 3.30 Kết quả sau khi xử lý .................................................................................................. 48
Hình 4.1 Hệ thống phát hiện và nhận dạng biển báo giao thông............................................. 50
Hình 4.2 Module cảm biến siêu âm SRF05. .............................................................................. 50
Hình 4.3 Camera pi dùng để thu nhận hình ảnh. ....................................................................... 51
Hình 4.4 Kit nhúng Raspberry PI và các khối cơ bản trên kit. ................................................ 51
Hình 4.5 Format thẻ nhớ và cài đặt hệ điều hành lên kit nhúng. ............................................. 52
Hình 4.6 Thiết lập các thông số cơ bản cho hệ điều hành. ....................................................... 53
Hình 4.7 Chương trình nhập lệnh của hệ điều hành - LXTerminal ........................................ 53
Hình 4.8 Cấu hình Raspberry Pi để nhận diện camera ............................................................. 58
Hình 4.9 Sơ đồ giải thuật chương trình phát hiện và nhận dạng biển báo giao thông trên kit
nhúng ............................................................................................................................................... 60
xii
Hình 4.10 Màn hình hiển thị kit nhúng, thể hiện khoảng cách giữa vật cản và kit nhúng... 61
Hình 4.11 Camera chụp ảnh đưa vào khối xử lý (ảnh ngõ vào của khối xử lý). ................... 61
Hình 4.12 Màn hình hiển thị trên kit nhúng, thể hiện đã xử lý xong biển báo giao thông. . 62
Hình 4.13 Kết quả xử lý chương trình trên kit nhúng............................................................... 62
Hình 5.1 Phát hiện và nhận dạng biển báo giao thông nguy hiểm(biển báo hình tam giác) 64
Hình 5.2 Phát hiện và nhận dạng biển báo cấm (biển báo hình tròn). .................................... 65
Hình 5.3 Phát hiện và nhận dạng biển dừng lại (biển báo tám cạnh). .................................... 66
Hình 5.4 Phát hiện và nhận dạng biển chỉ dẫn (biển báo hình vuông màu xanh). ................ 67
Hình 5.5 Phát hiện và nhận dạng nhiểu biển báo trong một hình ........................................... 68
Hình 5.6 Kết quả thử nghiệm trong môi trường ban đêm. ....................................................... 69
giúp họ ý thức hơn về những nguy hiểm tiềm ẩn khi điều khiển phương tiện lưu thông,
giúp bảo vệ tài sản, tính mạng của người tham gia và rộng hơn nữa là bảo vệ hạnh phúc của
gia đình và toàn xã hội.
Từ những lý do thực tiễn trên, luận văn này định hướng nghiên cứu giải thuật
Levenberg- Marquardt nhằm đưa đến một giải pháp xây dựng một hệ thống, góp phần hạn
chế những tai nạn giao thông và giảm thiểu hóa những hậu quả sau tai nạn, thông qua ý
tưởng một hệ thống phát hiện và nhận dạng các biển báo giao thông nguy hiểm để cảnh
báo, thông tin cho người điều khiển phương tiện tham gia giao thông. Hệ thống hoạt động
trên thời gian thực, nhận dạng và phát hiện các biển báo giao thông trong mọi hoàn cảnh
điều kiện có thể xảy ra trong thực tế. Luận văn hướng tới ứng dụng hệ thống nhúng,
camera cùng với các kiến thức về xử lý ảnh số, lập trình bẳng ngôn ngữ lập trình C++ và
ngôn ngữ lập trình nhúng(python) cùng với thư viện mã nguồn mở OpenCV.
1.1 Tổng quan tình hình nghiên cứu
Ngày nay khoa học kỹ thuật phát triển rất mạnh mẽ, ngành điều khiển học và
tự động hóa đã có những bước tiến lớn. Điều khiển học và tự động hóa ngày càng
1
đóng vai trò quan trọng trong việc tăng năng suất lao động, chất lượng và an toàn
cho cuộc sống của con người. Trong xã hội công nghiệp ngày nay, việc ứng dụng
các robot tự hành, các cánh tay máy, có khả năng hoạt động độc lập ngày càng phổ
biến. Để có khả năng thông minh đó, chúng phải có khả năng nhìn, nhận dạng các
tình huống, xử lý tình huống như con người. Đáp ứng nhu cầu đó, xử lý ảnh là một
phần rất quan trọng của quá trình điều khiển học và tự động hóa. Dữ liệu về hình
ảnh có lượng thông tin lớn và chính xác hơn các loại dữ liệu từ các cảm biến khác.
Điều này giúp cho việc giải quyết các vấn đề trong lĩnh vực điều khiển tự động dễ
dàng hơn.
Vấn đề xây dựng một hệ thống nhận dạng biển báo giao thông là một vấn đề
lớn và đã có nhiều hướng tiếp cận để giải quyết bài toán. Vấn đề này được các quốc
gia phát triển về ngành tự động hóa quan tâm từ sớm và cũng đã có nhiều công trình
nghiên cứu các đặc tính cần đánh giá. Làm chủ được thuật toán phát hiện
chuyển động trên cơ sở sử dụng các phương pháp khác nhau để mô hình hóa
nền. Chương trình nguồn thu được có thể dùng để nghiên cứu thuật toán hoặc
sử dụng trong các ứng dụng thương mại liên quan tới nhận dạng chuyển
động.
c. “Phát hiện biển báo giao thông dùng đặc trưng cục bộ (local
features)” của Nguyễn Duy Khánh, Lê Đình Duy và Dương Anh Đức [3].
Đề tài dùng đặc trưng cục bộ và bộ phân lớp SVM (Support Vector
Machine) để phát hiện biển báo giao thông. Tổng quan thuật toán được tác
giả trình bày như theo hình 1.2. Kết quả của đề tài dừng lại ở việc xác định
biển báo và phân lớp chúng thành các nhóm biển cấm, nguy hiểm, chỉ dẫn.
3
(a) Ảnh ngõ vào
(b) Các điểm phân tích
(d) Bộ định nghĩa
(e) Histogram
(c) Đặc trưng cục bộ
(f) Phân loại
Hình 1.2 Tổng quan đề tài dùng đặc trưng cục bộ và bộ phân lớp SVM [3]
1.2.2 Các kết quả nghiên cứu ngoài nước
a. “A Road Sign Recognition System Based on Dynamic Visual
Shape, and Motion Information” [5].
5
c. “Color-Based Road Sign Detection and Tracking ” của Luis David
Lopez và Olac Fuentes [6].
Bài báo trình bày một nền tảng chung cho việc nhận dạng và theo vết
các biển báo giao thông chỉ sử dụng duy nhất một thông tin về màu sắc.
Phương pháp tiếp cận gồm hai phần. Phần đầu sử dụng một tập phân phối
Gauss để phát hiện đường và các biển báo giao thông. Phần thứ hai là theo
vết đối tượng đã được xác định ở bước trước đó. Mô hình phát hiện biển báo
giao thông được mô tả như hình 1.5. Theo kết quả thực nghiệm được cung
cấp bởi bài báo, hệ thống đề xuất nhận dạng được 97% đối tượng ở gần trong
thời gian thực.
Hình 1.5 Mô hình phát hiện biển báo giao thông của bài báo “ColorBased Road Sign Detection and Tracking” [6].
d. “A generic geometric transformation that unifies a wide range of
natural and abstract shapes” của Johan Gielis [7]
Trong bài báo này, tác giả trình bày một phương pháp tiếp cận hình
học mới dùng để mô tả các hình dạng trừu tượng, tự nhiên và nhân tạo trong
thực tế. Johan Gielis khẳng định rằng rất nhiều hình dạng trong tự nhiên có
cùng một siêu công thức toán học. Hình dạng này giống với dạng tròn, trong
đó người ta có thể thay đổi một vài thông số nhằm mô tả phần lớn những
hình dạng đơn giản khác (tam giác, vuông, chữ nhật…) và thậm chí phức tạp
hơn (cuộn xoắn của vỏ ốc hay một nụ tuyết). Gielis đánh giá rằng đây là một
hình thức mới để mô tả thiên nhiên chính xác và chắc chắn sẽ mang lại các
đột phá.
1.3 Nhiệm vụ của đề tài
1.3.1 Yêu cầu của đề tài
3. Tìm hiểu các phương pháp xử lý ảnh, tăng cường ảnh, xử lý điểm
ảnh, xử lý biên và bao lồi … để trích lấy vùng ảnh đặc trưng của biển báo
giao thông từ đó chỉ xử lý trên vùng ảnh này.
4. Viết chương trình phát hiện và nhận dạng biển báo giao thông qua
ảnh tĩnh bằng phần mềm QT Creator trên Windows để có cơ sơ nghiên cứu
7
và phát triển, hơn nữa các mã lệnh này có thể kế thừa trên kit nhúng để tiếp
tục xây dựng chương trình.
5. Tìm hiểu về lập trình nhúng trên hệ điều hành Linux, các thiết bị
phần cứng phục vụ cho hệ thống nhận dạng như camera nhúng, module siêu
âm.
6. Nghiên cứu một loại kit để lập trình nhúng. Đề xuất sử dụng kit
Raspberry Pi phiên bản B do tốc độ xử lý cao, giá thành thấp và tính linh
động trong sử dụng.
7. Nghiên cứu cài đặt hệ điều hành Linux cho kit nhúng, lập trình C++
và lập trình python trên kit nhúng, cài đặt thư viện OpenCV(tương thích với
chương trình C++).
8. Nghiên cứu lập trình trên kit nhúng để phát hiện và nhận dạng biển
báo giao thông từ ảnh thu được từ camera.
9. Chạy thử, đánh giá và tinh chỉnh hệ thống nhằm đáp ứng được các
yêu cầu đã đề ra.
8
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT XỬ LÝ ẢNH
2.1 Các lý thuyết xử lý ảnh
Có thể chuyển đổi qua lại giữa không gian RGB với các không gian
màu khác như CIE, CMY, HSL, HSV, IHLS ...
Các thao tác tính toán trên không gian RGB thường đơn giản hơn.
Khuyết điểm của không gian RGB :
Các giá trị RGB của một màu là khác nhau đối với các màn hình
khác nhau: nghĩa là các giá trị RGB của màu tím trên màn hình màu này sẽ
không sinh ra đúng màu đó trên một màn hình khác.
Sự mô tả các màu trong thế giới thực đối với không gian RGB còn
nhiều hạn chế bởi vì không gian RGB không hoàn toàn phù hợp với sự cảm
nhận màu sắc của con người. Hai điểm phân biệt trong không gian RGB, với
mắt người có thể hoặc không thể là thể hiện của hai màu khác nhau. Chính vì
điều này mà không gian RGB không thể ánh xạ trực tiếp đến bất cứ chiều
cảm nhận nào khác .
2.1.1.2 Không gian HSL (HSL space)
Một không gian màu chú trọng hơn không gian RGB đến các thành
phần của sự cảm nhận màu sắc của mắt người là không gian màu HSL (Hue,
Saturation, Lightness). Tuy nhiên, không gian HSL thực ra cũng chỉ là một
phép biến đổi gần đúng của không gian RGB. Không giống như các không
gian màu khác xây dựng trên sự cảm nhận màu sắc của mắt, không gian HSL
vẫn còn bị lệ thuộc vào phần cứng của CRT.
Không gian HSL được biểu diễn trong hệ tọa độ trụ, hình minh họa là
hai hình nón úp vào nhau (xem hình 2.2). H (Hue) là toạ độ ứng với góc
quay, S (Saturation) là tọa độ gốc, L (Lightness) là trục thẳng đứng. Hầu hết
các màu đạt bão hòa khi S = 1 và L = 0,5.
10