1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM

131 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • 1. CHƯƠNG 1: GIỚI THIỆU (16)
    • 1.1 Giới thiệu tổng quan (16)
    • 1.2 Mục tiêu đề tài (16)
    • 1.3 Một số thách thức và giới hạn đề tài (16)
      • 1.3.1 Một số thách thức (17)
      • 1.3.2 Giới hạn đề tài (20)
  • 2. CHƯƠNG 2: TÌNH HÌNH NGHIÊN CỨU (24)
    • 2.1 Cơ bản về giải thuật nhận dạng biển báo giao thông (24)
    • 2.2 Các công trình nghiên cứu liên quan (24)
      • 2.2.1 Các công trình nghiên cứu dựa trên thông tin màu sắc, hình dạng (24)
      • 2.2.2 Các công trình nghiên cứu sử dụng thuật toán máy học (29)
    • 2.3 Phân tích tổng quan lý thuyết (31)
      • 2.3.1 Tiền xử lý (32)
      • 2.3.2 Phát hiện biển báo (35)
      • 2.3.3 Giới thiệu thư viện mã nguồn mở OpenCV (0)
  • 3. CHƯƠNG 3: NỘI DUNG (55)
    • 3.1 Giải thuật đề nghị (55)
      • 3.1.1 Ảnh đầu vào (55)
      • 3.1.2 Tiền xử lý (55)
      • 3.1.3 Phát hiện biển (58)
      • 3.1.4 Nhận dạng (72)
      • 3.1.5 Kết quả mô phỏng (74)
      • 3.1.6 Một số phương pháp tối ưu (74)
    • 3.2 Thiết kế hệ thống nhúng phát hiện và nhận dạng biển báo (81)
      • 3.2.1 Kit nhúng Tiny4412 (81)
      • 3.2.2 Cài đặt thư viện, hệ điều hành trên kit Tiny4412 (0)
      • 3.2.3 Các bước biên dịch cài đặt OpenCV (96)
      • 3.2.4 Porting ứng dụng lên kit nhúng (104)
  • 4. CHƯƠNG 4: THỬ NGHIỆM ĐÁNH GIÁ (109)
    • 4.1 Phương pháp thử nghiệm (109)
    • 4.2 Đánh giá (124)
    • 4.3 Kết luận (124)
  • TÀI LIỆU THAM KHẢO (125)
  • PHỤ LỤC (127)

Nội dung

Thuật toán dựa trên đặc trưng về màu sắc, hình dạng của từng loại biển báo để phân đoạn màu sử dụng thuật toán HSV Achrom, phân đoạn hình học với phương pháp Affine Moment Invariant sau

CHƯƠNG 1: GIỚI THIỆU

Giới thiệu tổng quan

Vấn đề về an toàn giao thông luôn là một chủ đề nóng được cộng đồng và nhà nước quan tâm Mỗi ngày số người chết vì tai nạn giao thông không ngừng tăng lên, nguyên nhân chủ yếu là do ý thức người tham gia giao thông, ngoài ra còn phải kể tới cơ sở hạ tầng giao thông Tuy nhiên cũng không thể đổ lỗi hoàn toàn cho người tham gia giao thông, một phần các tài xế lưu thông trên đường luôn phải xử lí rất nhiều tình huống liên tục do đó sự thiếu sót là không tránh khỏi, một phần không nhỏ đó là ý thức tham gia giao thông Để giảm bớt thiếu sót trong xử lý tình huống của tài xế cũng như giảm bớt tai nạn giao thông, việc giúp tài xế phát hiện và nhận diện biển báo giao thông có thể giảm bớt phần nào tai nạn giao thông Phát hiện và nhận diện biển báo giao thông là một phần chính của hệ thống hỗ trợ lái xe DAS (Driver Assistant Systems) Nó có thể cung cấp thông tin như đưa ra các cảnh báo cho tài xế, hoặc hỗ trợ cho việc lái xe tự động Trong phạm vi luận văn này em sẽ từng bước xây dựng ra hệ thống này dựa trên bộ thư viện xử lý ảnh OpenCV, chạy trên Kit nhúng FriendlyARM Tiny4412.

Mục tiêu đề tài

- Phát triển giải thuật phát hiện và nhận dạng biển báo giao thông tại Việt Nam

- Mô phỏng giải thuật trên PC - Xây dựng hệ thống phát hiện và nhận diện biển báo giao thông ở Việt Nam, sử dụng kit FriendlyArm Tiny 4412 - Xây dựng cơ sở dữ liệu hình ảnh và video về biển báo giao thông Việt Nam.

Một số thách thức và giới hạn đề tài

Biển báo giao thông đường bộ 2015 hay còn gọi là hệ thống báo hiệu đường bộ là hệ thống các biển báo được đặt ven đường giao thông, biển báo giao thông cung cấp các thông tin cụ thể đến người tham gia giao thông Được chia thành 6 nhóm sau: biển báo cấm, biển báo nguy hiểm, biển hiệu lệnh, biển chỉ dẫn, biển phụ, vạch

- 2 - kẻ đường Trong mỗi nhóm biển báo có số lượng biển báo rất đa dạng nhiều hình dạng màu sắc khác nhau

Do sự phức tạp của biển báo và môi trường xung quanh chúng, việc phát hiện và nhận diện biển báo sẽ gặp nhiều khó khăn như:

- Màu sắc biển báo bị phai mờ theo thời gian do sự tiếp xúc với ánh mặt trời và phản ứng của lớp sơn với không khí

Hình 1.1 Biển báo bị phai mờ

- Tầm nhìn hạn chế do điều kiện thời tiết như sương mù, mưa, mây hoặc tuyết rơi

Hình 1.2 Biển báo bị sương mù bao phủ

- Độ sáng thay đổi theo thời gian trong ngày, bị che khuất bởi các vật thể khác

Hình 1.3 Biển báo bị che khuất

- Đặc biệt thông tin màu sắc rất nhạy cảm với các điều kiện ánh sáng như bóng tối, đám mây, mặt trời, có thể bị ảnh hưởng sự chiếu sáng do góc nhìn

Hình 1.4 Biển báo thiếu sáng

- Nhiễu do các vật thể cùng màu sắc như các biển quảng cáo, băng rôn

Hình 1.5 Biển báo trùng màu nền (quảng cáo )

- Biển báo bị hư hỏng, mất góc

- Có quá nhiều biển báo hiện diện cùng lúc

Hình 1.6 Quá nhiều biển báo cùng lúc

- Thông thường hình ảnh được lấy từ camera trên xe do đó sẽ không tránh khỏi bị mờ do chuyển động, rung

- Sự hiện diện của các chướng ngại như cây cối, nhà cửa, xe cộ và người đi bộ

- Hiện nay biển báo giao thông ở Việt Nam do nhiều công ty thi công và không có quy chuẩn nhất định

- Thiếu một cơ sở dữ liệu tiêu chuẩn để đánh giá các phương pháp phân loại hiện có

Phạm vi nghiên cứu của đề tài dành cho 3 loại biển báo chính với số lượng như sau:

20 Biển báo cấm: Biển báo cấm để biểu thị các điều cấm Người sử dụng đường phải chấp hành những điều cấm mà biển đã báo Nhóm biển báo cấm gồm có 39 kiểu được đánh số thứ tự từ biển số 101 đến biển số 139 Đặc trƣng: thường hình tròn, viền đỏ, nền trắng, trừ một số biển đặc biệt như biển

102- cấm đi ngược chiều, biển cấm dừng, đậu xe có nền xanh viền đỏ như biển 130, 131a, 131b, 131c

Bảng 1.1 Danh sách biển cấm được thử nghiệm

STT Ký hiệu và tên biển Hình ảnh

1 101 – Đường cấm 2 102 – Cấm đi ngược chiều 3 103a – Cấm ô tô

4 103b – Cấm ô tô rẽ phải 5 103c – Cấm ô tô rẽ trái

6 106a – Cấm ô tô tải (có trọng tải từ 1.5 tấn trở lên) 7 123a – Cấm rẽ trái 8 123b – Cấm rẽ phải 9 124a – Cấm quay xe 10 125 – Cấm vượt 11 127a – Tốc độ tối đa cho phép 40km/h

- 6 - 12 127b – Tốc độ tối đa cho phép 60km/h

13 127c – Tốc độ tối đa cho phép 80km/h 14 127d – Tốc độ tối đa cho phép 50km/h 15 127e – Tốc độ tối đa cho phép 30km/h 16 128 – Cấm sử dụng còi

17 130 – Cấm dừng và đỗ xe

18 131a – Cấm đỗ xe 19 131b – Cấm đỗ xe ngày lẻ 20 131c – Cấm đỗ xe ngày chẵn

