Xây dựng phần mềm cho hệ thống cảnh báo chệch làn đường

Một phần của tài liệu Nghiên cứu và phát triển hệ thống cảnh báo chệnh làn đường trên xe điện renault twizy đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 55 - 72)

Sau khi tìm hiểu và nghiên cứu về hệ thống cảnh báo chệch làn đường, nhóm chúng em đã đưa ra sơ đồ khối thuật toán và 6 bước chính để thực thi thuật toán như sau:

 Bước 1: Tiếp nhận khung ảnh từ file video hoặc từ thiết bị camera và trạng thái của công tắc xi – nhan (nút nhấn).

 Bước 2: Xử lý ban đầu khung ảnh để tạo điều kiện cho việc áp dụng bộ lọc đường biên. Có rất nhiều cách xử lý, mỗi cách áp dụng một hoặc nhiều biện pháp xử lý ảnh khác nhau như chuyển đổi không gian màu, khử nhiễu, …

 Bước 3: Áp dụng bộ lọc lấy đường biên để phân tách những khu vực ảnh mà tại đó có sự thay đổi lớn về cường độ màu sắc, ánh sáng.

 Bước 4: Dựa trên kết quả thu được từ bước 3 ta tiếp tục dùng các giải thuật phát hiện làn đường để nhận diện khu vực có làn đường trên ảnh.

 Bước 5: Dùng thuật toán để tính toán tâm làn đường làn đường và tính độ lệch giữa tâm làn đường với tâm xe.

 Bước 6: Nếu không bật công tắc xi – nhan và xe lệch khỏi miền cho phép thì sẽ xuất ra tín hiệu cảnh báo. Nếu công tắc xi – nhan được bật thì đèn xi – nhan sẽ sáng và

Hình 5.3 Sơ đồ khối thuật toán hệ thống cảnh báo chệch làn đường

Từ sơ đồ khối thuật toán trên, nhóm chúng em sẽ tách thành hai công việc: thứ nhất nhóm sẽ tham khảo các source code trên github để lựa chọn giải thuật nhận diện làn đường, thứ hai nhóm sẽ xây dựng giải thuật cảnh báo chệch làn đường.

5.2.1.1. Lựa chọn giải thuật phát hiện làn đường cho đồ án

Sau quá trình tìm hiểu các phương pháp nhận diện làn đường có sẵn trên cộng đồng github để phục vụ bài toán của hệ thống cảnh báo chệch làn đường. Từ đó rút ra có hai phương pháp chính là nhận diện làn đường bằng xử lý ảnh và nhận diện làn đường có sử dụng deeplearning (sử dụng mạng nơ-ron CNN - Convolutional Neural Network).

Tuy nhiên, nhóm sẽ lựa chọn thuật toán sử dụng xử lý ảnh cho đồ án để phù hợp với cấu hình của Jetson Nano và thời gian thực hiện đồ án của nhóm.

Áp dụng giải thuật Hough Transform để nhận diện làn đường cơ bản

Hình 5.4 Sơ đồ khối giải thuật Hough Transform

 Bước 1. Tiếp nhận hình ảnh

Đầu tiên ta sẽ tiếp nhận hình ảnh từ video, camera. Và tiến hành ghép trục tọa độ cho hình ảnh bằng thư viện Matplotlib. Đây là bước quan trọng để xác định tọa độ của vùng quan tâmRegion of Interest.

Hình 5.5 Ghép trục cho hình ảnh

 Bước 2. Áp dụng giải thuật canny edge detection để lọc đường biên

Một thuật toán nhiều giai đoạn phát hiện một loạt các cạnh trong hình ảnh được phát triển bởi John F. Canny vào năm 1986, gồm các bước:

Đầu tiên là chuyển đổi hình ảnh đầu vào thành ảnh xám. Ta thực hiện chuyển đổi ảnh

