張伊
摘要:介紹了HSV通道分離和OpenCV中的一些圖像處理函數(shù)是如何運(yùn)用于智能小車(chē)的戶(hù)外尋跡算法的實(shí)現(xiàn)。其中HSV通道分離作為圖像處理的前步驟,為生成穩(wěn)定的方向線(xiàn)奠定基礎(chǔ)。本文第一部分介紹HSV空間的含義及其在圖像處理中的作用,第二部分簡(jiǎn)要介紹尋跡所用的其它圖像處理方法,第三部分介紹HSV通道分離與圖像處理函數(shù)如何用于實(shí)現(xiàn)戶(hù)外巡線(xiàn)的算法。
【關(guān)鍵詞】HSV 通道分離 圖像處理 智能尋跡等
智能尋跡機(jī)器人通過(guò)計(jì)算機(jī)編程可實(shí)現(xiàn)無(wú)人為干預(yù)的情況下在特定環(huán)境中自主行駛,是智能機(jī)器人領(lǐng)域內(nèi)非常重要的且被廣泛研究的智能移動(dòng)裝置。對(duì)于智能尋跡的實(shí)現(xiàn)目前有兩種基本途徑,一種是基于硬件即利用各類(lèi)傳感器判斷方位和距離;而另一種則是基于軟件即通過(guò)圖像處理算法實(shí)現(xiàn)實(shí)時(shí)尋跡。在圖像處理過(guò)程中Canny邊緣檢測(cè)算法是普遍運(yùn)用的方法,但單一使用只對(duì)簡(jiǎn)單的室內(nèi)尋跡任務(wù)有覿對(duì)于戶(hù)外尋跡中復(fù)雜的環(huán)境信息和不清楚的邊緣信息,還需進(jìn)行HSV通道分離預(yù)處理。
1 HSV通道分離處理
1.1 HSV空間的概念
HSV (Hue, Saturarion, Value)是A.R.Smirh根據(jù)顏色的直觀特征創(chuàng)造的顏色空間,可用六角錐體模型( Hexcone Model)來(lái)表示,如圖1所示。HSV表示的參數(shù)分別為:色調(diào)(H),飽和度(S),亮度(V)。
色調(diào)(H)是人們對(duì)色彩的感知中最顯著、最直觀的一方面,用角度度量,對(duì)應(yīng)上圖中的圓心角,取值范圍為oo至3600,紅綠藍(lán)分別相隔1200,互補(bǔ)色分別相差1800。飽和度(S)表示色彩的純度,取值范圍是0 0至1.0,對(duì)應(yīng)上圖的半徑值。亮度(V)表示色彩的明暗程度,取值范圍為0.0(黑色)至1.0(白色),對(duì)應(yīng)圖1中的縱軸。
1.2 RGB空間轉(zhuǎn)換為HSV空間
傳統(tǒng)的RGB色彩模型可分辨的色差是非線(xiàn)性的,相比而言HSV通道更加直觀和接近人的視覺(jué)經(jīng)驗(yàn),因此在圖像檢索中經(jīng)常將圖像從RGB空間轉(zhuǎn)換到HSV空間,變換的公式如下:
OpenCV F split函數(shù)可用于將圖像分解成H,S和V三通道,并可以顯示每個(gè)像素的H,S和V值。在圖像二值化的過(guò)程中,通過(guò)對(duì)圖像的HSV各通道設(shè)置閾值(如將飽和度S值在20至255之間的像素點(diǎn)顯示為白色,即在二值化中處理為0)來(lái)過(guò)濾掉圖中不重要的部分,而只留下有用的部分。在巡線(xiàn)任務(wù)中,HSV濾波器要濾掉中央線(xiàn)以外的線(xiàn)條。
2 在尋跡任務(wù)中實(shí)用性較高的圖像處理方法
2.1 圖像膨脹( Dilate)
膨脹是OpenCV提供的一種基本的形態(tài)學(xué)操作,通常用于消除二值化后圖像的椒鹽噪聲。圖像中的邊緣向外部擴(kuò)張以填補(bǔ)圖像中的空洞,從而消除纖細(xì)且不重要的噪聲。在OpenCV中Dilate函數(shù)可實(shí)現(xiàn)此操作。
2.2 Canny邊緣檢測(cè)算子
Canny邊緣檢測(cè)算子是由John F Canny于1986年首次在論文《A ComputationalApproach to Edge Detection》中提出的一個(gè)多級(jí)邊緣檢測(cè)算法。這種算法可以實(shí)現(xiàn)從不同的視覺(jué)對(duì)象中提取有用的結(jié)構(gòu)信息以減少數(shù)據(jù)處理量,目前己廣泛應(yīng)用于各種計(jì)算機(jī)視覺(jué)系統(tǒng)的開(kāi)發(fā)。邊緣檢測(cè)的一般標(biāo)準(zhǔn)包括:
(1)好的檢測(cè)一一盡可能多地標(biāo)識(shí)出實(shí)際的邊緣:
(2)好的定位一一標(biāo)識(shí)出的邊緣應(yīng)精確定位在實(shí)際邊緣的中心;
(3)最小響應(yīng)一一圖像中的邊緣只能標(biāo)記一次,且不因圖像噪聲而產(chǎn)生假邊緣。
在目前常用的邊緣檢測(cè)方法中,Canny邊緣檢測(cè)算法是具有嚴(yán)格定義的,可以提供良好可靠檢測(cè)的方法之一。由于它具有滿(mǎn)足邊緣檢測(cè)的三個(gè)標(biāo)準(zhǔn)和實(shí)現(xiàn)過(guò)程簡(jiǎn)單的優(yōu)勢(shì),成為邊緣檢測(cè)最流行的算法之一。
Canny邊緣檢測(cè)算法可分為以下五個(gè)步驟:
(1)使用高斯濾波器以平滑圖像,濾除噪聲;
(2)計(jì)算圖像中每個(gè)像素點(diǎn)的梯度強(qiáng)度和方向;
(3)應(yīng)用非極大值(Non-MaximumSuppression)抑制,以消除邊緣檢測(cè)帶來(lái)的雜散響應(yīng);
(4)應(yīng)用雙閾值(Double-Threshold)檢測(cè)來(lái)確定真實(shí)和潛在的邊緣;
(5)通過(guò)抑制孤立的弱邊緣最終完成邊緣檢測(cè)。
2.3 霍夫直線(xiàn)檢測(cè)( HoughLineDetection)
霍夫變換(HoughTransform)于1962年由PaulHough首次提出,是圖像處理中一種特征提取技術(shù),通過(guò)投票算法檢測(cè)具有特定形狀的物體,其中經(jīng)典霍夫變換用來(lái)檢測(cè)圖像中的直線(xiàn)。
Hough直線(xiàn)檢測(cè)的基本原理在于利用點(diǎn)與線(xiàn)的對(duì)偶性。若選取笛卡爾坐標(biāo)系為原始圖像空間,極坐標(biāo)系p-θ為參數(shù)空間,則圖像空間中的點(diǎn)(xo,Yo)對(duì)應(yīng)參數(shù)空間中的一條正弦曲線(xiàn)p=xo cosθ+Yo sinθ。若圖窗中的像素構(gòu)成一條直線(xiàn),那么這些像素坐標(biāo)值(xi,yi)在參數(shù)空間對(duì)應(yīng)的曲線(xiàn)一定相交于一個(gè)點(diǎn),所以只需要將圖像中的所有像素點(diǎn)(坐標(biāo)值)變換成參數(shù)空間的曲線(xiàn),并在參數(shù)空間檢測(cè)曲線(xiàn)交點(diǎn)就可以確定直線(xiàn)了。在此參數(shù)空間的ρ和θ坐標(biāo)都被離散化使交點(diǎn)坐標(biāo)為有限個(gè),檢測(cè)落在每個(gè)網(wǎng)格單元上的焦點(diǎn)個(gè)數(shù)是否超過(guò)閾值來(lái)確定該單元格對(duì)應(yīng)的坐標(biāo)(ρ0,θ0)能否對(duì)應(yīng)圖像空間中的一條直線(xiàn)。如圖2所示。
在OpenCV下標(biāo)準(zhǔn)霍夫變換可通過(guò)Houghlines函數(shù)實(shí)現(xiàn)。
3 智能小車(chē)戶(hù)外尋跡算法的實(shí)現(xiàn)
即將被檢測(cè)道路的原始圖像如圖3所示,是一種很普通的由左右兩種材料組成的戶(hù)外路面,小車(chē)應(yīng)從左圖中黑箭頭處出發(fā)沿虛線(xiàn)箭頭所指軌跡行走,研究的目標(biāo)是利用OpenCV下的編程從而識(shí)別出兩種地面材料的分界線(xiàn)以完成尋跡任務(wù),使智能小車(chē)沿分界線(xiàn)行走。完整的道路包括部分直線(xiàn)和四處轉(zhuǎn)彎,如圖4所示。在這種戶(hù)外環(huán)境中困難的是兩種路面沒(méi)有很清晰的顏色差別且由于地面的凹凸不平而形成很多陰影,這導(dǎo)致若直接在二值化的圖像上使用Canny算法會(huì)產(chǎn)生很多噪聲,以至于無(wú)法形成穩(wěn)定的霍夫直線(xiàn)確定車(chē)的行走方向。
在本項(xiàng)目中智能小車(chē)用Python編程實(shí)現(xiàn)圖像處理部分,其總流程如圖5所示。
3.1 步驟一:利用HSV通道過(guò)濾圖像中的干擾
首先分別檢測(cè)圖窗中左側(cè)道路和右側(cè)道路的HSV值,結(jié)果如圖6和圖7所示。左側(cè)道路和右側(cè)道路有不同的H值和S值,但由于它們各自的S值較為穩(wěn)定,因此我們使用S通道來(lái)區(qū)分道路的左右側(cè)。
通過(guò)調(diào)整S通道的閾值,我們可以得到不同的濾波結(jié)果,如圖8.圖11所示。
圖11呈現(xiàn)的處理效果已經(jīng)大體將左右路面區(qū)分為黑白區(qū)域,然而由于磚塊交界處的溝痕顏色更深,在處理后的圖像中呈白色,接下來(lái)將再通過(guò)HSV閾值去掉這些溝痕以及地面上深色的水漬。由于溝痕顏色明顯暗于灰色路面,使用亮度( Value)值來(lái)過(guò)濾溝痕,對(duì)于閩值的嘗試結(jié)果如圖12-圖14所示。
圖12-圖14中的濾波效果已經(jīng)達(dá)到去除溝痕的目的,用同種閾值也可以濾掉地面的水漬,結(jié)果展示如圖15。
上述過(guò)程已將圖窗基本清晰地分為左右兩部分,突出了在巡線(xiàn)任務(wù)中唯一需要關(guān)注的左右分界線(xiàn)的形狀。用HSV通道濾波來(lái)實(shí)現(xiàn)圖像的二值化以及噪聲的去除大大增加了后續(xù)過(guò)程的準(zhǔn)確度和穩(wěn)定性,對(duì)霍夫線(xiàn)的形成有至關(guān)重要的作用。
3.2 步驟二:利用膨脹( Dilation)算法去除椒鹽噪聲
雖然圖像已經(jīng)基本實(shí)現(xiàn)道路的左右區(qū)分,但為了更加突出分界線(xiàn)應(yīng)使左側(cè)道路全部變成白色。膨脹算法是OpenCV的庫(kù)函數(shù),在此用于將左半部離散的白色像素點(diǎn)擴(kuò)大并互相粘連,使左半部圖窗全部被白色填滿(mǎn),效果如圖16所示。至此圖窗的左右兩部分已經(jīng)清晰分割,這為后續(xù)方向線(xiàn)的形成提供了充足的準(zhǔn)備。
3.3 步驟三:利用Canny邊緣檢測(cè)算子提取分界線(xiàn)
在得到以上的結(jié)果后,Canny邊緣檢測(cè)方程用于描出兩種顏色區(qū)域的分界線(xiàn),此方程將返回一個(gè)僅邊界處位置為l其余位置為0的二值矩陣,即僅將邊界線(xiàn)顯示為白色。如圖17所示,在右側(cè)處理完的圖像中,僅中間的分界線(xiàn)保留下來(lái)。
3.4 步驟四:高斯模糊( Gaussian Blur)的使用
由于程序要求至少120個(gè)連續(xù)像素點(diǎn)點(diǎn)才會(huì)生成霍夫直線(xiàn),因此需要預(yù)先使用高斯模糊方程以壓縮分界線(xiàn),消除分界線(xiàn)上的不連續(xù)點(diǎn),從而得到更平滑的曲線(xiàn)。高斯模糊的結(jié)果如圖18所示。
3.5 步驟五:利用霍夫直線(xiàn)檢測(cè)來(lái)生成方向線(xiàn)
這條更平滑的曲線(xiàn)可被霍夫直線(xiàn)檢測(cè)方程所辨認(rèn)。代碼要求檢測(cè)到120個(gè)連續(xù)像素點(diǎn)生成一條霍夫直線(xiàn),此直線(xiàn)的坐標(biāo)將會(huì)以極坐標(biāo)表示,即方程返回的直線(xiàn)的坐標(biāo)參數(shù)為r和θ,其中r表示原點(diǎn)到該直線(xiàn)的垂線(xiàn)段長(zhǎng)度,θ表示垂線(xiàn)段與x軸的夾角,如圖19所示,最后,我們可以利用霍夫變換方程計(jì)算所檢測(cè)邊緣直線(xiàn)的斜率k和截距長(zhǎng)度L,并將其用于后續(xù)的PID控制環(huán)節(jié)決定小車(chē)的行進(jìn)方向。添加過(guò)霍夫直線(xiàn)的效果圖如圖20所示。
4 結(jié)束語(yǔ)
本文介紹的小車(chē)尋跡算法設(shè)計(jì)過(guò)程是基于對(duì)攝像頭畫(huà)面的圖像處理以實(shí)現(xiàn)識(shí)別圖窗中的分界線(xiàn),并生成方向線(xiàn)的過(guò)程。先利用HSV色彩通道對(duì)圖像濾波,再利用OpenC,V的圖像膨脹、Canny邊緣檢測(cè)和高斯模糊等庫(kù)函數(shù)提取圖像中的分界線(xiàn),最后用霍夫直線(xiàn)檢測(cè)函數(shù)生成方向線(xiàn)并計(jì)算斜率和截距,從而實(shí)現(xiàn)了通過(guò)圖像處理準(zhǔn)確、快速地判斷行走方向。該過(guò)程編程簡(jiǎn)單、易于實(shí)現(xiàn),對(duì)運(yùn)用圖像處理解決尋跡問(wèn)題有借鑒價(jià)值。然而對(duì)于各個(gè)庫(kù)函數(shù)的閾值設(shè)置目前只停留于多次嘗試數(shù)據(jù),對(duì)于不同的環(huán)境需要調(diào)整。
參考文獻(xiàn)
[1]朱虹等編著,數(shù)字圖像處理基礎(chǔ)[M].科學(xué)出版社,2005.
[2]陰法明.基于OpenCV的圖像處理[J].科技信息,2009 (32).
[3]徐歡,李振璧,姜媛媛,黃劍波,基于OpenCV和改進(jìn)Canny算子的路面裂縫檢測(cè)[J].計(jì)算機(jī)工程與設(shè)計(jì),2014, 35 (12): 4254-4258.
[4]楊?yuàn)W博,盛家川,李玉芝,劉賞,趙坤元,基于HSV空間的顏色特征提取[J].電腦知識(shí)與技術(shù),2017,13 (18):193-19 5,
[5]段汝嬌,趙偉,黃松嶺,陳建業(yè),一種基于改進(jìn)Hough變換的直線(xiàn)快速檢測(cè)算法[J],儀器儀表學(xué)報(bào),2010,31(12): 2774-2780.
[6] Fuchsberger, Hermann. “Method ofcorrecting color saturation inelectronic image processing.”U.S. Patent No.4, 831, 434. 16 May 1989.
[7]Topal,C.,&Akinlar;,C.(2 012). Edgedrawing:a combined real-time edgeand segment detector. Journal ofVisual Communication and Immage Representation, 2012, 23 (06): 862-87 2.
[8] Kaehler,A.,&Brad; ski,G.(2016).Learning OpenCV3: computerversioninC++withtheOpenCV library.” O' ReillyMedia.Inc.”.2016.
[9]快刀斬亂竹.HSV空間各通道分離實(shí)驗(yàn)
直觀了解各通道數(shù)值的意義[EB/OL].https:,/blog.csdn.net/bamboocan/article/details/70627137,2017-04-24/2018-08-01.