22 Biển báo nguy hiểm: cảnh báo các nguy hiểm thường gặp, được đánh số từ 201 đến 245 Đặc trƣng: Có hình tam giác nền vàng, viền đỏ

Bảng 1.2 Danh sách biển báo nguy hiểm được thử nghiệm

STT Ký hiệu và tên biển Hình ảnh

1 201a – Chỗ ngoặc nguy hiểm 2 201b – Chỗ ngoặc nguy hiểm 3 202a – Nhiều chỗ ngoặc nguy hiểm liên tiếp 4 202b – Nhiều chỗ ngoặc nguy hiểm liên tiếp 5 203b – Đường bị hẹp bên trái

- 7 - 6 203c – Đường bị hẹp bên phải 7 205e – Đường giao nhau 8 205a – Đường giao nhau 9 205b – Đường giao nhau 10 205c – Đường giao nhau

11 208 – Giao nhau với đường ưu tiên 12 210 – Giao nhau với đường sắt có rào chắn 13 224 – Đường người đi bộ cắt ngang

14 225 – Trẻ em 15 223 – Nguy hiểm khác 16 227 – Công trường 17 239 – Đường cáp điện phía trên 18 245a – Đi chậm

19 246 – Chú ý chướng ngại vật 20 204 – Đường 2 chiều

21 202 – Chỗ ngoặc nguy hiểm liên tiếp

22 209 – Giao nhau có tín hiệu đèn

10 Biển hiệu lệnh: chỉ dẫn hiệu lệnh, được đanh số từ 301 đến 309 Đặc trƣng: Hình tròn, nền xanh và không viền

Bảng 1.3 Danh sách các biển báo hiệu lệnh được thử nghiệm

STT Ký hiệu và tên biển Hình ảnh

1 301a – Hướng đi phải theo 2 301b – Hướng đi phải theo 3 301c – Hướng đi phải theo 4 301d – Chỉ được rẽ phải 5 301e – Chỉ được rẽ trái 6 301i – Chỉ được rẽ phải hoặc rẽ trái 7 302a – Hướng phải đi vòng chướng ngại vật 8 302b – Hướng phải đi vòng chướng ngại vật 9 303 – Nơi giao nhau chạy theo vòng xuyến 10 306 – Tốc độ tối thiểu cho phép

- Đề tài được thực hiện trên kit nhúng Friendly Arm Tiny 4412 - Camera thực hiện có độ phân giải 640x480

- Xử lý thời gian thực ở tốc độ < 20 frames/s

CHƯƠNG 2: TÌNH HÌNH NGHIÊN CỨU

Cơ bản về giải thuật nhận dạng biển báo giao thông

Quá trình nhận diện biển báo giao thông có thể chia ra làm 2 giai đoạn chính: phát hiện và nhận diện Trong đó giai đoạn phát hiện đóng vai trò quyết định về sau, chỉ có phát hiện chính xác đối tượng nào là biển báo thì mới có thể đưa vào nhận diện được

Chính vì vậy đây là giai đoạn cực kỳ quan trọng cần phải nghiên cứu kỹ lưỡng Dựa trên các phân tích về đặc trưng biển báo cho thấy màu sắc và hình dạng biển báo là hai thông tin quan trọng giúp phát hiện và phân loại biển báo do đó ta sẽ xem xét các bài báo sử dụng các kỹ thuật phát hiện và nhận dạng dựa trên: thông tin màu sắc, thông tin hình dạng, dựa trên các thuật toán máy học (machine learning).

Các công trình nghiên cứu liên quan

Một bài báo của Ghica năm 1995 [1] sử dụng ngưỡng để phân đoạn màu, đây là kỹ thuật cơ bản nhất tính toán sự sai khác giữa các pixel trong ảnh so với giá trị tham khảo trên không gian RGB

Fang [2] tính toán giá trị Hue của không gian màu HSI trên mỗi pixel, so sánh sự tương đồng của Hue với giá trị Hue tham khảo Đối tượng được phát hiện nếu sự tương đồng là lớn, kết quả sau đó đem đi phân tích xác định màu sắc của đối tượng so với màu biển báo chuẩn để nhận diện

Hoferlin, K Zimmermann [3], đây là một bài báo phát hiện biển báo dựa trên hình dạng đối tượng

Hình 2.1 Hệ thống nhận diện biển báo của Hoferlin, K Zimmer

Hình 2.1 là cấu trúc hệ thống nhận diện biển báo giao thông của Hoferlin, K Zimmer, sử dụng các ứng dụng của SIFT và dựa trên hình dạng biển báo để phát hiện đối tượng là biển báo Hơn nữa nhóm tác giả bổ sung một kỹ thuật gọi là mật độ cong tương ứng

(contracting curve density – CCD) để tinh chỉnh vùng ứng cử được phát hiện là biển báo, tăng hiệu suất cho quá trình phân loại kế tiếp Cuối cùng nhận diện dựa trên SIFT và SURF sử dụng mạng nơ rơn

Yin S, Ouyang P, et al [4] sử dụng phương pháp biến đổi Hough điển hình để phát hiện vùng ảnh có khả năng là biển báo giao thông sau đó họ dùng RIBP (Rotation Invariant Binary Pattern) dựa trên không gian affine và Gaussian để rút ngắn thời gian phát hiện biển báo hiệu quả trên những biển báo bị xoay, chói sáng, hoặc không đúng tỉ lệ Cuối cùng họ sử dụng mạng ANN (Artificial Neutral Network) dựa trên tính năng giảm kích thước và phân loại để giảm thời gian nhận diện

Hình 2.2 Giải thuật nhận diện biển báo của Yin, et Đây là mô hình nhận diện biển báo giao thông họ đề xuất, phương pháp đặc trưng của biến đồi Hough (được cung cấp bởi thư viện OpenCV) để xác định vị trí các vùng ứng cử cho biển báo giao thông Sau đó áp dụng kỹ thuật không gian Affine và Gaussian để củng cố lại các vùng ứng cử Kỹ thuật tọa độ cực trị (extreme localization) thừa hưởng từ thuật toán SIFT, cung cấp các hướng và tọa độ cực trị Tháp Gaussian sẽ tạo ra các khối ảnh nhị phân và xoay chuỗi nhị phân đến vị trị tối thiểu để tạo ra ảnh RIBP Sau đó thông qua bộ lọc hình tròn, dựa trên các tọa độ cực trị và hướng tạo ra biểu đồ nhị phân các vùng tròn (Circular Binary Pattern based Histogram) Dựa trên các biểu đồ liên tiếp này sẽ tạo thành những véc tơ đặc trưng Cuối cùng là một véc tơ 64 chiều được đại diện bởi các dữ liệu cố định (fixed-point data) Những dữ liệu cố định này dựa trên các véc tơ đặc trưng góp phần cải thiện tốc độ tính toán Các véc tơ đặc trưng được tạo ra ở một vùng ứng cử sẽ được nhóm lại sử dụng ANN dựa trên phương pháp

- 12 - K-means, sau đó phân loại ANN sẽ giảm kích thước phân loại cải thiện đáng kể tốc độ xử lý

Hasan Fleyeh [5], ông phát triển hệ thống nhận diện báo giao thông kết hợp của hai thông tin màu sắc và hình dạng biển báo trải qua ba quá trình chính: phân đoạn màu, phân loại và nhận diện Trong giai đoạn phân đoạn màu, tác giả phát triển bốn thuật toán bao gồm: Shadow and highlight invariant (SHI), lấy ngưỡng động, chỉnh sửa thuật toán de la Escalera‟s và thuật toán phân đoạn màu dùng Fuzzy

Tất cả các thuật toán được tác giả phát triển và thử nghiệm rất kỹ lưỡng, trong đó thuật toán SHI được đánh giá là có hiệu năng cao nhất Nó có thể chống lại được các điều kiện khó khăn của thời tiết, ánh sáng (chói sáng, bóng râm), và thời điểm trong ngày (được chứng minh là không phụ thuộc vào cường độ ánh sáng)

Abhishek Bedi 2011 [6], cũng dựa trên thông tin màu sắc hình dạng cho việc phát hiện biển báo, tác giả phát triển hệ thống nhận diện biển báo hạn chế tốc độ ẩn trong bóng tối hoặc trời nhiều mây ánh sáng không đủ

Tình hình nghiên cứu trong nước, Để phát hiện và nhận diện chính xác biển báo giao thông là một thử thách lớn cho việc phát triển các hệ thống hỗ trợ tài xế khi phải giải quyết khá nhiều vấn đề về mặt hình ảnh như vật chuyển động, trong điều kiện thời tiết khác nhau, bóng tối hoặc che khuất thường gặp khi xe di chuyển

