Đề tài thiết kế hệ thống nhúng cho máy phát hiện và nhận dạng biển báo giao thông sử dụng thư viện OpenCV do Intel phát triển, chương trình Qt – Everywhere và được thực hiện trên kit Bea
KHÁI QUÁT HỆ THỐNG PHÁT HIỆN VÀ NHẬN DẠNG BIỂN BÁO GIAO THÔNG
Các chuẩn qui định của biển báo giao thông
Nhóm biển hiệu lệnh có dạng hình tròn, nền màu xanh lam, trên biển có hình vẽ mầu trắng đặc trưng cho hiệu lệnh nhằm báo cho người sử dụng đường biết điều lệnh phải thi hành
Hiệu lực của các loại biển hiệu lệnh có thể có giá trị trên tất cả các làn đường hoặc chỉ có giá trị trên một hoặc một số làn của một chiều xe chạy Các làn đường phải đƣợc đánh dấu riêng biệt bằng các vạch dọc liền trên mặt phần xe chạy
Nhóm biển báo cấm có dạng hình trònnhằm báo điều cấm hoặc hạn chế mà người sử dụng đường phải tuyệt đối tuân theo Hầu hết các biển đều có viền đỏ, nền mầu trắng, trên nền có hình vẽ mầu đen đặc trƣng cho điều cấm hoặc hạn chế sự đi lại của các phương tiện cơ giới, thô sơ và người đi bộ
Hiệu lực của các loại biển báo cấm có thể có giá trị trên tất cả các làn đường hoặc chỉ có giá trị trên một hoặc một số làn của một chiều xe chạy Các làn đường phải đƣợc đánh dấu riêng biệt bằng các vạch dọc liền trên mặt phần xe chạy
2.2.3 Nhóm biển báo nguy hiểm
Nhóm biển báo nguy hiểm: Có dạng hình tam giác đều, viền đỏ, nền mầu vàng, trên có hình vẽ mầu đen mô tả sự việc báo hiệu nhằm báo cho người sử dụng đường biết trước tính chất của sự nguy hiểm trên đường để có biện pháp phòng ngừa, xử trí
Hiệu lực của các biển báo nguy hiểm có giá trị trên tất cả các làn đường của một chiều xe chạy
Chương II: Khái quát HT phát hiện và nhận dạng BBGT GVHD: TS Trương Quang Vinh
Phương pháp hoạt động chung của hệ thống nhúng phát hiện và nhận dạng biển báo giao thông
Trong các nghiên cứu, mô hình chung cho bài toán phát hiện biển báo giao thông thường như sau:
Hình 2 Mô hình chung được sử dụng rộng rãi
Tiền xử lý là một trong những bước quan trọng nhất của việc nhận dạng biển báo giao thông Mục đích của tiền xử lý chủ yếu là làm cho chất lƣợng ảnh đƣợc tốt hơn, từ đó nâng cao khả năng phát hiện đƣợc biển báo giao thông trong ảnh
2.3.2 Phát hiện biển Ở giai đoạn này hệ thống sẽ áp dụng các thuật toán để lọc hình của biển báo giao thông có trong ảnh và tách hình của biển báo ra cho việc nhận dạng
HVTH: Nguyễn Việt Tiến - 9 - Phương pháp phân đoạn là phương pháp chủ yếu được sử dụng trong phần này
Dựa trên những đặc điểm màu sắc và hình dạng hình học của biển báo giao thông, phân đoạn màu sắc và phân đoạn hình học là các phân đoạn phổ biến đƣợc áp dụng để phát hiện biển báo giao thông
2.3.3 Nhận dạng biển Ảnh của biển báo đƣợc xử lý để rút đặc trƣng, từ đặc trƣng này hệ thống sẽ xác định đƣợc biển báo giao thông loại gì Việc xác định biển báo giao thông loại gì sẽ áp dụng phương pháp phân lớp Hai phương pháp phân lớp phổ biến là Neuron Network và Support Vector Machines (SVMs).
CÁC CÔNG TRÌNH NGHIÊN CỨU THIẾT KẾ HỆ THỐNG PHÁT HIỆN VÀ NHẬN DẠNG BIỂN BÁO GIAO THÔNG
Khảo sát các công trình nghiên cứu
Đề tài phát hiện và nhận dạng biển báo giao thông được chia thành các bước nhỏ hơn để dễ dàng xử lý, mô hình chung cho bài toán phát hiện và nhận dạng biển báo giao thông thường như sau: Ảnh đầu vào
Hình 3 Mô hình chung được sử dụng rộng rãi
Chương III: Các CT nghiên cứu TK HT PH và ND BBGT GVHD: TS Trương Quang Vinh
Camera sẽ ghi lại hình ảnh trên đường đi, hình ảnh được ghi lại theo thời gian thực.Với video nhận đƣợc từ camera, hệ thống phát hiện biển báo giao thông sẽ trích ra hình ảnh để tạo ảnh đầu vào
Chất lƣợng ảnh từ quá trình ghi lại hình ảnh có thể không tốt do các yếu tố khách quan, tiền xử lý để nâng cao chất lƣợng ảnh đầu vào nhằm mục đích giúp cho việc phát hiện biển báo giao thông dễ dàng hơn và nâng cao hiệu suất cho việc phát hiện và nhận dạng
Hình 4 (a) Color Mode Image, (b) Black and White Mode Images, (c) Smooth image using Gaussian filter, and (d) Binary result image after using Gaussian filter and
HVTH: Nguyễn Việt Tiến - 13 - Ảnh nhận đƣợc là ảnh màu (hình a) Ảnh màu này đƣợc chuyển sang ảnh xám (hình b), sau đó áp dụng bộ lọc Gaussian làm cho ảnh đƣợc mịn (hình c), kỹ thuật phát hiện cạnh Canny đƣợc sử dụng để phát hiện ra biển báo giao thông (hình d) [4]
Bộ lọc Gaussian đơn giản, dễ dàng thực hiện vàthời gian thực hiện nhanh nên rút ngắn cho quá trình xử lý, đáp ứng tốt cho quá trình xử lý theo thời gian thực Nhƣng bộ lọc này chỉ áp dụng đƣợc cho các hình đơn giản, nếu áp dụng cho các hình phức tạp hơn thì hiệu suất chƣa cao
3.1.3 Phát hiện biển 3.1.3.1 Phân đoạn màu sắc Ở Việt Nam, các biển báo giao thông phổ biến dùng ba màu cơ bản là màu đỏ, màu vàng và màu xanh dương Do đó, các biển báo giao thông có đặc trưng để nhận diện là màu sắc, dựa trên đặc trƣng này mà hệ thống có thể dò để phát hiện ra vùng ảnh có thể chứa biển báo giao thông
Một ảnh thu được từ camera thông thường sử dụng không gian màu RGB Mô hình màu RGB sử dụng mô hình bổ sung trong đó ánh sáng đỏ, xanh lá cây và xanh lam được tổ hợp với nhau theo nhiều phương thức khác nhau để tạo thành các màu khác
Từ viết tắt RGB trong tiếng Anh có nghĩa là đỏ (Red), xanh lá cây (Green) và xanh lam (Blue), là ba màu gốc trong các mô hình ánh sáng bổ sung
Cũng lưu ý rằng mô hình màu RGB tự bản thân nó không định nghĩa thế nào là
"đỏ", "xanh lá cây" và "xanh lam" một cách chính xác, vì thế với cùng các giá trị như nhau của RGB có thể mô tả các màu tương đối khác nhau trên các thiết bị khác nhau có cùng một mô hình màu Trong khi chúng cùng chia sẻ một mô hình màu chung, không gian màu thực sự của chúng là dao động một cách đáng kể
Do trong không gian màu RGB khó có thể nhận dạng màu sắc mong muốn một cách chính xác, nên thông thường không gian màu RGB được chuyển sang một
Chương III: Các CT nghiên cứu TK HT PH và ND BBGT GVHD: TS Trương Quang Vinh
HVTH: Nguyễn Việt Tiến - 14 - không gian màu khác phục vụ cho quá trình phân đoạn màu Không gian màu HSV là không gian màu phổ biến cho việc phân đoạn màu
HSV là không gian màu đƣợc dùng nhiều trong việc chỉnh sửa ảnh, phân tích ảnh và một phần của lĩnh vực thị giác máy tính Hệ không gian này dựa vào 3 thông số sau để mô tả màu sắc:
S = Saturation: độ đậm đặc, sự bảo hòa
V = value: giá trị cường độ sáng
Không gian màu này thường được biểu diễn dưới dạng hình trụ hoặc hình nón
Hình 5 Không gian màu HSV
Trường màu (Hue) là vòng tròn màu sắc từ 0 đến 360 độ, bắt đầu từ màu đỏ tươi đến màu xanh lục tươi (0-120 độ), từ màu xanh lục tươi đến màu xanh lơ (120-240 độ) và từ màu xanh lơ đến màu đỏ tươi (240-360 độ).
Hình 6 Hình tròn biểu diễn màu sắc (Hue)
Theo nhƣ cách biểu diễn không gian màu theo hình trụ nhƣ trên, đi từ giá trị độ sáng (V) được biểu diễn bằng cách đi từ dưới đáy hình trụ lên và nằm trong khoảng từ 0 - 1 Ở đáy hình trụ V có giá trị là 0, là tối nhất và trên đỉnh hình trụ là độ sáng lớn nhất (V = 1) Đi từ tâm hình trụ ra mặt trụ là giá trị bão hòa của màu sắc (S) S có giá trị từ 0 - 1 0 ứng với tâm hình trụ là chỗ mà màu sắc là nhạt nhất S = 1 ở ngoài mặt trụ, là nơi mà giá trị màu sắc là đậm đặc nhất
Nhƣ vậy với mỗi giá trị (H, S, V) sẽ cho ta một màu sắc mà ở đó mô tả đầy đủ thông tin về màu sắc, độ đậm đặc và độ sáng của màu đó
THIẾT KẾ HỆ THỐNG NHÚNG CHO MÁY PHÁT HIỆN VÀ NHẬN DẠNG BIỂN BÁO GIAO THÔNG
Tổng quan hệ thống
Hệ thống nhúng phát hiện và nhận dạng biển báo giao thông dùng camera ghi lại hình ảnh theo thời gian thực, hình ảnh này đƣợc đƣa vào Beagle Board xM nhận dạng và kết quả hiển thị lên monitor
Hình 16 Sơ đồ tổng quan hệ thống
Hệ thống nhúng phát hiện và nhận dạng biển báo giao thông đƣợc thiết kế trên phần cứng và phần mềm nhƣ sau:
Chương IV: TK HTN cho máy PH và ND BBGT GVHD: TS Trương Quang Vinh
Driver Ångstrửm OS (Linux Core)
Hình 17 Sơ đồ phần cứng và phần mềm của hệ thống phát hiện và nhận dạng biển báo giao thông 4.1.1 Hardware
Gồm ba thành phần cơ bản:
Camera sẽ ghi lại hình ảnh và truyền hình ảnh này vào Beagleboard xM thông qua chuẩn giao tiếp USB Hệ thống nhúng phát hiện và nhận dạng biển báo giao thông sẽ xử lý hình ảnh và hiển thị kết qua ra monitor
Camera sử dụng trong đề tài luận văn này là Camera Logitech HD C525 có độ phân giải chuẩn 640x480 với thông số kỹ thuật nhƣ sau:
HD video calling (1280 x 720 pixels) with recommended system
HD video capture: Up to 1280 x 720 pixels
Photos: Up to 8 megapixels (software enhanced)
Built-in mic with Logitech RightSound™ technology
Hi-Speed USB 2.0 certified (recommended)
Universal clip fits laptops, LCD or CRT monitors
Chương IV: TK HTN cho máy PH và ND BBGT GVHD: TS Trương Quang Vinh
BeagleBoard lần đầu tiên đƣợc giới thiệu trong năm 2008 của Texas Instruments
Qua một thời gian cải tiến và phát triển hiện đã có thêm nhiều phiên bản mới trong đó có BeagleBoard xM (BBxM)
BeagleBoard xM là sản phẩm của Texas Instrument (TI) cung cấp khá đầy đủ các công cụ hỗ trợ cho việc xử lý ảnh Trên BeagleBoard có thể cài đặt hệ điều hành
BeagleBoard xM sở hữu những đặc tính phù hợp với các yêu cầu của hệ thống nhúng như độ tin cậy cao nhằm đảm bảo hoạt động bền bỉ, hiệu suất xử lý ấn tượng đáp ứng yêu cầu tính toán phức tạp và khả năng lập trình linh hoạt theo từng ứng dụng cụ thể, cho phép tùy chỉnh hệ thống theo đúng nhu cầu sử dụng.
BeagleBoard (BB) đƣợc thiết kế dành cho Cộng đồng mã nguồn mở (Open Source Community) BB được trang bị một tập hợp các tính năng tối thiểu cho phép người
HVTH: Nguyễn Việt Tiến - 35 - dùng trải nghiệm sức mạnh của bộ vi xử lý và không có ý định phát triển đầy đủ nền tảng các đặc tính và giao diện đƣợc cung cấp bởi bộ vi xử lý không đƣợc truy nhập từ BB Với việc sử dụng bộ giao diện tiêu chuẩn, BB dễ dàng mở rộng để thêm nhiều tính tính năng và giao diện Tất cả các thông tin thiết kế là miễn phí và có thể đƣợc sử dụng nhƣ là cơ sở cho một sản phẩm Đặc tính của Beagleboard xM:
BBxM cung cấp một CPU ARM-Cortex A8 có thể hoạt động tối đa ở tốc độ 1Ghz cùng với bộ nhớ DDRAM công suất thấp 512MB
Kích thước của BBxM khá nhỏ gọn: 3.25" × 3.25" Nó cung cấp khá đầy đủ các kết nối của một máy tính mini: USB port, Audio input conector, Audio output connector, Svideo connector, DVI-D connector, LCD header
Chương IV: TK HTN cho máy PH và ND BBGT GVHD: TS Trương Quang Vinh
Bảng 2 Các đặc tính của BBxM
Cấu trúc hệ thống BBxM:
Hình 21 Sơ đồ khối hệ thống BBxM
Sử dụng hệ điều hành Linux trên Beagle Board xM.Video đƣợc quay lại trong quá trình điều khiển xe được lấy từ camera đưa vào Beagle Board xM Chương trình xử lý ảnh đƣợc thực hiện trên ngôn ngữ C++ [5]
Monitor được sử dụng để hiển thị thông tin và giao tiếp với người dùng trong quá trình điều khiển xe
Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều hành
Chương IV: TK HTN cho máy PH và ND BBGT GVHD: TS Trương Quang Vinh
HVTH: Nguyễn Việt Tiến - 38 - Phiên bản Linux đầu tiên do Linus Torvalds viết vào năm 1991, lúc ông còn là một sinh viên của Đại học Helsinki tại Phần Lan Ông làm việc một cách hăng say trong vòng 3 năm liên tục và cho ra đời phiên bản Linux 1.0 vào năm 1994 Bộ phận chủ yếu này được phát triển và tung ra trên thị trường dưới bản quyền GNU General Public License Do đó mà bất cứ ai cũng có thể tải và xem mã nguồn của Linux
Ångström là một bản phân phối Linux dành cho các thiết bị nhúng (như PDA, Beagleboard, điện thoại di động, v.v.) Nó được phát triển bởi một nhóm nhỏ những người làm việc trên các dự án OpenEmbedded, OpenZaurus và OpenSimpad để tạo ra một hệ điều hành ổn định và thân thiện với người dùng cho các thiết bị nhúng như thiết bị cầm tay, hộp giải mã và thiết bị lưu trữ mạng Ångström rất linh hoạt, có thể dựng cho các thiết bị với bộ nhớ flash 4 MB đến các thiết bị có bộ lưu trữ RAID lên đến hàng terabyte.
Việc sử dụng Linux trên thiết bị nhúng đang được quan tâm Người sử dụng các thiết bị này thường không hài lòng vì chất lượng của hệ điều hành cũng như các phần mềm kèm theo Hoặc thường do “người hâm mộ” Linux không thích khi sử dụng hệ thống dựa trên UNIX Thuận lợi của hệ thống dựa trên UNIX là sự nổi tiếng Với những lý do đó mà các các phiên bản Linux đƣợc dùng cho các thiết bị nhúng
Cũng nhƣ cỏc phiờn bản hiện đại, Ångstrửm đƣợc dựa trờn cỏc gúi đầy đủ (Fully Package) Tuy nhiên sự tương tác với thiết bị trong khi khởi động giai đoạn cài đặt thỡ khú khăn Ångstrửm đƣợc khởi động (Bootstrap) sử dụng một “image”, điều này cần thiết để thiết lập các gói đã liên kết với filesystem image Image này đƣợc cài
HVTH: Nguyễn Việt Tiến - 39 - đặt bằng cỏch sử dụng cỏc thiết bị cụ thể và cung cấp cỏc chức năng Ångstrửm cơ bản
Do mục tiêu thực hiên tính linh động cho hệ điều hành cũng nhƣ tạo điều kiện tốt nhất cho việc quản lý hệ thống Linux, image của Ångstrửm chỉ cung cấp cỏc gúi cốt lõi Điều này cho phép người dùng tùy biến hệ thống theo nhu cầu Việc thay đổi đƣợc thực hiện dễ dàng bằng cách cài thêm các phần mềm, các gói bất kỳ từ nguồn cung cấp của Ångstrửm (Ångstrửm’s feeds) Tuy nhiờn để thuận tiện cho người dựng Ångstrửm cung cấp nhiều tựy biến image, vớ dụ cỏc image với cỏc mụi trường GUI khác nhau được cài đặt trước
Với các driver có sẵn trong hệ điều hành Linux, các thiết bị ngoại vi nhƣ camera và monitor có thể giao tiếp với Beagleboard xM
Công cụ biên dịch Qt cho kiến trúc ARM
Qt Creator là môi trường phát triển tích hợp (IDE) C++ mạnh mẽ cung cấp nhiều tính năng cho lập trình viên Nó bao gồm trình gỡ lỗi trực quan, giao diện thiết kế đồ họa người dùng (GUI) dựa trên biểu mẫu và trình soạn thảo hỗ trợ tô màu cú pháp, tự động hoàn thành nhưng không có tab Qt Creator sử dụng trình biên dịch C++ của GNU Compiler Collection (GCC) trên các nền tảng Linux và FreeBSD, đảm bảo hiệu suất cao và tương thích rộng rãi.
Trên Windows nó có thể sử dụng MinGW hoặc MSVC với các cài đặt mặc định và cũng có thể sử dụng cdb khi biên dịch từ mã nguồn
OpenCV (Open Source Computer Vision Library) là một thƣ viện các hàm lập trình chủ yếu phục vụ cho việc xử lý hình ảnh theo thời gian thực, đƣợc phát triển bởi Intel, và bây giờ đƣợc hỗ trợ bởi Willow Garage và Itseez OpenCV miễn phí cho sử dụng theo bản quyền mã nguồn mở BSD Thƣ viện là một nền tảng chéo Nó tập
Chương IV: TK HTN cho máy PH và ND BBGT GVHD: TS Trương Quang Vinh
KẾT QUẢ THỰC NGHIỆM
Chương trình phát hiện và nhận dạng biển báo giao thông
5.1.1 Giao diện chính của chương trình
Hình 29 Giao diện chính của chương trình phát hiện và nhận dạng biển báo giao thông
Chương trình có bốn phần chính:
1 Chọn chế độ hoạt động cho chương trình
Hình 30 Chọn chế độ hoạt động cho chương trình
Chương V: Kết quả thực nghiệm GVHD: TS Trương Quang Vinh
Hình 31 Phần điều khiển chương trình
Hình 32 Màn hình hiển thị của chương trình
4 Hiển thị kết quả biển báo giao thông phát hiện đƣợc trong màn hình hiển thị
Chương V: Kết quả thực nghiệm GVHD: TS Trương Quang Vinh
Hình 33 Phần hiển thị kết quả biển báo giao thông phát hiện được 5.1.2 Các chế độ hoạt động của chương trình
Chương trình hoạt động ở ba chế độ:
Chương trình sẽ dùng camera để nhận dạng theo thời gian thực:
Chương V: Kết quả thực nghiệm GVHD: TS Trương Quang Vinh
Hình 35 Chương trình hoạt động ở chế độ Camera
Với các file video đã quay từ trước chương trình sẽ phát hiện và nhận dạng biển báo giao thông trên hình ảnh của file video này:
Chương V: Kết quả thực nghiệm GVHD: TS Trương Quang Vinh
Hình 37 Chương trình hoạt động ở chế độ Video
Chương trình phát hiện và nhận dạng biển báo giao thông với các file ảnh cho trước:
Chương V: Kết quả thực nghiệm GVHD: TS Trương Quang Vinh
Hình 39 Chương trình hoạt động ở chế độ Picture