gốc có không gian màu RGB sang ảnh xám (grayscale image) để tạo điều kiện cho bộ lọc biên canny làm việc hiệu quả nhất. Lý do là vì hàm canny dùng để lọc các đường biên sẽ làm việc trên sự biến đổi độ sáng. Đồng thời, ảnh xám chỉ chứa thông tin về cường độ sáng, mỗi pixel của ảnh xám (có giá trị từ 0 đến 255) có thể có 256 cấp độ xám. Giá trị của điểm ảnh bằng 0 đại diện cho điểm ảnh tối (đen), giá trị điểm ảnh lớn nhất đại diện cho điểm ảnh sáng (trắng).

Tiếp theo ta tiến hành giảm nhiễu. Các cạnh trong hình ảnh là các vùng thay đổi về

cường độ pixel. Việc phát hiện cạnh chủ yếu dựa trên tính toán gradient, đó là lý do tại sao kết quả rất nhạy cảm với nhiễu hình ảnh. Vì vậy, bước đầu tiên là áp dụng hiệu ứng mờ Gaussian trên hình ảnh để làm mịn các cạnh thô.

Cuối cùng làphát hiện cạnhedge detection. Hàm OpenCV để phát hiện cạnh có 3 đối số chính: hình ảnh đầu vào, ngưỡng trên và ngưỡng dưới gradient cường độ cạnh.Các giá trị ngưỡng quyết định những cạnh nào sẽ được giữ lại và những cạnh nào sẽ bị loại bỏ. Các cạnh có gradient cường độ lớn hơn ngưỡng trên được giữ lại trong khi các cạnh thấp hơn ngưỡng dưới bị từ chối. Các cạnh có giá trị ở giữa, được quyết định tùy thuộc vào kết nối

của chúng; nếu được liên kết với một pixel được xác nhận cạnh thì chúng được coi là một phần của cạnh, nếu không thì sẽ bị loại bỏ. Giá trị ngưỡng được xác định theo kinh nghiệm (Canny đề xuất tỷ lệ 2:1 hoặc 3:1 giữa giá trị tối đa và giá trị nhỏ nhất). Nếu ngưỡng trên quá cao, sẽ không tìm thấy cạnh nào trong khi nếu quá thấp thì số lượng cạnh được phát hiện sẽ rất nhiều.

Hình 5.6 Hình ảnh sau khi áp dụng giải thuật canny edge detection

 Bước 3. Xác định vùng quan tâm

Vùng quan tâm (ROI) là vùng ảnh ta sẽ áp dụng các xử lý và biến đổi trên đó và bỏ qua các vùng còn lại. Đôi khi không phải lúc nào ta cũng có thể xử lý trên toàn ảnh. Thử tưởng tượng với một ảnh có kích thước 1024x1024 thì ta đã có hơn một triệu điểm ảnh phải xử lý. Do đó, để tiết kiệm chi phí tính toán, ta thu hẹp vùng quan tâm từ toàn ảnh về một vùng diện tích nhỏ hơn chỉ là một phần của ảnh gốc.

Đối với bài toán nhận diện làn đường, vùng quan tâm là vùng trong khung ảnh có chứa hình ảnh của làn đường hoặc cụ thể hơn là vùng chứa các vạch kẻ đường nếu có sự phân chia làn đường, còn các cạnh tương ứng với bầu trời, cây cối, … không liên quan sẽ được loại bỏ. Ta chỉ thực hiện các bước xử lý ảnh trong vùng này để đạt được kết quả tốt nhất.

Hình 5.7 Hình ảnh sau khi xác định vùng quan tâm

 Bước 4. Áp dụng giải thuật Hough transform để nhận diện làn đường

Biến đổi Hough là một kỹ thuật trích xuất đặc trưng để xác định các hình dạng đơn giản như hình tròn, đường thẳng, v.v. trong một hình ảnh. Vấn đề phát hiện làn đường yêu cầu xác định các đường giao nhau qua tất cả các pixel cạnh gần đó từ các cạnh được phát hiện trong vùng quan tâm. Việc biến đổi các đường trong không gian Hough cho phép giải quyết các giao điểm của chúng một cách đơn giản và sau đó giao điểm có thể được chuyển đổi trở lại thành không gian hình ảnh để thỏa mục tiêu nhận diện làn đường.