Bùi Minh Thành [7] phân chia công việc thành ba giai đoạn: phân đoạn màu, phát hiện biển báo, phân loại biển báo Kết quả thực nghiệm trên các tuyến đường ở Ireland và vương quốc Anh khá tốt với 99,2 % độ chính xác phân loại biển báo Mô hình đề xuất của tác giả

Hình 2.3 Hệ thống nhận diện biển báo của Bùi Minh Thành, et

Cũng áp dụng phương pháp này nhiều luận văn được thực hiện cho biển báo giao thông ở Việt Nam như Trịnh Quốc Tài – 2012 [8], Nguyễn Việt Tiến – 2013 [9], Lê Quốc

Hình 2.4 Các giai đoạn nhận diện biển báo

- 14 - Các tác giả chia công việc nhận diện biển báo giao thông qua hai bước chính: phát hiện và nhận diện Trong giai đoạn phát hiện (Detection Phase), hình ảnh được qua tiền xử lí, nâng cao, phân đoạn màu sắc, hình dạng Đầu ra là một hình tiềm năng có thể là biển báo Giúp tăng hiệu quả và tốc độ phát hiện vì chỉ giữ lại những vùng tiềm năng thỏa mãn yêu cầu Trong giai đoạn nhận diện (Recognition Phase): Mỗi vùng tiềm năng được kiểm tra các đặc trưng để quyết định nó có phải hay không Hình dạng của đối tượng đóng vai trò quan trọng, nó quyết định xem đối tượng nên học lớp nào hình tròn hay tam giác

2.2.2 Các công trình nghiên cứu sử dụng thuật toán máy học

Máy học là một ngành khoa học nghiên cứu các thuật toán cho phép máy tính có thể học được các khái niệm (concept) Có hai phương pháp máy học chính:

- Phương pháp quy nạp: Máy học phân biệt các khái niệm dựa trên dữ liệu đã thu thập được trước đó Phương pháp này cho phép tận dụng được nguồn dữ liệu rất nhiều và sẵn có

- Phương pháp suy diễn: Máy học phân biệt các khái niệm dựa vào các luật Cho phép tận dụng được các kiến thức chuyên ngành để hổ trợ máy tính

Một nghiên cứu đáng chú ý sử dụng máy học là ứng dụng phát hiện đối tượng của Paul

Phân tích tổng quan lý thuyết

Nhiều công nghệ được sử dụng để nhận diện biển báo giao thông đã được trình bày ở trên, một số chúng có thể kết hợp lại để tối ưu và đem lại hiệu năng cao như kết hợp màu sắc và hình dạng để phát hiện chính xác hơn

- 17 - Thông qua các nghiên cứu, bài toán phát hiện và nhận diện biển báo cơ bản bao gồm các bước:

2.3.1 Tiền xử lý Đây là bước khá quan trọng giúp cho quá trình phát hiện nhanh và chính xác hơn Ảnh đầu vào thu thập từ camera qua tiền xử lý để nâng cao chất lượng ảnh, giảm nhiễu, và chuyển đổi không gian màu sang HSV

Từ phân tích tổng quan và đặc trưng biển báo giao thông, rõ ràng màu sắc là chìa khóa cung cấp thông tin cho tài xế, do đó nó là nguồn thông tin quan trọng đối với hệ thống phát hiện nhận diện biển báo giao thông của chúng ta

Màu sắc thu được bởi camera rất đa dạng, thường ở không gian RGB, ở không gian này 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 được chuyển sang không gian thích hợp cho thị giác máy tính hơn, trong đó không gian HSV được coi là liên quan chặt chẽ so với nhận thức màu sắc của con người

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:

Hình 2.7 Bài toán phát hiện và nhận diện biển báo

- 18 - 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 2.8 Không gian màu HSV

Hình 2.9 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

Cách chuyển đổi không gian màu RGB sang HSV là:

Chia các giá trị R, G, B cho 255 để chuyển đổi từ [0-255] sang [0-1]

G' = G/255 B' = B/255 Cmax = max (R', G', B') Cmin = min (R', G', B') Δ = Cmax - Cmin

Công thức chuyển đổi HSV – RGB:

Chuyển đổi từ YCbCr sang RGB:

Phần quan trọng đầu tiên của phát hiện biển báo là phải xác định được đối tượng nào là biển báo Để phát hiện đối tượng, đầu tiên chúng ta sẽ tìm hiểu một số giải thuật phân đoạn màu

Một số thuật toán phân đoạn màu: a) Thuật toán phân đoạn màu ngƣỡng động (The Dynamic Threshold Algorithm) Được phát triển bởi Hasan Fleyeh [5], phương pháp này dựa trên giá trị trung bình của độ sáng (luminance), ảnh sẽ được biến đổi từ không gian RGB sang không gian IHSL, các giá trị Hue, Saturation, Luminance được tính toán trong khoảng [0,255] dựa vào trị trung bình Nmean của thành phần L, với

(2.7) Trong đó n,m là kích thước của ảnh , L(i,j) là giá trị lumiance của pixel vị trí (i,j)

Giá trị màu tham khảo và giá trị màu của pixel xử lý được thể hiện bởi hai vector sau:

Hình 2.10 Khoảng cách Euclid của hai véc tơ

H1, H2 là Hue của màu tham khảo và màu xử lý, tương ứng S1,S2 là Saturation

Khoảng cách Euclid giữa 2 véc tơ được tính:

(2.8) Do giá trị Hue và Saturation bị ảnh hưởng bởi ánh sáng theo thời gian (thời điểm chụp ảnh), giá trị ngưỡng động được tính: Ý tưởng chính là phát triển một thuật toán ngưỡng động dựa vào độ sáng của ảnh, khi độ sáng cao thì ngưỡng nhỏ và ngược lại Thuật toán kiểm tra tất cả các pixel để tìm kiếm pixel nghi ngờ là đối tượng bằng cách tính toán khoảng cách Euclid d, nếu d nhó hơn hoặc bằng ngưỡng Đầu ra là ảnh nhị phân chứa những pixel có màu tương đương với giá trị màu tham khảo

Bảng giá trị thông thường của Hue và Saturation:

Bảng 2.1 Bảng giá trị thông thường của Hue và Saturation b) Thuật toán chỉnh sửa của de la Escalera Được phát triển bởi Hasan Fleyeh [5], một sự chỉnh sửa của thuật toán được đề xuất bởi de la Escalera, ảnh được chuyển đôi từ không gian RGB sang IHLS, thành phần Hue và Saturation được chuẩn hóa trong khoảng [0,255]

Các thành phần H, S được tính như sau:

Hmin, Hmax tương ứng của Red, Green, Blue được định nghĩa:

Hình 2.13 H_out theo Blue c) Thuật toán Shadow and Highlight Invariant Được phát triển bởi Hasan Fleyeh [5], thuật toán này dựa trên sự bất biến của thành phần Hue dưới hiện tượng đổ bóng và phản xạ ánh sáng của biển báo Do đó, thuật toán này được thực hiện bằng cách chuyển đổi các hình ảnh RGB sang không gian màu HSV Hue, Saturation được chuẩn hóa trong khoảng [0,255] Ý tưởng của phương pháp này là lấy ngưỡng trên diện rộng, tăng khả năng lấy đúng vùng ảnh Các bước thực hiện:

 Chuyển đổi ảnh RGB sang không gian màu HSV

 Chuẩn hóa mức xám của mỗi pixel của thành phần H từ [0,360] sang [0,255]

 Chuẩn hóa mức xám của mỗi pixel của thành phần S từ [0,1] sang [0,255]

 Chuẩn hóa mức xám của mỗi pixel của thành phần V từ [0,1] sang [0,255]

 Đối với những pixel của ảnh H thực hiện giải thuật sau o Nếu (H_value > 240 và H_value =0 và H_value

= 60: thì ảnh con này được xem như là seed image

 Dựa vào seed image này và ảnh H sẽ tìm ra khu vực thích hợp là biển báo

Hình 2.14 Lưu đồ giải thuật Shadow High Light Invariant

- 26 - Nhận xét: Bằng thực nghiệm Fleyeh [5] cho thấy thuật toán Shadow and Highlight

Invariant có hiệu năng tốt nhất so với các thuật toán còn lại với các lý do sau:

- Phân đoạn màu đạt hiệu năng cao 97.6%

- Khả năng phân đoạn trong nhiều điều kiện thời tiết, biển báo, và tình trạng ảnh vào

- Tốc độ cao nhất - Có khả năng nâng cao tốc độ nhận diện do loại trừ được nhiễu và chính xác

Tuy vậy, thuật toán Shadow and Highlight invariant phân đoạn màu diện rộng, và sử dụng ngưỡng khá rộng nên vùng nhận diện sẽ không tốt đối với các ảnh phức tạp chứa nhiều vùng màu trùng với biển báo

Do đó, một phương pháp phân đoạn màu cải tiến so với phương pháp Shadow and Highlight Invariant được đề xuất bởi Bedi [6] gọi là HSV Achom d) Thuật toán HSV Achrom Đây là phương pháp cải thiện hơn được phát triển bởi Abhishek Bedi [6], giúp nhận diện vùng tối tốt hơn

