Đặt vấn đề Nhận diện làn đường là một trong nhiều mục tiêu có tầm quan trọng nhất định trong xử lý hình ảnh, thị giác máy tính; được ứng dụng trong công nghiệp như chỉ dẫn phương tiện; hay trong công nghệ hỗ trợ người lái xe nâng cao (ADAS). Nhiều thuật toán khác nhau đã được áp dụng trong nhận diện làn đường, tuy nhiên thuật toán Hough Transform được áp dụng rộng rãi nhờ tính ồn định các van đề như đường thăng không liền mạch, xuất hiện nhiều nét đứt gãy hay ảnh hưởng của nhiễu từ môi trường xung quanh. Tuy vậy, thuật toán này có độ phức tạp tính toán cao do phải sử dụng nhiều phép tính lượng giác, yêu cầu tài nguyên bộ nhớ lớn và vì thế mà trong thực tế, tốc độ xử lý của thuật toán sẽ bị chậm đi. Do đó, đây vẫn là một thách thức khi hiện thực hệ thống phát hiện làn đường cho xe tự hành dựa trên thuật toán Hough Transform.
Một số nghiên cứu liên quan Theo như các nghiên cứu trước đó, nghiên cứu [2] [3] đã xây dựng một kiến trúc phần cứng cho giải thuật Hough Transform song song và sử dụng giải pháp bảng tra cứu LUT, điều này giúp giảm thời gian tính toán các phép toán lượng giác phức tạp mà không làm thay đổi độ chính xác, ngoài ra nghiên cứu [2] còn đề ra các giải pháp tính toán song song và bầu chọn song song nhằm làm tăng tốc độ xử lý. Dựa trên nghiên cứu [2], nghiên cứu [3] tiếp tục làm tăng tốc độ xử lý và giảm yêu cầu bộ nhớ nhờ vào việc bầu chọn các vị trí có số phiếu bầu lớn nhất ở cục bộ - local maximum. Đối với nghiên cứu [4] các tác giả đã xây dựng một thuật toán mới cho không gian tham số Hough — Hough Parameter Space (HPS), phương pháp mới này đã làm giảm đáng kể yêu cầu về bộ nhớ so với việc thực hiện giải thuật Hough Transform (HT) tiêu chuẩn. Tương tự như nghiên cứu [4], ở nghiên cứu [5], các tác giả đã dùng phương pháp sử dụng các đặc điểm cu thé của làn đường để sửa đổi thuật toán HT tiêu chuẩn, đồng thời phân tách thuật toán mới thành một tập hợp các khối several hardware (HW) va software (SW).
Hiệu suất hoạt động được tối ưu hóa rất nhiều bằng cách giảm trực tiếp của phép tính HT và bộ nhớ tiêu thụ. Các tác giả ở nghiên cứu [6] đã xây dựng hệ thống cảnh báo chệch làn đường hoạt động chính xác trong các điều kiện ánh sáng khác nhau dựa trên tầm nhìn một mắt trong thời gian thực. Các thuật toán được tác giả sử dụng trong hệ thống chủ yếu là phương pháp ngưỡng Otsu và thuật toán Hough Transform đề giải quyết vấn dé ánh sáng, trích xuất ranh giới làn đường và giám sát vị trí của xe đối với làn đường và cung cấp cảnh báo nếu phương tiện sắp ra khỏi làn. Ở nghiên cứu [7], các tác giả đã xây dựng thuật toán Hough dựa trên gradient — một cải tiến của biến đổi Hough ban dau, dé phát hiện đường thang.
Nhờ vậy, lượng tính toán được giảm đáng ké mà không làm thay đổi độ chính xác. Hệ thống được các tác giả xây dựng bằng cách sử dụng Xilinx Virtex-7 FPGA với các lát cắt DSP được nhúng và khối RAM. Các thuật toán Gaussian blur, Gray Scale, DLD-threshold và Hough Transform được các tác giả sử dung chủ yếu ở nghiên cứu [8] để phát hiện đường thing. Phương pháp này có thể hoạt động hiệu quả, chính xác và thu được kết quả tốt cả trong trường hợp thông tin đường đơn giản cũng như phức tạp.
Tuy nhiên, nghiên cứu này không xem xét tác động ánh sáng mạnh và vạch làn không rõ ràng do môi trường gây ra. Hướng nghiên cứu của đề tài Dựa trên ý tưởng phát triển hệ thống phát hiện làn đường đã xuất hiện ở những công trình nghiên cứu trước đó, nhóm đề xuất một kiến trúc phần cứng đề phát hiện làn đường dựa trên thuật toán Hough Transform được thiết kế và mô phỏng trên Matlab Simulink. Đồng thời sau khi đã kiểm tra chức năng trên phần mềm nhóm tiến hành ứng dụng hệ thống trên board FPGA thông qua chuẩn giao tiếp PCle dé thực hiện phát hiện làn đường cho video theo thời gian thực. Mục tiêu của đề tài Ở khóa luận này, nhóm sẽ xây dựng một kiến trúc Hough Transform dựa trên bài báo [4] [5] để xây dựng một hệ thống day đủ các giải thuật xử lý ảnh từ video gốc ban đầu, đồng thời cải tiến được tốc độ thực thi, độ phân giải xử lý của frame ảnh.
Từ đó thiết kế được một hệ thống phát hiện làn đường và mô phỏng trên phần mềm Matlab Simulink kết hợp với thư viện Xilinx System Generator dé kiểm tra chức năng hoạt động của hệ thống. Sau khi đã kiểm tra chức năng hoạt động sẽ tiến hành tạo ra HDL Netlist sang phần mềm Vivado và thực hiện đóng gói Block Design để có thể thực hiện trên chuẩn giao tiếp PCle. Từ đó có thé đạt được tốc độ truyền dữ liệu tối đa để xử lý thời gian thực. Mục tiêu về tốc độ, tan số của kiến trúc nhóm dé xuất so với các nghiên cứu trước đó được thê hiện ở Bảng 1.1: Mục tiêu kiến trúc đề xuất của nhóm Kiến trúc [2] [3] [4] I5] của nhóm Độ phân giải 1024x768 | 640x480 | 640x480 | 1024x1024 | 1024x1024 Tần số (MHz) 200 50 200 145 150 Thời | (ms⁄img) | 5.
- Bố cục báo cáo Báo cáo này chia làm 05 chương chính. Chương đầu tiên đặt van dé về đề tài, hướng nghiên cứu của để tài và mục tiêu của đề tài. Các chương tiếp theo được trình bày như sau: Chương 2. CƠ SỞ LÝ THUYET Chương 2 sẽ trình bày những công cụ phục vụ trong việc thiết kế hệ thống và lý thuyết của các giải thuật được sử dụng trong hệ thống.
THIẾT KE HE THONG ĐÈ XUẤT Chương 3 sẽ trình bày về tổng quan hệ thống phát hiện làn đường được thực hiện trên nền tảng chính là Matlab Simulink kết hợp cùng Xilinx System Generator cũng như tổng quan thiết kế Block Design của hệ thống và các IP của Xilinx dùng trong thiết kế trên phần mềm Vivado Design Suite. KET QUA ĐÁNH GIÁ HE THONG THIẾT KE Chương 4 trình bày phương pháp đánh giá của thiết kế, kiểm tra kết quả mô phỏng của hệ thống dựa trên công cụ Co — Simulation được tích hợp trong Xilinx System Generator và kết quả tổng hợp, thực thi của thiết kế trên Vivado cũng như trên Board FPGA Virtex-7 VC707. Bên cạnh đó, kết quả thực hiện cũng được so sánh với các nghiên cứu liên quan. KET LUẬN VÀ HƯỚNG PHÁT TRIÊN Chương 5 sẽ tóm tắt toàn bộ công việc và kết quả đạt được.
Đồng thời đề ra phương hướng phát triển cho đề tài trong tương lai cũng được trình bày ở chương này. Tổng quan Trong dé tài này, nhóm dé xuất một kiến trúc phát hiện làn đường dựa trên thuật toán Hough Transform — một thuật toán rất hữu ích, đặc biệt trong quá trình xử lý ảnh. Mục đích chính của thuật toán này chính là dựa trên quá trình “bầu chọn” mà sẽ trích xuất lại những đường thăng hoàn chỉnh từ những điểm đen phát hiện được sau thuật toán Gray Scale và Sobel Edge Detection. Quá trình “bầu chọn” được phát triển từ thuật toán HT và sau đó được thực hiện trong một không gian biến để tìm ra “phiếu bầu” được bầu chọn nhiều nhất, hay nói cách khác, những điểm ảnh có cặp giá trị góc và khoảng cách tương ứng với “phiếu bầu” sẽ cùng nằm trên một đường thẳng.
Phần mềm Matlab Simulink Matlab là từ viết tắt của Matrix Laboratory, một ngôn ngữ lập trình cấp cao dạng thông dịch. Nó là môi trường tính toán số được thiết kế bởi công ty MathWorks. Matlab cho phép thực hiện các phép tính toán số, ma trận, vẽ dé thi hàm số hay biểu diễn thông tin (đưới dạng 2D hay 3D), thực hiện các thuật toán và giao tiếp với các chương trình của các ngôn ngữ khác một cách dễ dàng. Simulink là một công cụ mô phỏng được thiết kế tích hợp sẵn trong Matlab, nó giúp ta có thể dễ dang xây dựng các thuật toán xử lý tín hiệu một cách dé dàng thông qua các khối (block) chức năng được thiết kế sẵn.
Ngoài ra nó còn tạo môi trường thuận lợi cho việc xử lý các bài toán DSP trên phần mềm, sau đó chuyền sang phần cứng với sự hỗ trợ của công cụ Xilinx được tích hợp cùng.1 mô tả bộ thư viện Matlab Simulink. hạn ren IH El S&S & ‘Lookup Tables H ie Tư (ven ors & subsystems 'Model-\Wide Utlities Discrete Logic and Bit’ Sperators Lookup Tablet operations Math Spel atrbates Sonal Routing + 2 =| & Sources ‘User-Defined Functions Model-wide Mode! Ports & ‘Signal ‘Additional Math & Discrete Utilities Verification Subsystems Attributes Aerospace Bctet Ao Syste Todlox Aomated Diving Sytem Toolbox bài. + Communications System Toobox as 2 Camputer ison System Toobox Communicators System Toobox HOL Supp = feng oe Hình 2.1: Bộ thư viện Matlab Simulink 2. Công cụ Xilinx System Generator Xilinx System Generator (XSG) [9] là công cụ phát triển hệ thống cho FPGA, cho phép thiết kế hệ thống ở dạng các khối và hỗ trợ mô phỏng, debug, tạo code để nạp vào FPGA hoặc kết hợp vào những ứng dụng lớn hơn.
XSG được xây dựng như một Blockset của Simulink trong Matlab. Do đó, XSG thừa hưởng tất cả các ưu điểm của Simulink trong việc xây dựng hệ thống và mô phỏng. XSG còn sử dụng thư viện Logic Core đề xây dựng các block của mình. Trong thư viện của XSG có tat cả các khối thực hiện các chức năng từ cơ bản như cộng, trừ, nhân, các khối logical,.
cho đến những thiết kế phức tạp như các DSP, bộ lọc số, nhân chập, UART. , các bộ nhớ tích hợp: Single Port Ram, Dual Port Ram, FIFOs, các thanh ghi,. XSG còn cho phép người thiết kế tạo ra các khối để thực hiện những nhiệm vụ riêng biệt bằng khối Black Box, tại đây người thiết kế sẽ tạo ra các entity và cài mã của nó vào Black Box để tạo ra các thiết kế riêng của mình. Những thiết kế của XSG có thé được dich ra nhiều kiểu dữ liệu, có thé thành file *.bir để nạp ngay vào phan cứng thông qua chức năng Hardware Co — Simulation được tính hợp, hoặc thành các thiết kế để ghép vào một hệ thống lớn hơn.
Với việc kết hợp với MathWorks để xây dựng XSG, Xilinx đã làm cho việc thiết kế hệ thống trên FPGA trở nên thuận tiện và đơn giản hơn rất nhiều đối với người làm kỹ thuật. Trong khóa luận này, nhóm đã sử dụng XSG dé xây dụng toàn bộ phan thuật toán xử lý ảnh phát hiện làn đường.