Hình 5.8 Hình ảnh sau khi áp dụng giải thuật Hough transform

 Bước 5. Lấy trung bình và ngoại suy các đường Hough thành một làn đường

Các đường Hough được tạo ra trên cùng một làn đường. Vì vậy, các đường này được tính trung bình để đại diện cho một làn duy nhất. Các đường trung bình được ngoại suy để

bao phủ toàn bộ chiều dài của các làn đường. Quá trình tính trung bình được thực hiện dựa trên hệ số góc của nhiều đường, chúng sẽ được nhóm lại với nhau thuộc làn đường bên trái hoặc làn đường bên phải. Trong hình ảnh, tọa độ y được đảo ngược, (vì điểm gốc nằm ở góc trên cùng bên trái) do đó có giá trị cao hơn khi y thấp hơn trong hình ảnh. Theo quy ước này, làn đường bên trái có hệ số góc âm và làn đường bên phải có hệ số góc dương. Tất cả các đường có hệ số góc dương được nhóm lại với nhau và được tính trung bình để có làn bên phải và ngược lại đối với các đường có hệ số góc âm để lấy làn bên trái. Các làn đường cuối cùng được phát hiện có thể được nhìn thấy bên dưới:

Hình 5.9 Hình ảnh sau khi lấy trung bình và ngoại suy thành một làn đường

Hình 5.11 Một số hình ảnh bắt lane lỗi

Nhận xét: Giải thuật này áp dụng hầu hết cho các cảnh có đường làn đường thẳng, dễ tiếp cận, dễ hiểu, tuy nhiên tồn tại một số hạn chế là:

- Khi trung bình của đường chỉ xem xét hai làn đường trong các bước cuối cùng, trong khi có thể có nhiều làn đường. Ngoài ra, quy trình này giả định mỗi bên có một làn đường và sẽ không thành công nếu cả hai làn đường ở một bên (tức là hai làn bên trái hoặc hai làn bên phải).

- Khu vực quan tâm cần được sửa đổi tùy vào tính chất đường khác nhau để phát hiện làn đường.

- Tính năng phát hiện đường cong nằm ngoài phạm vi của phương pháp này. - Dễ bị nhiễu khi nhận diện lane nên dễ dẫn đến hiện tượng cảnh báo sai. Vì vậy nhóm chỉ tham khảo chứ không áp dụng phương pháp này vào đồ án.

Áp dụng giải thuật Sliding Window để nhận diện làn đường

Hình 5.12 Sơ đồ khối giải thuật Sliding Window

 Bước 1. Thực hiện phép chuyển đổi phối cảnh – Perspective Transformation

Khung ảnh của camera thu được phản ánh không chính xác hình dạng của làn đường trong thực tế. Từ góc độ của camera được gắn trên xe làn đường có hình dạng như một hình thang, làn đường có xu hướng thu hẹp về phía đường chân trời. Điều này làm cản trở việc tính toán độ cong của làn đường. Để khắc phục vấn đề này ta dùng phép biến đổi phối cảnh – Perspective Transform trong OpenCV.

Trước tiên ta cần xác định vùng quan tâm (region of interest) trên khung ảnh để loại bỏ các phần ảnh không cần xử lý. Sau đó chuyển đổi các tọa độ ở bốn góc của vùng quan tâm

đã chọn sang bốn tọa độ trên một khung ảnh mới nhằm biểu diễn vùng quan tâm lên khung ảnh mới để đạt được một góc nhìn toàn diện bề mặt làn đường (bird – eye – view).

Hình 5.13 Xác định vùng quan tâm

Hình 5.14 Vùng quan tâm sau khi qua Perspective Transformation

 Bước 2. Tiền xử lý ảnh – Processing Image