Hình 2.15 HSV Achrom - HSV color space

Dựa vào không gian màu HSV, ta nhận thấy vùng màu đỏ từ 0-30 độ và 300-360 độ, với True Red ứng với 0 độ Người ta đưa ra biểu đồ cho màu đỏ dưới đây:

Hình 2.16 Chromatic Zone của màu đỏ

Vmax thay đổi từ 255-243 Để xác định một pixel nằm dưới hay trên đường chéo, sử dụng phương trình đường thẳng qua hai điểm:

 (V2-V1) *S + (S1-S2) *V + V1*S2 – V2*S1 = 0 (2.11) Do đó, một điểm ảnh (S, V) thuộc đường thẳng sẽ thỏa mãn phương trình trên

Các biển báo giao thông chủ yếu có dạng hình tròn, tam giác và chữ nhật Sau khi có ảnh phân đoạn màu, áp dụng tìm đường bao và xác định hình dạng biển báo

CHƯƠNG 3: NỘI DUNG

Giải thuật đề nghị

Sơ đồ giải thuật phát hiện và nhận diện biển báo giao thông:

3.1.1 Ảnh đầu vào Ảnh đầu vào được chụp/quay trực tiếp bằng camera có độ phân giải 640x480

3.1.2 Tiền xử lý Bước 1: Lấy phần ảnh cần xử lý

Hệ thống giao thông Việt Nam đi lại theo lề phải, nên các biển báo giao thông sẽ được bố trí bên phía tay phải, ngang tầm nhìn lái xe Vì vậy, để giảm bớt công việc xử lý, loại bỏ thông tin dư thừa chúng ta sẽ lấy vùng chữ nhật góc trên bên phải như hình dưới

- Tạo mặt nạ có kích thước mong muốn - Thiết lập vùng giá trị mặt nạ với ảnh gốc - Copy vùng ảnh mặt nạ qua ảnh mới Ảnh vào

Hình 3.1 Sơ đồ tổng quan hệ thống nhận dạng

- 41 - - Reset giá trị mặt nạ đối với ảnh gốc

Hình 3.3 Minh họa vùng ảnh cần xử lý

Hình 3.2 Ví dụ tạo vùng mặt nạ

Bước 2: Giảm nhiễu: sau khi cắt được vùng ảnh cần xử lý ta làm trơn ảnh (Blur) bằng bộ lọc Gaussian 5x5 hoặc 7x7 Bộ lọc Gaussian là bộ lọc tần số cao, chỉ giữ lại thành phần lần số thấp

OpenCV cung cấp thư viện để thực hiện công việc này thông qua hàm void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, intborderType=BORDER_DEFAULT )

 src – input image; the image can have any number of channels, which are processed independently, but the depth should be CV_8U, CV_16U, CV_16S, CV_32F or CV_64F

 dst – output image of the same size and type as src

 ksize – Gaussian kernel size ksize.width and ksize.height can differ but they both must be positive and odd Or, they can be zero‟s and then they are computed from sigma*

Hình 3.4 Ảnh trước khi áp dụng bộ lọc Gaussian

Hình 3.5 Ảnh sau khi áp dụng bộ lọc Gaussian

Giai đoạn phát hiện biển báo được thể hiện chi tiết như sơ đồ khối bên dưới

Hình 3.6 Sơ đồ khối phát hiện biển báo

Trong giai đoạn phát hiện biển báo, bước quan trọng đầu tiên là phân đoạn màu, tương ứng với đặc trưng biển báo ta có biển báo chỉ dẫn nền xanh ứng với phân đoạn màu

- 44 - xanh, biển cấm và nguy hiểm có đặc trưng viền đỏ ứng với phân đoạn màu đỏ Sau khi có ảnh phân đoạn màu ta tiến hành một số công đoạn để phát hiện đối tượng là biển báo, đem đi phân loại hình học, trích xuất đặc trưng và cho qua giai đoạn nhận dạng

Dựa trên những phân tích về thuật toán phân đoạn màu ở chương 3, ta sử dụng thuật toán phân đoạn HSV Achrom Quá trình phân đoạn màu được chia làm hai bước: phân đoạn màu xanh và phân đoạn màu đỏ Phân đoạn màu xanh sử dụng cho biển báo hiệu lệnh Phân đoạn màu đỏ sử dụng để phát hiện biển báo có viền đỏ và biển báo ngược chiều

1) Chuyển ảnh màu từ không gian RGB sang không giang HSV 2) Thực hiện kiểm tra giá trị H, S, V của từng pixel trong ảnh màu a) Phân đoạn màu đỏ

Trước tiên ta sẽ kiểm tra giá trị H xem có nằm trong vùng ứng với màu đỏ không Nếu không nằm trong vùng trên thì pixel đó tương ứng với pixel màu đen trong ảnh binary

Nếu H nằm trong vùng màu đỏ thì ta sẽ sử dụng tiếp giá trị S và V để xét xem pixel có nằm trong vùng Chromatic zone hay không (minh họa trong hình sau)

Hình 3.7 Ngưỡng giá trị S và V đối với màu đỏ trong Chromatic Zone

- 45 - Nếu SVmin thì ta sẽ tiếp tục xét xem S>Smax hay không, nếu có thì hiển nhiên giá trị màu của pixel này nằm trong vùng chromatic zone Như vậy, pixel này tương ứng với pixel màu trắng trong ảnh binary Nếu ngược lại (nghĩa là Smin pixel màu đen, ngược lại là pixel màu trắng trong ảnh binary

Lưu đồ chi tiết mô tả các bước trên được cho trong hình sau:

Hình 3.8 Lưu đồ giải thuật phân đoạn màu b) Phân đoạn màu xanh

Tương tự như phân đoạn màu đỏ, chỉ khác ở giá trị ngưỡng màu lựa chọn như bảng sau:

Bảng 3.1 Giá trị các ngưỡng trong phân đoạn màu

3.1.3.2 Phát hiện biển Ảnh sau khi phân đoạn màu là ảnh trắng đen: màu trắng là các đối tượng thỏa với màu tham khảo (đỏ, xanh), màu đen là những màu không đúng với màu tham khảo của biến báo Các bước phát hiện biển có thể tóm tắt theo sơ đồ khối dưới đây:

Hình 3.9 Phát hiện biển báo ngược chiều

- 48 - a) Lấy những đối tƣợng có diện tích thích hợp: Để phát hiện ta trích xuất các đối tượng màu trắng trong ảnh sau phân đoạn, lấy phần bên trong của đối tượng để thiểu số lượng đối tượng nhiễu (loại đối tượng quá to hoặc quá nhỏ) Việc chọn ngưỡng diện tích quyết định quan trọng đến:

- Số lượng đối tượng nhiễu - Khoảng cách xa nhất và gần nhất để có thể phát hiện biển báo Thông thường nếu giảm thiểu đối tượng nhiễu thì khoảng cách có thể phát hiện biển báo sẽ bị thu hẹp Bước này phải trải qua thực nghiệm nhiều lần để có thể chọn ra ngưỡng diện tích tối ưu để cân đối giữa số lượng nhiễu và khoảng cách phát hiện

Các thực hiện: Ở bước này đơn giản ta sẽ sử dụng hàm của Opencv (cvFindContours và cvContourArea) lấy ra từng đối tượng (contour) có trong ảnh binary và kiểm tra diện tích từng đối tượng có nằm trong vùng cho phép hay không

Nếu không nằm trong vùng cho phép thì ta sẽ xóa đối tượng này đi bằng cách dùng hàm cvDrawContours Hàm này sẽ chỉ vẽ lại những contour thỏa mãn diện tích, loại bỏ những contour có diện tích quá bé hoặc quá lớn b) Lấy phần bên trong của đối tƣợng hoặc toàn bộ đối tƣợng:

Việc lấy phần bên trong hay lấy toàn bộ đối tượng ảnh hưởng trực tiếp đến việc nhận dạng hình học của đối tượng (tam giác, tròn, chữ nhật)

Các trường hợp ảnh hưởng đến việc lựa chọn lấy phần bên trong hay toàn bộ đối tƣợng:

