国产成人无码精品一区在线观看,国产白袜脚足J棉袜在线观看,国产69久久精品成人看,久久夜色精品国产噜噜噜亚洲AV

深圳市凱茉銳電子科技有限公司深圳市凱茉銳電子科技有限公司

新聞中心

News

快速車道標(biāo)記檢測(cè)算法【附數(shù)據(jù)集與注釋代碼】

來源:深圳市凱茉銳電子科技有限公司2025-06-23

在自動(dòng)駕駛和智能交通系統(tǒng)中,車道標(biāo)記識(shí)別是關(guān)鍵的計(jì)算機(jī)視覺任務(wù)之一。本文將介紹一個(gè)基于Halcon的車道標(biāo)記檢測(cè)算法,該算法通過圖像處理技術(shù)快速識(shí)別車道標(biāo)記。

1. 系統(tǒng)初始化和窗口設(shè)置

在算法的開始,我們首先需要進(jìn)行一些系統(tǒng)的初始化操作并設(shè)置顯示窗口。這些步驟為后續(xù)的圖像處理和結(jié)果展示奠定了基礎(chǔ)。

dev_update_window ('off')  
* 關(guān)閉窗口更新
dev_close_window ()  
* 關(guān)閉窗口
dev_open_window (0, 0, 768, 575, 'black', WindowID)  
* 打開一個(gè)新的黑色背景窗口,大小為768x575
MinSize := 30  
* 最小區(qū)域大小設(shè)定為30
get_system ('init_new_image', Information)  
* 獲取系統(tǒng)參數(shù),初始化新圖像信息
set_system ('init_new_image', 'false')  
* 設(shè)置系統(tǒng)參數(shù),禁止初始化新圖像

在上述代碼中,我們通過dev_open_window打開了一個(gè)新的窗口,用于展示后續(xù)的圖像處理結(jié)果。窗口背景為黑色,尺寸為768x575。然后,我們?cè)O(shè)置了一個(gè)最小的區(qū)域大小MinSize,并獲取了系統(tǒng)的圖像初始化參數(shù)。

2. 創(chuàng)建網(wǎng)格區(qū)域并裁剪圖像

為了有效識(shí)別車道標(biāo)記,我們首先需要?jiǎng)?chuàng)建一個(gè)網(wǎng)格區(qū)域,這樣可以在大范圍內(nèi)搜索車道標(biāo)記。

gen_grid_region (Grid, MinSize, MinSize, 'lines', 512, 512)  
* 生成一個(gè)512x512的網(wǎng)格區(qū)域,用于車道檢測(cè)

clip_region (Grid, StreetGrid, 130, 10, 450, 502)  
* 從生成的網(wǎng)格區(qū)域中裁剪出指定區(qū)域(130, 10, 450, 502),得到街道網(wǎng)格區(qū)域

在這一步中,gen_grid_region函數(shù)生成了一個(gè)512x512的網(wǎng)格區(qū)域,網(wǎng)格間距為MinSize。然后,我們用clip_region函數(shù)從網(wǎng)格中裁剪出了一個(gè)感興趣的區(qū)域(街道網(wǎng)格區(qū)域),為后續(xù)處理提供了一個(gè)明確的目標(biāo)區(qū)域。

3. 車道標(biāo)記檢測(cè)算法核心步驟

接下來,我們進(jìn)入車道檢測(cè)的核心部分。通過Sobel算子提取圖像的梯度信息,并結(jié)合閾值化技術(shù)來提取車道標(biāo)記。

for i := 0 to 28 by 1  
* 對(duì)于每張圖像進(jìn)行循環(huán),遍歷場(chǎng)景0到28

    read_image (ActualImage, 'autobahn/scene_' + (i$'02'))  
    * 讀取場(chǎng)景圖像(場(chǎng)景編號(hào)為i)

    reduce_domain (ActualImage, StreetGrid, Mask)  
    * 使用街道網(wǎng)格區(qū)域?qū)D像進(jìn)行約束,得到圖像的感興趣區(qū)域(Mask)

    sobel_amp (Mask, Gradient, 'sum_abs', 3)  
    * 對(duì)感興趣區(qū)域應(yīng)用Sobel算子,計(jì)算梯度幅值,使用絕對(duì)值和方法,窗口大小為3

    threshold (Gradient, Points, 20, 255)  
    * 對(duì)梯度幅值進(jìn)行閾值化處理,保留值在20到255之間的區(qū)域,得到車道邊緣點(diǎn)

    dilation_rectangle1 (Points, RegionDilation, MinSize, MinSize)  
    * 對(duì)車道邊緣點(diǎn)進(jìn)行矩形膨脹,膨脹的大小為MinSize x MinSize

    reduce_domain (ActualImage, RegionDilation, StripGray)  
    * 使用膨脹后的區(qū)域?qū)D像進(jìn)行約束,得到一個(gè)新的圖像區(qū)域(StripGray)

    threshold (StripGray, Strip, 190, 255)  
    * 對(duì)處理后的圖像區(qū)域應(yīng)用閾值化操作,保留值在190到255之間的部分

    fill_up (Strip, RegionFillUp)  
    * 對(duì)二值圖像進(jìn)行填充操作,填充車道區(qū)域

    dev_display (ActualImage)  
    * 顯示當(dāng)前圖像

    dev_display (RegionFillUp)  
    * 顯示車道填充區(qū)域

endfor  

這部分代碼完成了車道標(biāo)記檢測(cè)的主要任務(wù)。具體步驟如下:

 

讀取圖像并約束區(qū)域:通過read_image讀取不同的圖像數(shù)據(jù),然后利用reduce_domain函數(shù)將處理范圍限制在感興趣區(qū)域StreetGrid內(nèi)。

 

 

梯度計(jì)算和閾值化:使用sobel_amp計(jì)算圖像的梯度幅值,之后通過threshold進(jìn)行閾值化,提取出車道邊緣的像素點(diǎn)。

 

 

膨脹操作:通過dilation_rectangle1對(duì)提取的車道邊緣點(diǎn)進(jìn)行膨脹,擴(kuò)大檢測(cè)區(qū)域,確保車道標(biāo)記的完整性。

 

 

再次閾值化和填充:對(duì)膨脹后的圖像進(jìn)行再次閾值化,并用fill_up函數(shù)填充車道區(qū)域,確保標(biāo)記完整。

 

4. 顯示結(jié)果與更新窗口

最后,通過dev_display函數(shù)顯示處理后的圖像和車道區(qū)域。

dev_set_line_width (1)  
* 將線寬設(shè)置回1

dev_update_window ('on')  
* 恢復(fù)窗口更新

set_system ('init_new_image', Information)  
* 恢復(fù)圖像初始化的系統(tǒng)參數(shù)

這些代碼段完成了顯示和更新圖像窗口的操作,確保用戶能夠?qū)崟r(shí)看到車道檢測(cè)的結(jié)果。

5. 算法效果圖

以下是該車道標(biāo)記檢測(cè)算法在處理過程中的效果圖示例:

 

原始圖像:

640.webp.png

 

檢測(cè)到的車道標(biāo)記:

640.webp (1).png

 

通過這些效果圖,可以看到算法如何在復(fù)雜的道路環(huán)境中成功提取車道標(biāo)記。


相關(guān)資訊

專業(yè)工程師

24小時(shí)在線服務(wù)提交需求快速為您定制解決方案

13798538021