Sau khi áp dụng phép biến đổi phối cảnh sẽ thực hiện một số kỹ thuật xử lý để cô lập các đường phân làn trắng để tiến hành chuyển sang bước sau. Cụ thể, áp dụng tính năng lọc màu HLS (HLS color filter) để lọc ra làn đường màu trắng trong khung hình, sau đó chuyển nó thành thang độ xám (grayscale), tiếp đến là áp dụng ngưỡng (thresholding) kênh màu S để loại bỏ các phát hiện không cần thiết ngoài làn đường, và cuối cùng là áp dụng giải thuật canny edge detection để lọc đường biên (áp dụng hiệu ứng mờ bằng hàm cv2.GaussianBlur để làm mịn các cạnh thô và nhận diện cạnh được trích xuất bằng hàm cv2.Canny).

Hình 5.15 Các khung hình sau khi qua Processing Image

 Bước 3. Vẽ biểu đồ thể hiện giá trị đỉnh của pixel trắng – Plot Histogram

Sau khi thực hiện quá trình xử lý ảnh và chuyển đổi phối cảnh cho hình ảnh đường, chúng ta sẽ có hình ảnh nhị phân nơi các đường làn nổi bật, rõ ràng. Tuy nhiên, chúng ta vẫn cần phải quyết định rõ ràng pixel nào là một phần của các làn và pixel nào thuộc làn bên trái và pixel nào thuộc làn bên phải. Lúc này ta sẽ vẽ biểu đồ tần suất pixel cho nửa dưới của hình ảnh, biểu đồ là một phần thiết yếu để có được thông tin về vị trí chính xác của làn đường bên trái và bên phải bắt đầu. Khi phân tích biểu đồ, người ta có thể thấy có hai đỉnh khác biệt ở đó tất cả các điểm ảnh màu trắng được phát hiện, do đó ta xác định được nơi bắt đầu của làn đường bên trái và bên phải.

Hình 5.16 Ảnh nhị nhân của vùng quan tâm qua Perspective Transformation

.

Hình 5.17 Biểu đồ hiển thị giá trị đỉnh của pixel trắng của hình 5.16

 Bước 4. Áp dụng giải thuật Sliding Window để nhận diện làn đường

Giải thuật Sliding Window được sử dụng để phát hiện các làn đường và độ cong của chúng. Nó sử dụng thông tin về vị trí bắt đầu của làn đường bên trái và bên phải từ biểu đồ hiển thị giá trị đỉnh của pixel trắng trước đó và đặt một cửa sổ ngang vào giữa đỉnh bên trái và đỉnh bên phải của biểu đồ. Sau đó, đặt một cửa sổ ngang khác lên trên dựa trên vị trí của các pixel màu trắng từ cửa sổ ngang trước đó và đặt chính nó lên trên cùng của khung. Bằng

cách này, có thể nhận diện được làn đường. Sau đó, khớp đa thức bậc hai được thực hiện để có một đường cong vừa với không gian pixel.

Hình 5.18 Ảnh nhị phân sau khi áp dụng Sliding Window Search Method

 Bước 5. Áp dụng đa thức bậc hai để định dạng làn đường – Quadratic Polynomial Fit

Sau khi áp dụng phương pháp nhận diện làn đường bằng cửa sổ trượt, ta sẽ lấp đầy một khu vực xung quanh các làn đường được phát hiện đó bằng đường cong của một đa thức bậc hai phù hợp để sau đó vẽ một đường màu vàng chồng lên các làn đường khá chính xác. Đường này sẽ được sử dụng để đo bán kính cong (áp dụng trong xe tự hành), cần thiết trong việc dự đoán góc lái (áp dụng trong hệ thống giữ làn đường), đặc biệt là dùng để tính toán độ lệch của tâm xe với tâm mặt đường (áp dụng trong hệ thống cảnh báo chệch làn đường).