Thiết kế hệ thống nhúng phát hiện và nhận dạng biển báo

Kit phát triển hệ thống nhúng có rất nhiều loại như Raspberry Pi, Beagle Board,

FriendlyArm Mỗi sản phẩm có tốc độ và khả năng hỗ trợ khác nhau, Raspberry và Beagle Board hướng tới xây dựng thành một máy tính cá nhân nhỏ gọn hỗ trợ đầy đủ các kết nối và tiêu tốn năng lượng thấp tuy nhiên tốc độ vi xử lý không cao bằng FriendlyArm Tiny 4412, do đó ta sẽ sử dụng kit nhúng Tiny 4412

Bảng 3.3 Bảng so sánh các kit phát triển nhúng Đặc tính Friendly ARM mini2440

Beagle board Raspberry Pi Friendly ARM

1.5GHz Quad Core ARM Cotex-A9 Bộ nhớ 64MB SDRAM,

512MB DDRAM 512MB RAM 1GB DDR3

RAM & 4GB eMMC Flash Màn hình

3.5” LCD với cảm ứng điện trở

Gắn riêng Gắn riêng 7” LCD với cảm ứng điện dung Giao tiếp USB, audio,

USB, audio, RS232, SD card, Ethernet, S-video

HDMI, USB, RS232, ethernet, S-video

HDMI, USB, RS232, audio, SD card, ethernet

Tiny4412 là kít phát triển dùng vi xử lý Samsung Exynos4412 ARM Cortex-A9 Cấu hình chi tiết của kit:

 CPU: 1.5 GHz Samsung Exynos4412 ARM Cortex-A9 (Quad-Core)

 Hỗ trợ hệ điều hành: Linux, Android, Ubuntu

Hình 3.24 Kít nhúng FriendlyARM Tiny 4412

Cấu tạo và các cổng giao tiếp của kit:

 Ext Memory: SD-Card socket

 Serial Ports: DB9 connector (RS232), RS485, total: 4x serial port connectors)

 USB: USB-A Host 1.1, miniUSB Slave/OTG 2.0

 Audio Output: 3.5 mm stereo jack, connector for a speaker (Class D Amp)

 Audio Input: 3.5mm jack + Condenser microphone

 RTC: Real Time Clock with battery

 Camera: 20 pin (2.0 mm) Camera interface

 LCD: 40 pin FFC and 45 pin FFC connector

 User Inputs: 8x buttons and 1x A/D pot

3.2.2 Cài đặt thƣ viện, hệ điều hành trên kit Tiny4412

Trước tiên để cài đặt được nhân Linux cho Kit ta phải ghi bootloader vào SD card

Mọi tài nguyên về tool SD-Flasher, linux kernel, image, giao diện qtopia cần thiết đều được nhà sản xuất ghi kèm trong hai DVD bán kèm theo dev kit, hoặc chúng ta có thể cập nhật được tài nguyên mới nhất thông qua trang web của nhà sản xuất dưới đây http://www.friendlyarm.net/downloads

Burning Superboot lên SD Card: Thẻ nhớ SD card thường sử dụng là loại SanDisk

- 69 - Bước 1: Trên Windows, gắn SD card vào PC, sử dụng tool SD-Flasher.exe (có trong DVD thư mục DiskA\tools\) Chạy với quyền “Administrator”

Hình 3.26 Chạy SD-Flasher.exe

Hình 3.27 SD-Flasher chọn Mini4412/Tiny4412

Click Scan để chương trình tìm thẻ nhớ được gắn vào PC

Với thẻ SD mới chạy lần đầu, ta cần phải ReLayout để format lại SD card: nhấn ReLayout! Sau khi ReLayout, ta nhấn Scan lại thì trong khung SD Drive(s) trường Available sẽ chuyển từ No-> Yes

Bước 2: Khung “Image File to Fuse”, nhấn vào nút browse (…) để lựa chọn file boot

“Superboot4412.bin” trong thư mục (DiskB\images trên DVD)

Bước 3: Nhấn “Fuse” Supperboot sẽ được ghi lên SD card

Chép linux kernel lên thẻ boot SD Card:

Bước 1: Tạo thư mục “images” trên thẻ nhớ

Bước 2: Chép file “Superboot4412.bin” vào thư mục “images”

Bước 3: Tạo thư mục chứa linux kernel (zImage), ramdiks-u.img, rootfs_qtopia_qt4.img Tất cả các file này có thể tìm thấy ở DiskB\images

Hình 3.30 Chép các file boot image lên SD card

Bước 4: Chép file FriendlyARM.ini vào thư mục “images” và chỉnh sửa như sau:

Action = Install: là để cài đặt nhân Linux lên dev kit Hoặc ta có thể chỉnh sửa chỉ chạy chứ không cài đặt bằng cách Action = Run

#This line cannot be removed by FriendlyARM(www.arm9.net)

CheckOneButton=No Action = Install OS = Linux

LCD-Mode = No CheckCRC32=No StatusType = Beeper | LED

#Android-CommandLine = console=ttySAC0,115200n8 androidboot.console=ttySAC0 ctp=2 skipcali=y vmalloc84m ethmac:6F:65:34:51:7E androidboot.selinux=permissive

#Android-RamDisk =Android/ramdisk-u.img

#Android-RootFs-InstallImage = Android/system.img

#Android-UserData-4G = Android/userdata-4g.img

#Android-UserData-8G = Android/userdata-8g.img

#Android-UserData-16G = Android/userdata-16g.img

#Android-UserData = Android/userdata.img

Linux-BootLoader = Superboot4412.bin Linux-Kernel = Linux130715/zImage Linux-CommandLine = root=/dev/mmcblk0p1 rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc ctp=2 skipcali=y ethmac:6F:65:34:51:7E

Linux-RamDisk = Linux130715/ramdisk-u.img Linux-RootFs-InstallImage = Linux130715/rootfs_qtopia_qt4.img

Bước 5: Remove SD card từ PC, cắm vào dev kit và chuyển switch S2 trên dev kit sang chế độ boot từ SD Card, bật nguồn devkit

Quá trình cài đặt sẽ tự động cài đặt đến khi hoàn tất

Trên đây là hướng dẫn sử dụng file zImage được build sẵn từ nhà sản xuất, đôi khi file zImage cũng có lỗi do đó ta có thể build lại theo hướng dẫn sau:

Thực hiện trên hệ điều hành Ubuntu:

Bước 1: Cài đặt trình biên dịch chéo “arm-linux-gcc”

Copy file “arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz” vào \tmp có trong \Disk- A\Linux\arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz

Giải nén vào thư mục /

#tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz –C /

Trình biên dịch chéo sẽ được cài đặt vào “/opt/FriendlyARM/toolschain/4.5.1”

Bước 2: Thêm đường dẫn của cross compiler vào biến môi trường

Chèn vào cuối file dòng lệnh sau:

“export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin”

Save và đóng file lại Logout và login lại máy tính để biến môi trường được cập nhật

Hoặc có thể chạy lệnh

Kiểm tra xem trình biên dịch chéo đã được cập nhật vào biến môi trường hay chưa, ta gõ lệnh:

Bước 2: Biên dịch Linux source code

Tạo thư mục /opt/FriendlyARM/tiny4412/linux, chạy lệnh sau

#mkdir –p /opt/FriendlyARM/tiny4412/linux

Chép file “linux-3.5-20150121.tgz” vào thư mục linux trên, giải nén

#cd /opt/FriendlyARM/tiny4412/linux

#tar xvzf /tmp/linux/linux-3.5-20131010.tar.gz

Sau khi giải nén linux source sẽ nằm trong folder “linux-3.5”

Chuyển vào thư mục “linux-3.5” để biên dịch như sau:

#cp tiny4412_linux_defconfig config

Quá trình build xong, file zImage sẽ được tạo ở thư mục “arch/arm/boot”

Bước 3: Cài đặt Root file system:

Copy file rootfs_qtopia_qt4-20131010.tgz vào thư mục linux, giải nén

#cd /opt/FriendlyARM/tiny4412/linux

#tar xvzf /tmp/linux/rootfs_qtopia_qt4-20131010.tgz

Sau khi giải nén, một thư mục “rootfs_qtopia_qt4” sẽ được tạo ra Để tạo file “rootfs_qtopia_qt4.img” thực hiện lệnh sau:

# make_ext4fs -s -l 314572800 -a root -L linux rootfs_qtopia_qt4.img rootfs_qtopia_qt4

Lệnh trên để nén toàn bộ thự mục “rootfs_qtopia_qt4” thành file

3.2.2.2 Cài đặt thƣ viện Tslib

Tslib là thư viện để giao tiếp sử dụng màn hình cảm ứng, cung cấp các stack, chức năng để giao tiếp với touchscreen trong hệ thống linux

Bước 1: Cài đặt git-core để tải source tslib

#apt-get install git-core

#git clone http://github.com/kergoth/tslib.git

Bước 2: Trong thư mục /tmp sẽ có thư mục „tslib‟ vừa được tải về Cài đặt

Một số trường hợp do thiếu thư viện autoconf có thể gặp lỗi “Error: autoconf not found”, ta nên cài đầy đủ các thư viện sau:

#apt-get install autoconf autogen intltool

#apt-get install build-essential libtool

Bước 3: cấu hình, cài đặt

#./configure host=arm-angstrom-linux-gnueabi prefix=/usr/local/tslib enable-static enable-shared

host: là kit phát triển nhúng Arm Cài đặt xong thư viện tslib sẽ được cài đặt vào –prefix là /usr/local/tslib, bao gồm các folder như sau: bin, etc, include, lib

3.2.2.3 Cài đặt Qt Creator và Qt Everywhere Cài đặt các gói thƣ viện cần thiết:

#apt-get install build-essential

#apt-get install pkg-config

#apt-get install libpng12-0 libpng12-dev libpng++-dev libpng3

#apt-get install libpnglite-dev

#apt-get install zlib1g-dbg zlib1g zlib1g-dev

#apt-get install libjasper-dev libjasper-runtime libjasper1

#apt-get install pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools

#apt-get install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs

#apt-get install ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev

#apt-get install libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev

#apt-get install libxine1-ffmpeg libxine-dev libxine1-bin

#apt-get install libunicap2 libunicap2-dev

#apt-get install libdc1394-22-dev libdc1394-22 libdc1394-utils

#apt-get install libv4l-0 libv4l-dev

#apt-get install python-numpy

#apt-get install libgtk2.0-dev

Nếu như trên Window ta sử dụng Visual Studio, thì trên Linux ta sử dung Qt

Creator Qt Creator được phát triển rất mạnh và không hề thua kém Visual Studio Việc cài đặt khá dễ dàng Ta dùng Ubuntu Software Center, đánh vào khung tìm kiếm “Qt creator” sau đó nhấn nút install

Hình 3.31 Cài đặt Qt Creator từ Ubuntu Software Center

Sau khi cài đặt thành công Mở Qt Creator sẽ thấy giao diện như bên dưới:

Hình 3.32 Giao diện của Qt Creator

Bước 1 Chép gói cài đặt qt-everywhere-opensource-src-4.7.2.tar.gz có sẵn trong

DVD kèm theo board vào thư mục /home/giang/ trên máy tính

Bước 2 Giải nén file cài đặt

Mở cửa sổ lệnh, di chuyển đến thư mục chứa file cài đặt trên và tiến hành giải nén

#gunzip qt-everywhere-opensource-src-4.7.2.tar.gz

#tar xf qt-everywhere-opensource-src-4.7.2.tar

Kết quả giải nén ra một thư mục cùng tên file tar

Bước 3 Cấu hình và biên dịch gói cài đặt

Di chuyển vào thư mục đã giải nén của gói cài đặt:

# cd qt-everywhere-opensource-src-4.7.2

Thêm biến môi trường đến đường dẫn trình biên dịch Qt (Mở file ~/.bashrc, thêm biến môi trường $HOME/qt-everywhere-opensource-src-4.7.2)

Thêm vào cuối file dòng:

PATH=$PATH:$HOME/qt-everywhere-opensource-src-4.7.2

- 78 - Lưu và đóng file lại

Sửa file cấu hình biên dịch qmake.conf chứa tại :home/giang/qt-everywhere- opensource-src-4.7.2/mkspecs/qws/linux-arm-g++/qmake.conf như sau

# qmake configuration for building with arm-linux-g++

# include( / /common/g++.conf) include( / /common/linux.conf) include( / /common/qws.conf)

# modifications to g++.conf QMAKE_CC = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc QMAKE_CXX = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi- g++

QMAKE_LINK = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi- g++

QMAKE_LINK_SHLIB= /opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux- gnueabi-g++

# modifications to linux.conf QMAKE_AR = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-ar cqs

QMAKE_OBJCOPY = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux- gnueabi-objcopy

QMAKE_STRIP = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux- gnueabi-strip

QMAKE_INCDIR += /opt/tslib/include QMAKE_LIBDIR += /opt/tslib/lib load(qt_config)

Chú ý: Trong file cấu hình trên sử dụng đường dẫn tuyệt đối để gọi các trình biên dịch chéo được đặt ở /opt/FriendlyARM/toolschain/4.5.1/bin Sau đó, tiến hành cấu hình thư viện Qt Everywhere 4.7.2 trước khi cài đặt (thư mục cài đặt ra là /opt/qte)

#cd qt-everywhere-opensource-src-4.7.2

#./configure prefix=/opt/qte -embedded arm -xplatform qws/linux-arm-g++ - qt-mouse-tslib -little-endian -no-qt3support -fast -no-largefile -qt-sql- sqlite -nomake tools -nomake demos -nomake examples -no-webkit -no- multimedia -no-javascript-jit

- 79 - Quá trình cấu hình diễn ra một thời gian, chờ đến khi thông báo thành công

Bổ sung thư viện arm_neon.h, tải thư viện định nghĩa các kiểu dữ liệu trên trang http://www.opensource.apple.com/source/gcc/gcc-5664/gcc/config/arm/arm_neon.h Copy vào thư mục qt-everywhere-opensource-src-4.8.5/src/gui/image

Cũng trong thư mục này, include thư viện vào file qimage_neon.cpp sau dòng #ifdef QT_HAVE_NEON như sau:

Trong thư mục qt-everywhere-opensource-src-4.7.2 /src/gui

Mở file Makefile tìm cờ CFLAG và CXXFLAGS thêm vào

#–mfloat-abi=softfp –mfpu=neon

Trong thư mục qt-everywhere-opensource-src-4.7.2 /src/corelib

Mở file makefile tìm cờ CFLAG và cờ CXXFLAG thêm vào “–marm”

Sau đó vào qt-everywhere-opensource-src-4.7.2 /src/corelib xóa các file pch

Làm tương tự cho qt-everywhere-opensource-src-4.7.2 /src/gui

Tiến hành dịch thư viện:

#make Đối với máy tính nhiều lõi có thể sử dụng #make –jx, với x là số nhân CPU để tiết kiệm thời gian build Đợi quá trình make thành công, gõ lệnh cài đặt:

#make install Đợi quá trình cài đặt thành công, kiểm tra kết quả cài đặt tại /opt/qte như đã cấu hình ở trên

Tích hợp QT Everywhere vào QT Creator:

Thư viện QT Everywhere cài trên máy tính Linux cho phép biên dịch ứng dụng Qt để chạy trên Kit Tiny4412 Để tích hợp trình biên dịch qte cho QT Creator ta vào menu Tool>Option> Build & Run Đầu tiên thêm Tool Chains: là arm cross compiler trong thư mục Nhấn nút Add> GCC

- 80 - Compiler path: /opt/FriendlyARM/toolchain/4.5.1/bin/arm-linux-g++

Hình 3.33 Thêm Tool chains vào QT Creator

Sang thẻ Qt Versions: Add đường dẫn qmake trong /opt/qte/bin/qmake

Hình 3.34 Thêm qmake của Qt Everywhere vào Qt Creator Để build một ứng dụng Qt cho kit, ta chọn Build configuration là qte4.7.2 vừa mới thêm vào ở trên

Hình 3.35 Build configuration cho kit ARM

3.2.3 Các bước biên dịch cài đặt OpenCV

Bước 1: Trên máy tính ta sử dung Cmake Gui để generate cấu hình trước khi biên dịch Cài đặt Cmake Gui

#apt-get install cmake-qt-gui

Bước 2: Tải và giải nén thư viện Opencv2.4.3

Trên Desktop ta tạo một thư mục “cmake_cfg_files_pc” để chứa các file cấu hình do cmake tạo ra

Hình 3.36 Cmake Opencv Desktop Use default compiler

Where is the source code: ta chỉ đường dẫn tới thư mục chứa source Opencv2.4.3 đã giải nén ở trên

Where to build the binaries: chỉ đường dẫn tới “cmake_cfg_files_pc”

Hình 3.37 Cmake Opencv Desktop Configure

CMAKE_INSTALL_PREFIX: nên để mặc định là /usr/local

Bỏ chọn WITH_OPENEXR và WITH_TIFF Sau đó nhấn Configure lại, cuối cùng nhấn Generate

Hình 3.38 Cmake Opencv Desktop Generate Đóng Cmake lại