Hình 5.19 Ảnh nhị phân sau khi áp dụng Quadratic Polynomial Fit

Bước 6. Trực quan hóa làn đường –Draw Lane Lines

Chức năng này lấy các làn đường được phát hiện và tô màu xanh cho khu vực bên trong chúng.

Nhận xét:

 Giải thuật Sliding Window khắc phục được vấn đề nhận diện làn đường cong của giải thuật Hough Transform.

 Sử dụng các hàm và công thức phức tạp hơn nên có thể áp dụng đo bán kính cong của làn đường (áp dụng trong xe tự hành), áp dụng trong việc dự đoán góc lái (áp dụng trong hệ thống giữ làn đường), đặc biệt là dùng để tính toán độ lệch của tâm xe với tâm mặt đường (áp dụng trong hệ thống cảnh báo chệch làn đường).

Như vậy, phương pháp này rất phù hợp với đề tài nghiên cứu của nhóm và hướng phát triển của đề tài, nên nhóm quyết định sẽ áp dụng giải thuật này cho đề tài của nhóm.

5.2.1.2. Xây dựng giải thuật cảnh báo chệch làn đường

Hình 5.21 Sơ đồ khối giải thuật cảnh báo

Sau khi áp dụng giải thuật Sliding Window để nhận diện làn đường, ta sẽ tính toán độ lệch của tâm xe so với tâm làn đường.

Để tính toán độ lệch giữa tâm xe so với tâm của vạch làn đường, nhóm lấy tâm của xe là tâm của khung ảnh (camera được cố định và gắn ở điểm chính giữa ô tô). Mặt khác, lấy bề rộng làn đường (tiêu chuẩn đường cao tốc Việt Nam là 3,5m) trừ đi tổng chiều rộng của xe rồi chia 2, ta sẽ thu được kết quả là 1,1 mét – là lúc bánh xe sẽ chạm làn đường.

Như vậy, nhóm chúng em sẽ chia thành hai vùng cảnh báo để đảm bảo tính an toàn và hiệu quả của hệ thống. Nếu không có tác động của công tắc xi nhan báo có tín hiệu rẽ (không bật nút nhấn) đồng thời độ lệch giữa tâm xe so với tâm của vạch làn đường lớn hơn 0,7m và bé hơn 0,9m (nằm trong vùng cảnh báo thứ nhất) thì hệ thống sẽ xuất tín hiệu cảnh báo hình ảnh lên màn hình LCD (chuyển phần phát hiện làn đường từ màu xanh lá sang màu vàng và cảnh báo rung ghế tài xế (cho một đèn led màu vàng sáng); nếu độ lệch tiếp tục tăng lớn hơn hoặc bằng 0,9m (nằm trong vùng cảnh báo thứ hai) thì hệ thống sẽ xuất tín hiệu cảnh báo hình ảnh lên màn hình LCD (chuyển phần phát hiện làn đường từ màu vàng sang màu đỏ và xuất hiện dòng chữ “WARNING”) và cảnh báo còi, rung ghế tài xế, rung vô lăng (cho cả ba đèn led màu vàng sáng). Nếu có tác động từ công tắc xi nhan báo có tín hiệu rẽ (bật nút nhấn) thì đèn xi nhan sáng (led màu đỏ sáng) và xuất hiện dòng chữ “TURN- SIGNAL” ở màn hình LCD, đồng thời không xuất các tín hiệu cảnh báo (đèn led màu vàng không sáng và phần làn đường nhận diện sẽ giữ nguyên màu xanh lá).

Hình 5.23 Cảnh báo xe lệch trong miền thứ nhất (không nhấn xi – nhan)

Hình 5.24 Cảnh báo xe lệch trong miền thứ hai (không nhấn xi – nhan)

Một phần của tài liệu Nghiên cứu và phát triển hệ thống cảnh báo chệnh làn đường trên xe điện renault twizy đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 55 - 72)

Tải bản đầy đủ (PDF)

(84 trang)