Vào thư mục “cmake_cfg_files_pc” kiểm tra xem thiết lập đã đúng chưa, chạy lệnh:

#cd cmake_cfg_files_pc

Trong thư mục này mở file CmakeCache.txt ta thêm option –lpthread –lrt cho CMAKE_EXE_LINKER_FLAG:STRING=‟‟

CMAKE_EXE_LINKER_FLAG:STRING=-lpthread -lrt

Bước cài đặt sẽ copy tất cả các binary, thư viện vào thư mục đã chỉ trong PREFIX là /usr/local

Bước 6: Export đường dẫn thư viện Opencv vào biến môi trường

$export LD_LIBRARY_PATH=/usr/local/lib

Hoặc mở file bashrc thêm vào cuối file dòng

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH Đóng file bashrc lại

3.2.3.2 OpenCV cho Kit (ARM): Để biên dịch thư viện Opencv cho kit ta sử dụng trình biên dịch chéo (cross compiler) đã cài đặt ở trên

Bước 1: Tạo thư mục để cài đặt thư viện cho kit Ví dụ /opt/opencv234_kit

Và thư mục chưa file configure của cmake trên desktop “cmake_cfg_file_kit”

Chạy Cmake: Chọn cross-compiling như hình

Hình 3.39 Cmake Opencv ARM tùy chọn cross compiler

Hình 3.40 Cmake Opencv ARM đường dẫn tới cross compiler

Where is the source code: ta chỉ đường dẫn tới thư mục chứa source Opencv2.4.3 đã giải nén ở trên

Where to build the binaries: chỉ đường dẫn tới “cmake_cfg_files_kit”

Hình 3.41 Cmake Opencv kit configure

CMAKE_INSTALL_PREFIX trỏ tới nơi cần cài đặt là /opt/opencv243_kit Bỏ chọn WITH_OPENEXR và WITH_TIFF Sau đó nhấn Configure lại, cuối cùng nhấn Generate

Hình 3.42 Cmake Opencv kit generating Đóng Cmake lại

Vào thư mục “cmake_cfg_files_kit” mở file CmakeCache.txt tìm dòng CMAKE_EXE_LINKER_FLAG:STRING=‟‟

CMAKE_EXE_LINKER_FLAG:STRING=-lpthread -lrt

Bước cài đặt sẽ copy tất cả các binary, thư viện vào thư mục đã chỉ trong PREFIX là /opt/opencv243_kit

3.2.4 Porting ứng dụng lên kit nhúng Để có thể copy dữ liệu giữa máy tính và Kit dễ dàng ta sử dụng gFTP, cài đặt như sau:

Kit và máy tính giao tiếp thông qua cổng Ethernet, với địa chỉ và user mặc định của kit như sau:

IP: 192.168.1.230 Username: root Password: fa

Copy thư viện opencv243_kit lên thư mục tương ứng trên kit /opt/opencv243_kit

Hình 3.43 Copy thư viện opencv lên kit

- 90 - Copy thư viện qte lên thư mục tương ứng trên kit /opt/qte:

Hình 3.44 Copy thư viện qte lên kit

Biên dịch ứng dụng cho kit:

- Chọn Build configuration là qte4.7.2 - Sửa đường dẫn thư viện tới opencv243_kit - Nhấn Build

Hình 3.45 Chỉnh sửa đường dẫn thư viện build cho kit

Copy ứng dụng xuống kit:

Hình 3.46 Copy ứng dụng xuống kit

Chạy ứng dụng trên kit:

- Chỉnh sửa rcS File rcS là file cấu hình ứng dụng để tự khởi chạy mỗi lần khởi động hệ thống

Ta chỉnh sửa file /etc/init.d/rcS để khởi tạo script ứng dụng như sau:

Trước hết ta telnet tới kit, với user: root, password: fa

Hình 3.47 Chỉnh sửa file rcS

Trong đó, /home/camera2/appscript là ứng dụng của ta

File này thiết lập môi trường, và khởi chạy ứng dụng

Hình 3.48 Chỉnh sửa file appscript

Trong đó, fix chính là tên ứng dụng

- Khởi động lại board để load ứng dụng

CHƯƠNG 4: THỬ NGHIỆM ĐÁNH GIÁ

Phương pháp thử nghiệm

- Thu thập 100 ảnh tĩnh cho mỗi biển báo (62 biển x 100 = 6200 ảnh)

- Thu thập 200 phút video biển báo thực tế tham gia giao thông Đánh giá độ chính xác giải thuật bằng cách sử dụng tập dữ liệu gồm hơn 6200 ảnh độ phân giải 640x480 trong nhiều điều kiện môi trường khác nhau:

- Ảnh chụp bằng máy ảnh kỹ thuật số hoặc điện thoại, trong nhiều ngày, nhiều khung thời gian, với vị trí biển báo khác nhau, và do nhiều người cùng thực hiện tổng hợp lại

- Trong khi chụp ảnh di chuyển lấy nhiều góc độ khác nhau của biển báo: có 2 loại là ảnh chụp trực diện hoặc nghiêng (với góc nghiêng > độ so với phương dọc thẳng đứng, hoặc phương ngang)

- Ảnh chụp lúc di chuyển bằng xe máy, hoặc rung tay: sẽ cho hình ảnh bị nhòe, blur

- Ảnh chụp ngược sáng: chói sáng, thiếu sáng

- Ảnh chụp các biển báo cũ: sơn phai màu Đánh giá giải thuật trên máy tính:

- 95 - Biển báo bị chói nắng:

Hình 4.1 Nhận diện biển báo bị chói nắng

Biển báo có sơn bị phai mờ, bong tróc:

Hình 4.2 Nhận diện biển báo có màu sơn mờ, bong tróc

- 96 - Biển báo khi trời tối và sơn phai màu

Hình 4.3 Nhận diện biển báo lúc trời tối, sơn phai màu

Biển báo có viền trùng với màu nền:

Hình 4.4 Nhận diện biển báo có viền trùng màu nền

- 97 - Biển báo màu sắc không đồng đều do bóng râm

Hình 4.5 Nhận diện biển báo ánh sáng không đồng đều, bóng râm

Biển báo bị nhòe, mờ do độ phân giải kém, ảnh hưởng di chuyển

Hình 4.6 Nhận diện biển báo mờ, blur do di chuyển

Hình 4.7 Nhận diện biển báo bị blur 1

Hình 4.8 Nhận diện biển báo bị blur 2

Hình 4.9 Nhận diện biển báo bị blur 3

Biển báo bị cong, móp méo

Hình 4.10 Nhận diện biển báo bị cong, méo

- 100 - Kết quả giải thuật trên máy tính được cho trong bảng sau:

Bảng 4.1 Kết quả thử nghiệm

STT SỐ BIỂN BÁO Tổng Phát hiện

6 106a - Cấm ôtô tải (có trọng tải từ 1.5 tấn trở lên) 100 99 99% 99 100%

11 127a - Tốc độ tối đa cho phép 40km/h 100 98 98% 98 100%

12 127 b- Tốc độ tối đa cho phép 60Km/h 100 95 95% 93 98%

- 101 - 13 127c - Tốc độ tối đa cho phép 80Km/h 100 100 100% 100 100%

14 127d - Tốc độ tối đa cho phép 50km/h 100 100 100% 100 100%

15 127e - Tốc độ tối đa cho phép 30km/h 84 61 73% 60 98%

17 130 – Cấm dừng xe và đỗ xe 100 95 95% 90 95%

19 131b – Cấm đỗ xe ngày lẻ 58 57 98% 57 100%

20 131c – Cấm đỗ xe ngày chẵn 100 96 96% 90 94%

3 202a - Nhiều chỗ ngoặt nguy hiểm liên tiếp 100 85 85% 74 87%

4 202b - Nhiều chỗ ngoặt nguy hiểm liên tiếp 100 91 91% 90 99%

12 208 – Giao nhau với đường ưu tiên 100 88 88% 79 90%

13 210 – Giao nhau với đường sắt có rào chắn 100 86 86% 85 99%

15 224 - Đường người đi bộ cắt ngang 100 99 99% 94 95%

18 239 - Đường cáp điện ở phía trên 100 94 94% 94 100%

21 202 – Nhiều chỗ ngoặc nguy hiểm liên tiếp

- 103 - 22 209 – Giao nhau có tín hiệu đèn

6 301i - Chỉ được rẽ phải hoặc rẽ trái 12 12 100% 12 100%

7 302a - Hướng phải đi vòng chướng ngại vật 13 13 100% 13 100%

8 302b - Hướng phải đi vòng chướng ngại vật 18 18 100% 18 100%

9 303 – Nơi giao nhau chạy theo vòng xuyến 11 11 100% 11 100%

10 306 - Tốc độ tối thiểu cho phép 15 15 100% 15 100%

- 104 - Đánh giá giải thuật trên kit thí nghiệm:

Hệ thống được gắn trên xe hơi như hình bên dưới

Hình 4.11 Thử nghiệm giải thuật trên kit

Phương pháp thử nghiệm trên môi trường thực tế:

- Phần mềm được cài đặt sẵn trên kit, với kết nối với camera thông qua cổng USB

- Hệ thống được lắp đặt trên xe hơi như hình trên (Hình 4.11)

Một số hình ảnh về kết quả thử nghiệm được trích xuất từ video thực nghiệm (trong thư mục video trên DVD luận văn)

Hình 4.12 Nhận diện biển báo giao thông trên kit 1

Hình 4.13 Nhận diện biển báo giao thông trên kit 2

Phương pháp đánh giá trong môi trường thí nghiệm:

- Giúp tiết kiệm chi phí và có thể kiểm tra được tất cả các biển báo được đề cập một cách dễ dàng

+ Hình ảnh biển báo được in ra giấy và di chuyển trước camera

+ Camera quay lại các hình ảnh biển báo được hiển thị trên màn hình vi tính

Về mặt thuật toán xử lý phát hiện và nhận diện không có gì khác biệt so với xử lý trên máy tính, chỉ khác biệt duy nhất ở tốc độ xử lý do khác phần cứng (khác tốc độ CPU, dung lượng bộ nhớ)

Phần mềm trên kit được thiết kế để capture video trực tiếp theo thời gian thực Sau đây là một số hình ảnh thể hiện thời gian nhận diện biển báo theo thời gian thực:

Hình 4.14 Thời gian phát hiện và nhận diện biển báo 127a

Thời gian phát hiện: 46ms, thời gian nhận diện: 22ms

Hình 4.15 Thời gian phát hiện và nhận diện biển báo 123a

Hình 4.16 Thời gian phát hiện và nhận diện biển báo 201a

Hình 4.17 Thời gian phát hiện và nhận diện biển báo 227

Hình 4.18 Thời gian phát hiện và nhận diện biển báo 208

Theo kết quả thí nghiệm thời gian phát hiện trung bình là 47ms, thời gian nhận diện biển báo trung bình là 22ms trên kit do đó hoàn toàn đáp ứng được ứng dụng thời gian thực.

Đánh giá

- Dựa trên kết quả thử nghiệm bảng trên cho thấy giai đoạn nhận diện biển báo rất tốt, với độ chính xác 95%

- Phần phát hiện vì sử dụng thuật toán phân đoạn màu dựa trên thông tin màu sắc, vì giới hạn của phương pháp phân đoạn màu dựa trên ngưỡng cố định, trong khi dữ liệu đầu vào vô cùng đa dạng về sắc thái nên rất khó có thể phát hiện hoàn toàn ảnh đầu vào.

Kết luận

- Xây dựng được ứng dụng nhận diện biển báo giao thông trên máy tính cũng như trên Kit Tiny 4412, cơ bản đáp ứng được thời gian thực

- Phát hiện với độ chính xác 92% và nhận diện chính xác 95%

- Thực hiện trong các môi trường khác nhau: trời sáng, ban ngày nắng chói, buổi chiều thiếu sáng, biển báo phai mờ, cong vẹo…

- Xây dựng tập ảnh huấn luyện có 62 loại và hơn 6200 mẫu, chia làm 3 loại chính: biển cấm, biển báo nguy hiểm, biển báo hiệu lệnh

Cài đặt hệ điều hành, biên dịch thư viện và porting ứng dụng lên Kit Tiny 4412

- Hạn chế về tốc độ, mặc dù đã áp dụng kỹ thuật lập trình đa luồng nhưng tốc độ xử lý vẫn còn thấp, chỉ đạt được 15-20 frames/s.

Ngày đăng: 09/09/2024, 07:06

HÌNH ẢNH LIÊN QUAN

Hình 1.3 Biển báo bị che khuất - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 1.3 Biển báo bị che khuất (Trang 18)
Hình 1.5 Biển báo trùng màu nền (quảng cáo ) - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 1.5 Biển báo trùng màu nền (quảng cáo ) (Trang 19)
Hình 2.1 Hệ thống nhận diện biển báo của Hoferlin, K. Zimmer - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 2.1 Hệ thống nhận diện biển báo của Hoferlin, K. Zimmer (Trang 25)
Hình 2.2 Giải thuật nhận diện biển báo của Yin, et. - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 2.2 Giải thuật nhận diện biển báo của Yin, et (Trang 26)
Hình 2.3 Hệ thống nhận diện biển báo của Bùi Minh Thành, et. - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 2.3 Hệ thống nhận diện biển báo của Bùi Minh Thành, et (Trang 28)
Hình 2.6 Lưu đồ giải thuật nhận diện của Lê Thanh Tâm, et. - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 2.6 Lưu đồ giải thuật nhận diện của Lê Thanh Tâm, et (Trang 31)
Hình 2.10 Khoảng cách Euclid của hai véc tơ - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 2.10 Khoảng cách Euclid của hai véc tơ (Trang 36)
Hình 2.16 Chromatic Zone của màu đỏ - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 2.16 Chromatic Zone của màu đỏ (Trang 42)
Hình 2.19 Phát hiện vùng ứng cử dính liền bởi thuật toán watershed - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 2.19 Phát hiện vùng ứng cử dính liền bởi thuật toán watershed (Trang 46)
Hình 2.23 Minh họa mẫu vector hỗ trợ (support vector) - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 2.23 Minh họa mẫu vector hỗ trợ (support vector) (Trang 52)
Hình ảnh minh họa - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
nh ảnh minh họa (Trang 57)
Hình 3.7 Ngưỡng giá trị S và V đối với màu đỏ trong Chromatic Zone - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.7 Ngưỡng giá trị S và V đối với màu đỏ trong Chromatic Zone (Trang 59)
Hình 3.8 Lưu đồ giải thuật phân đoạn màu - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.8 Lưu đồ giải thuật phân đoạn màu (Trang 61)
Hình 3.10 Ảnh gốc chuẩn bị phân đoạn màu - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.10 Ảnh gốc chuẩn bị phân đoạn màu (Trang 64)
Hình 3.19 Hình minh họa kết quả trích xuất đặc trưng - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.19 Hình minh họa kết quả trích xuất đặc trưng (Trang 72)
Hình 3.21 Ảnh gốc và ảnh phân đoạn màu bị đứt cạnh - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.21 Ảnh gốc và ảnh phân đoạn màu bị đứt cạnh (Trang 76)
Hình 3.22 Ảnh gốc và ảnh phân đoạn màu sau giãn nở - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.22 Ảnh gốc và ảnh phân đoạn màu sau giãn nở (Trang 77)
Hình 3.28 SD-Flasher relayout - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.28 SD-Flasher relayout (Trang 85)
Hình 3.29 SD-Flasher Fuse - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.29 SD-Flasher Fuse (Trang 86)
Hình 3.30 Chép các file boot image lên SD card - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.30 Chép các file boot image lên SD card (Trang 87)
Hình 3.32 Giao diện của Qt Creator - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.32 Giao diện của Qt Creator (Trang 92)
Hình 3.35 Build configuration cho kit ARM - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.35 Build configuration cho kit ARM (Trang 96)
Hình 3.45 Chỉnh sửa đường dẫn thư viện build cho kit - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 3.45 Chỉnh sửa đường dẫn thư viện build cho kit (Trang 106)
Hình 4.3 Nhận diện biển báo lúc trời tối, sơn phai màu - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 4.3 Nhận diện biển báo lúc trời tối, sơn phai màu (Trang 111)
Hình 4.9 Nhận diện biển báo bị blur 3 - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 4.9 Nhận diện biển báo bị blur 3 (Trang 114)
Hình 4.12 Nhận diện biển báo giao thông trên kit 1 - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 4.12 Nhận diện biển báo giao thông trên kit 1 (Trang 120)
Hình 4.14 Thời gian phát hiện và nhận diện biển báo 127a - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 4.14 Thời gian phát hiện và nhận diện biển báo 127a (Trang 121)
Hình 4.15 Thời gian phát hiện và nhận diện biển báo 123a - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 4.15 Thời gian phát hiện và nhận diện biển báo 123a (Trang 122)
Hình 4.17 Thời gian phát hiện và nhận diện biển báo 227 - Luận văn thạc sĩ Kỹ thuật điện tử: Hệ thống phát hiện và nhận diện biển báo giao thông trên Kit Friendly ARM
Hình 4.17 Thời gian phát hiện và nhận diện biển báo 227 (Trang 123)
w