基于圖像處理的車(chē)道線識(shí)別算法研究_第1頁(yè)
基于圖像處理的車(chē)道線識(shí)別算法研究_第2頁(yè)
基于圖像處理的車(chē)道線識(shí)別算法研究_第3頁(yè)
基于圖像處理的車(chē)道線識(shí)別算法研究_第4頁(yè)
基于圖像處理的車(chē)道線識(shí)別算法研究_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于圖像處理的車(chē)道線識(shí)別算法研究摘要為了提高車(chē)道線識(shí)別算法的實(shí)時(shí)性和準(zhǔn)確性,提出了一種基于改良Hough變換的車(chē)道線檢測(cè)方法。在車(chē)道線的預(yù)處理階段,首先確定圖像中的感興趣區(qū)域,然后對(duì)圖像進(jìn)行平滑處理、自適應(yīng)閾值分割、邊緣檢測(cè),從而減少了后期的處理數(shù)據(jù)量,排除了大局部的干擾因素。在車(chē)道線的識(shí)別階段,根據(jù)圓和橢圓的性質(zhì),對(duì)傳統(tǒng)的霍夫變換進(jìn)行改良,極大減小了在檢測(cè)圓和橢圓時(shí)的計(jì)算量,并提高了檢測(cè)的準(zhǔn)確性。最后使用OpenCV圖像處理庫(kù)編寫(xiě)程序,證明了新算法的正確性,得到了理想的結(jié)果。關(guān)鍵詞:車(chē)道線識(shí)別橢圓檢測(cè)霍夫變換StudyonLaneMarkIdentificationAlgorithmBasedonImageProcessingAbstractInordertoimprovethereal-timeandaccuracyoflanerecognitionalgorithm,presentsamethodoflanedetectionbasedonimprovedHoughtransform.Thepreprocessingstageinthelaneline,firstdeterminetheimageoftheregionofinterest,andthensmoothing,adaptivethresholdsegmentation,edgedetectionofimage,therebyreducingtheamountofdataprocessingstage,mostoftheinterferencefactors.Therecognitionphaseinthelaneline,accordingtothenatureofthecircleandellipse,improvementoftheHoftransformtothetraditional,greatlyreducestheamountofcomputationinthedetectionofcircleandellipse,andimprovetheaccuracyofdetection.Finally,theuseofOpenCVimageprocessinglibraryprogram,provedthecorrectnessofthenewalgorithm,andthedesiredresult.KeyWords:lanemarkidentification;ellipsedetection;houghtransform目錄摘要IAbstractII目錄III第1章緒論11.1研究背景12.1國(guó)內(nèi)外研究現(xiàn)狀2國(guó)外研究現(xiàn)狀2國(guó)內(nèi)研究現(xiàn)狀33.1論文主要內(nèi)容3第2章車(chē)道線的預(yù)處理52.1認(rèn)識(shí)車(chē)道線5車(chē)道線的根本分類(lèi)5車(chē)道線的標(biāo)劃區(qū)分6車(chē)道線的根本形狀62.2感興趣區(qū)域62.3平滑濾波7均值濾波7中值濾波8高斯濾波9平滑濾波總結(jié)102.4二值化10二值化的根本概念10大津法自適應(yīng)閾值分割102.5邊緣提取11Sobel算子12Canny算子13Sobel算子和Canny算子的比擬14第3章Hough變換直線和橢圓的檢測(cè)153.1Hough變換直線檢測(cè)15Hough變換直線檢測(cè)的根本原理15Hough變換的缺陷和改良163.2Hough變換圓檢測(cè)17Hough變換圓檢測(cè)的根本原理17對(duì)hough變換圓檢測(cè)算法的改良18最小二乘法求曲線上一點(diǎn)的切線183.3Hough變換橢圓檢測(cè)19第4章車(chē)道線的識(shí)別22結(jié)論25參考文獻(xiàn):26致謝28附錄129緒論研究背景車(chē)道線的識(shí)別是圖像處理和交通智能化領(lǐng)域的一個(gè)重要分支,特別是近年來(lái),隨著只能汽車(chē)、自動(dòng)識(shí)別的開(kāi)展和應(yīng)用,車(chē)道線識(shí)別的研究得到了長(zhǎng)足的開(kāi)展,并且會(huì)在未來(lái)隨著人們對(duì)識(shí)別精度、速度的要求越來(lái)越高,車(chē)道線識(shí)別領(lǐng)域的研究將會(huì)愈發(fā)熾熱,可以說(shuō)這是一個(gè)方興未艾的研究領(lǐng)域。車(chē)道線識(shí)別的研究成果很大程度上得益與數(shù)字圖象處理和計(jì)算機(jī)技術(shù)的開(kāi)展。數(shù)字圖像處理最早出現(xiàn)于20世紀(jì)50年代,當(dāng)時(shí)的電子計(jì)算機(jī)已經(jīng)開(kāi)展到一定水平,人們開(kāi)始利用計(jì)算機(jī)來(lái)處理圖形和圖像信息。數(shù)字圖像處理作為一門(mén)學(xué)科大約形成于20世紀(jì)60年代初期。早期的圖像處理的目的是改善圖像的質(zhì)量,它以人為對(duì)象,以改善人的視覺(jué)效果為目的。圖像處理中,輸入的是質(zhì)量低的圖像,輸出的是改善質(zhì)量后的圖像,常用的圖像處理方法有圖像增強(qiáng)、復(fù)原、編碼、壓縮等。首次獲得實(shí)際成功應(yīng)用的是美國(guó)噴氣推進(jìn)實(shí)驗(yàn)室〔JPL〕。他們對(duì)航天探測(cè)器徘徊者7號(hào)在1964年發(fā)回的幾千張?jiān)虑蛘掌褂昧藞D像處理技術(shù),如幾何校正、灰度變換、去除噪聲等方法進(jìn)行處理,并考慮了太陽(yáng)位置和月球環(huán)境的影響,由計(jì)算機(jī)成功地繪制出月球外表地圖,獲得了巨大的成功。隨后又對(duì)探測(cè)飛船發(fā)回的近十萬(wàn)張照片進(jìn)行更為復(fù)雜的圖像處理,以致獲得了月球的地形圖、彩色圖及全景鑲嵌圖,獲得了非凡的成果,為人類(lèi)登月創(chuàng)舉奠定了堅(jiān)實(shí)的根底,也推動(dòng)了數(shù)字圖像處理這門(mén)學(xué)科的誕生。在以后的宇航空間技術(shù),如對(duì)火星、土星等星球的探測(cè)研究中,數(shù)字圖像處理技術(shù)都發(fā)揮了巨大的作用。隨著圖像處理技術(shù)的深入開(kāi)展,從70年代中期開(kāi)始,隨著計(jì)算機(jī)技術(shù)和人工智能、思維科學(xué)研究的迅速開(kāi)展,數(shù)字圖像處理向更高、更深層次開(kāi)展。人們已開(kāi)始研究如何用計(jì)算機(jī)系統(tǒng)解釋圖像,實(shí)現(xiàn)類(lèi)似人類(lèi)視覺(jué)系統(tǒng)理解外部世界,這被稱為圖像理解或計(jì)算機(jī)視覺(jué)。很多國(guó)家,特別是興旺國(guó)家投入更多的人力、物力到這項(xiàng)研究,取得了不少重要的研究成果。其中代表性的成果是70年代末MIT的Marr提出的視覺(jué)計(jì)算理論,這個(gè)理論成為計(jì)算機(jī)視覺(jué)領(lǐng)域其后十多年的主導(dǎo)思想。圖像理解雖然在理論方法研究上已取得不小的進(jìn)展,但它本身是一個(gè)比擬難的研究領(lǐng)域,存在不少困難,因人類(lèi)本身對(duì)自己的視覺(jué)過(guò)程還了解甚少,因此計(jì)算機(jī)視覺(jué)是一個(gè)有待人們進(jìn)一步探索的新領(lǐng)域。國(guó)內(nèi)外研究現(xiàn)狀在過(guò)去幾十年中,國(guó)內(nèi)外許多專家學(xué)者在車(chē)道線識(shí)別和跟蹤系統(tǒng)方面已經(jīng)做出了很多積極有意義的探索。國(guó)外一些關(guān)于智能車(chē)輛輔助駕駛系統(tǒng)的研究成果已經(jīng)比擬成熟,有些已經(jīng)投入到商業(yè)化應(yīng)用中,相對(duì)國(guó)外的研究水平,國(guó)內(nèi)的研究起步比擬晚,但是開(kāi)展速度比擬快,相信在未來(lái)的幾年里,國(guó)內(nèi)的一些研究成果應(yīng)該能夠快速跟上國(guó)際版步伐,逐漸開(kāi)展完善起自己的應(yīng)用體系,盡快的投入到實(shí)際生產(chǎn)應(yīng)用中。國(guó)外研究現(xiàn)狀國(guó)外一些關(guān)于車(chē)道線識(shí)別的研究成果已經(jīng)比擬成熟,目前,有些方法已經(jīng)投入到了實(shí)際的商業(yè)化應(yīng)用中。其中,具有代表性的系統(tǒng)主要由:意大利帕爾瑪大學(xué)開(kāi)發(fā)的GOLD系統(tǒng)[20];美國(guó)密歇根州立大學(xué)人工智能實(shí)驗(yàn)室開(kāi)發(fā)的LOIS系統(tǒng);美國(guó)卡內(nèi)基梅隆大學(xué)開(kāi)發(fā)的RALPH系統(tǒng);美國(guó)卡內(nèi)基梅隆大學(xué)機(jī)器人學(xué)院NavLab實(shí)驗(yàn)室和Vision&AutonomousSystemCenter聯(lián)合開(kāi)發(fā)的SCARF系統(tǒng)和ALVINN系統(tǒng)。GOLD系統(tǒng):該系統(tǒng)采用立體視覺(jué)技術(shù),根據(jù)目前車(chē)道線的油漆顏色特征來(lái)定位車(chē)道線所處位置,但是立體視覺(jué)技術(shù)面臨圖像匹配以及運(yùn)行時(shí)間長(zhǎng)等問(wèn)題,因而該系統(tǒng)有設(shè)計(jì)了并行SIMD硬件結(jié)構(gòu)來(lái)滿足實(shí)時(shí)性要求。LOIS系統(tǒng):該系統(tǒng)利用一種可變型的道路模板技術(shù),將道路的彎曲度和智能車(chē)輛在行駛過(guò)程中所處道路的位置問(wèn)題轉(zhuǎn)換成多維參數(shù)空間的最優(yōu)化問(wèn)題,通過(guò)得到的最優(yōu)解來(lái)解決車(chē)道偏離預(yù)警中出現(xiàn)的問(wèn)題。RALPH系統(tǒng):該系統(tǒng)首先根據(jù)車(chē)輛速度的變化情況,建立了與之相對(duì)應(yīng)的一系列梯形窗口,通過(guò)對(duì)梯形窗口內(nèi)的視頻圖像通過(guò)逆透視變換來(lái)確定道路的彎曲度,然后計(jì)算智能車(chē)輛偏離車(chē)道中心線的距離,判斷車(chē)道線偏離情況,最后通過(guò)跟蹤逆透視變換得到的道路平行線,從而實(shí)現(xiàn)道路車(chē)道線的追蹤。該系統(tǒng)在實(shí)驗(yàn)開(kāi)始的時(shí)候進(jìn)行了道路結(jié)構(gòu)化假設(shè),在很大程度上提高了車(chē)道線檢測(cè)識(shí)別的魯棒性。SCARF系統(tǒng):該系統(tǒng)利用雙目視覺(jué)原理,在圖像中設(shè)置的梯形窗口內(nèi),利用霍夫變換來(lái)估計(jì)車(chē)道線可能出現(xiàn)的ROI區(qū)域,然后反投影到真實(shí)的道路平面,通過(guò)控制車(chē)輛的方向沿著ROI中心線方向行駛來(lái)確保車(chē)輛不會(huì)偏離車(chē)道線。ALVINN系統(tǒng):采用基于BP神經(jīng)網(wǎng)絡(luò)的方法,通過(guò)對(duì)不同天氣狀況下的車(chē)道線特征進(jìn)行訓(xùn)練,來(lái)得到一個(gè)參數(shù)訓(xùn)練模型,從而根據(jù)訓(xùn)練得到的參數(shù)模型來(lái)預(yù)測(cè)不同天氣狀況下的車(chē)道線位置。國(guó)內(nèi)研究現(xiàn)狀今年來(lái),我國(guó)在該領(lǐng)域也做了一些積極的探索和研究,但是與其他興旺國(guó)家相比起步比擬晚,因此,國(guó)內(nèi)在該領(lǐng)域的研究和探索還存在一定的改良空間。國(guó)內(nèi)的研究成果主要有以下幾個(gè):清華大學(xué)計(jì)算機(jī)智能技術(shù)與系統(tǒng)國(guó)家重點(diǎn)實(shí)驗(yàn)室研制的THMR系統(tǒng):該工程采用的道路模型是直線模型,利用多窗口的雙閾值二值化進(jìn)行特征提取,在后續(xù)處理中采用增強(qiáng)轉(zhuǎn)移網(wǎng)絡(luò)來(lái)完成,在算法實(shí)時(shí)性方面做得比擬好,但由于道路模型首先,因此只能對(duì)直線車(chē)道進(jìn)行檢測(cè)和識(shí)別。吉林工業(yè)大學(xué)研制的JUTIV系統(tǒng):該工程采用3D盤(pán)旋曲線為道路模型,用最大類(lèi)方差方法來(lái)設(shè)定閾值提取道路邊緣,利用隨即采用的LmedSquare方法進(jìn)行車(chē)道線曲線擬合,同時(shí)結(jié)合了駕駛員穩(wěn)態(tài)預(yù)瞄原理,建立了車(chē)道線擬合的預(yù)測(cè)區(qū)域,并進(jìn)一步利用多傳感器信息融合技術(shù)對(duì)復(fù)雜環(huán)境下的車(chē)道線檢測(cè)識(shí)別與跟蹤等關(guān)鍵技術(shù)做了系統(tǒng)研究。論文主要內(nèi)容一種車(chē)道線識(shí)別方法,包括以下步驟:從在繪有不同車(chē)道標(biāo)志圖案的車(chē)道上行駛的汽車(chē)中,通過(guò)圖像傳感器拍攝汽車(chē)前方視野;從上述步驟中拍攝的圖像中選取汽車(chē)左、右車(chē)道邊界的數(shù)據(jù),通過(guò)將對(duì)所述選取的車(chē)道邊界數(shù)據(jù)進(jìn)行處理,完成車(chē)道線的識(shí)別,確定車(chē)輛所在區(qū)域的車(chē)道線類(lèi)型。論文中主要分以下局部對(duì)車(chē)道線識(shí)別算法進(jìn)行分析和描述:第2章:介紹了車(chē)道線的根本知識(shí),分析討論了車(chē)道線預(yù)處理的過(guò)程和用到的相關(guān)算法;第3章:具體分析霍夫變換算法,并根據(jù)圓和橢圓的性質(zhì)對(duì)霍夫變換算法進(jìn)行改良第4章:在對(duì)所使用的算法和車(chē)道線特征進(jìn)行分析綜合的根底上,使用C語(yǔ)言結(jié)合OpenCV圖像處理庫(kù)編寫(xiě)程序?qū)崿F(xiàn)算法,并對(duì)算法進(jìn)行驗(yàn)證,得到最終的車(chē)道線識(shí)別結(jié)果。車(chē)道線的預(yù)處理預(yù)處理是車(chē)道線識(shí)別過(guò)程中一個(gè)十分重要的一環(huán)。良好的預(yù)處理能使排除各種干擾,使運(yùn)算量大大下降,大大提高車(chē)道線識(shí)別的實(shí)時(shí)性和準(zhǔn)確性,反之,那么不僅會(huì)使識(shí)別效率降低,甚至導(dǎo)致得到錯(cuò)誤的結(jié)果。預(yù)處理的過(guò)程主要分為車(chē)道線的設(shè)置感興趣區(qū)域、平滑濾波、閾值分割、邊緣檢測(cè)。本章首先簡(jiǎn)要介紹車(chē)道線的根本知識(shí),然后對(duì)感興趣區(qū)域的原理和應(yīng)用進(jìn)行分析,并針對(duì)車(chē)道線的具體特征和要得到的目標(biāo)選擇適宜的預(yù)處理方法,進(jìn)而對(duì)每種預(yù)處理過(guò)程中的算法進(jìn)行分析討論,得出適合的預(yù)處理算法。認(rèn)識(shí)車(chē)道線車(chē)道線的根本分類(lèi)車(chē)道分界線是用來(lái)分隔同方向行駛的交通流的交通標(biāo)志線,凡同方向車(chē)行道有兩條或兩條以上車(chē)道時(shí),均應(yīng)劃車(chē)道分界線。車(chē)道分界線有兩種,即車(chē)道分界虛線和導(dǎo)向車(chē)道分界實(shí)線。車(chē)道分界虛線,在保證平安的原那么下,準(zhǔn)許車(chē)輛越線超車(chē)或變更車(chē)道行駛;導(dǎo)向車(chē)道分界實(shí)線,不準(zhǔn)車(chē)輛越線或變更車(chē)道。圖〔2-1〕所示為各種車(chē)道線:圖2-1各種車(chē)道線圖2-1各種車(chē)道線車(chē)道線的標(biāo)劃區(qū)分白色虛線:劃于路段中時(shí),用以分隔同向行駛的交通流或作為行車(chē)平安距離識(shí)別線;劃于路口時(shí),用以引導(dǎo)車(chē)輛行進(jìn);白色實(shí)線:劃于路段中時(shí),用以分隔同向行駛的機(jī)動(dòng)車(chē)和非機(jī)動(dòng)車(chē)或指示車(chē)行道線;劃于路口時(shí),用作導(dǎo)向車(chē)道線或停車(chē)線;黃色虛線:劃于路段中時(shí),用以分隔對(duì)向行駛的交通流,劃于路側(cè)或緣石上時(shí),用以禁止車(chē)輛長(zhǎng)時(shí)在路邊停放。黃色實(shí)線:劃于路段中時(shí),用以分隔對(duì)向行駛的交通流;劃于路側(cè)或緣石上時(shí),用以禁止車(chē)輛長(zhǎng)時(shí)或臨時(shí)在路邊停放。雙白虛線:劃于路口時(shí)作為減速讓行線;劃于路段中時(shí),作為行車(chē)方向隨時(shí)間改變之可變車(chē)道線;雙黃實(shí)線:劃于路段中時(shí),用以分隔對(duì)向行駛的交通流;黃色虛實(shí)線:劃于路段中時(shí),用以分隔對(duì)向行駛的交通流。黃色實(shí)線一側(cè)禁止車(chē)輛超車(chē)、跨越或回轉(zhuǎn),黃色虛線一側(cè)在保證平安的情況下準(zhǔn)許車(chē)輛超車(chē)、跨越或回轉(zhuǎn);雙白實(shí)線:劃于路口時(shí),作為停車(chē)讓行線。車(chē)道線的根本形狀通過(guò)對(duì)各種車(chē)道線的比擬,我們可以法線,車(chē)道線根本分為兩種形狀:直線和圓,其他的形狀還包括三角形等,但它們的根本組成元素仍然是直線,所以我們同樣能對(duì)其運(yùn)用直線的方式處理。但是必須注意的是,由于圖像采集設(shè)備與道路之間有一定的傾角,所以道路中的圓出現(xiàn)在圖像中時(shí)將會(huì)變?yōu)闄E圓。通過(guò)將根本的識(shí)別目標(biāo)固定在直線和橢圓的范圍中,我們便將車(chē)道識(shí)別的問(wèn)題抽象為直線和橢圓的識(shí)別,研究方向進(jìn)一步固定。感興趣區(qū)域感興趣區(qū)域簡(jiǎn)稱為ROI〔regionofinterest〕是將圖像中的重要區(qū)域進(jìn)行標(biāo)記,隨后的各種算法和分析將主要針對(duì)ROI。這樣做的好處是不僅使處理的數(shù)據(jù)量變少,而且也排除了非重點(diǎn)區(qū)域的潛在干擾。觀察采集到的圖像,如下圖,我們可以發(fā)現(xiàn),圖像中的上部是天空和較遠(yuǎn)處的信息,這一局部信息是不需要的,而且可能會(huì)對(duì)處理結(jié)果造成干擾。所以,在圖像的處理中我們應(yīng)當(dāng)適中選取ROI,對(duì)于以后的處理有莫大裨益。如圖〔2-2〕所示,其中下部較暗的區(qū)域即為我們的感興趣區(qū)域:圖2-2感興趣區(qū)域圖2-2感興趣區(qū)域平滑濾波各類(lèi)圖像處理系統(tǒng)在圖像的采集、獲取、傳送和轉(zhuǎn)換(如成像、復(fù)制掃描、傳輸以及顯示等)過(guò)程中,均處在復(fù)雜的環(huán)境中,光照、電磁多變,所有的圖像均不同程度地被可見(jiàn)或不可見(jiàn)的噪聲干擾。噪聲源包括電子噪聲、光子噪聲、斑點(diǎn)噪聲和量化噪聲。如果信噪比低于一定的水平,噪聲逐漸變成可見(jiàn)的顆粒形狀,導(dǎo)致圖像質(zhì)量的下降。除了視覺(jué)上質(zhì)量下降,噪聲同樣可能掩蓋重要的圖像細(xì)節(jié),因此,在對(duì)采集到的原始圖像做進(jìn)一步的處理時(shí),需要對(duì)圖像進(jìn)行必要的濾波降噪處理。均值濾波均值濾波是典型的線性濾波算法,它是指在圖像上對(duì)目標(biāo)像素給一個(gè)模板,該模板包括了其周?chē)呐R近像素,模板大小一般為3×3、5×5、或7×7,用其臨近區(qū)域像素值的均值來(lái)替代目標(biāo)像素。均值濾波的原理如圖〔2-3〕所示,其中a)圖中1-8為像素點(diǎn)的臨近區(qū)域,b)圖為的權(quán)系數(shù)矩陣:a〕a〕b)b)圖2-3均值濾波原理圖2-3均值濾波原理均值濾波方法如公式〔2-1〕所示: 〔2-1〕均值濾波具有算法簡(jiǎn)單,計(jì)算速度快的優(yōu)點(diǎn),但它的缺點(diǎn)也很明顯:降低噪聲的同時(shí)使圖像產(chǎn)生模糊,特別是景物的邊緣和細(xì)節(jié)局部。中值濾波中值濾波是一種非線性數(shù)字濾波器技術(shù),經(jīng)常用于去除圖像或者其它信號(hào)中的噪聲。中值濾波的思想是將一個(gè)像素替換為其臨近區(qū)域的所有像素的中值,臨近區(qū)域一般選以此像素為中心的奇數(shù)大小的窗口,常用的為3×3、5×5、7×7等。中值濾波的計(jì)算方法如公式〔2-2〕所示: 〔2-2〕中值濾波法對(duì)消除椒鹽噪聲非常有效,在光學(xué)測(cè)量條紋圖象的相位分析處理方法中有特殊作用,但在條紋中心分析方法中作用不大.中值濾波在圖像處理中,常用于保護(hù)邊緣信息,是經(jīng)典的平滑噪聲的方法。圖〔2-4〕為中值濾波效果圖:圖2-4中值濾波效果圖圖2-4中值濾波效果圖高斯濾波高斯濾波是一種線性平滑濾波,適用于消除高斯噪聲,廣泛應(yīng)用于圖像處理的減噪過(guò)程。通俗的講,高斯濾波就是對(duì)整幅圖像進(jìn)行加權(quán)平均的過(guò)程,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過(guò)加權(quán)平均后得到。高斯濾波的思想是:用一個(gè)模板〔或稱卷積、掩?!硳呙鑸D像中的每一個(gè)像素,用模板確定的鄰域內(nèi)像素的加權(quán)平均灰度值去替代模板中心像素點(diǎn)的值。高斯濾波的效果圖如圖2-5所示:圖2-5高斯濾波效果圖圖2-5高斯濾波效果圖平滑濾波總結(jié)通過(guò)比擬以上三種濾波方法,可以看出三者的區(qū)別和適用范圍。均值濾波算法簡(jiǎn)單,但會(huì)造成圖像的模糊,中值濾波對(duì)椒鹽噪聲有非常好的去除效果,并且能夠保存邊緣信息,高斯濾波那么對(duì)高斯噪聲具有很好的處理效果。圖像邊緣的信息對(duì)于本論文中的車(chē)道線識(shí)別算法有重要作用,所以在選擇濾波算法上應(yīng)優(yōu)先選用中值濾波和高斯濾波。二值化二值化的根本概念圖像的二值化就是將一副灰度圖像轉(zhuǎn)換為二值圖像,例如設(shè)定一個(gè)閾值K,像素值小于K的置為0,反之那么置為255,如公式〔2-3〕所示: 〔2-3〕大津法自適應(yīng)閾值分割雖然通過(guò)給定一個(gè)閾值能實(shí)現(xiàn)圖像的二值化,但在很多時(shí)候并不能給出一個(gè)適宜的閾值,為了解決這個(gè)問(wèn)題,人們提出了許多自適應(yīng)的閾值分割方法,以適應(yīng)不同灰度分布的圖像,其中應(yīng)用廣泛的有大津法自適應(yīng)閾值等。大津法也叫最大類(lèi)間方差法,是一種自適應(yīng)的閾值確定的方法,簡(jiǎn)稱OTSU。它是按圖像的灰度特性,將圖像分成背景和目標(biāo)2局部。背景和目標(biāo)之間的類(lèi)間方差越大,說(shuō)明構(gòu)成圖像的2局部的差異越大,當(dāng)局部目標(biāo)錯(cuò)分為背景或局部背景錯(cuò)分為目標(biāo)都會(huì)導(dǎo)致2局部差異變小。因此,使類(lèi)間方差最大的分割意味著錯(cuò)分概率最小。對(duì)于圖像,前景(即目標(biāo))和背景的分割閾值記作T,屬于前景的像素點(diǎn)數(shù)占整幅圖像的比例記為,其平均灰度;背景像素點(diǎn)數(shù)占整幅圖像的比例為,其平均灰度為。圖像的總平均灰度記為,類(lèi)間方差記為。假設(shè)圖像的背景較暗,并且圖像的大小為,圖像中像素的灰度值小于閾值T的像素個(gè)數(shù)記作,像素灰度大于閾值T的像素個(gè)數(shù)記作,那么有〔2-4〕〔2-5〕〔2-6〕 〔2-7〕 〔2-8〕 〔2-9〕經(jīng)計(jì)算后,得到等價(jià)公式〔2-10〕: 〔2-10〕采用遍歷的方法得到使類(lèi)間方差最大的閾值T,即為所求。大津法閾值分割如圖2-6所示:圖2-6大津法自適應(yīng)閾值分割圖2-6大津法自適應(yīng)閾值分割邊緣提取圖象的邊緣是指圖象局部區(qū)域亮度變化顯著的局部,該區(qū)域的灰度剖面一般可以看作是一個(gè)階躍,既從一個(gè)灰度值在很小的緩沖區(qū)域內(nèi)急劇變化到另一個(gè)灰度相差較大的灰度值。圖象的邊緣局部集中了圖象的大局部信息,圖象邊緣確實(shí)定與提取對(duì)于整個(gè)圖象場(chǎng)景的識(shí)別與理解是非常重要的,同時(shí)也是圖象分割所依賴的重要特征,邊緣檢測(cè)主要是圖象的灰度變化的度量、檢測(cè)和定位。Sobel算子Sobel算子主要用作邊緣檢測(cè)。在技術(shù)上,它是一離散性差分算子,用來(lái)運(yùn)算圖像亮度函數(shù)的梯度之近似值。在圖像的任何一點(diǎn)使用此算子,將會(huì)產(chǎn)生對(duì)應(yīng)的梯度矢量或是其法矢量。Sobel算子包含兩個(gè)的矩陣,如圖〔2-7〕所示,用這兩個(gè)矩陣與圖像進(jìn)行卷積,便可分別得到橫向及縱向的亮度差分近似值。如果以A代表原始圖像,Gx及Gy分別代表經(jīng)橫向及縱向邊緣檢測(cè)的圖像,其計(jì)算方法如公式〔2-11〕和〔2-12〕: 〔2-11〕 〔2-12〕圖像的每一個(gè)像素的橫向及縱向梯度值可用公式〔2-13〕來(lái)計(jì)算梯度的大小。 〔2-13〕通常,也使用一個(gè)近似計(jì)算的公式〔2-14〕來(lái)提高計(jì)算速度: 〔2-14〕可用以下公式計(jì)算梯度方向: 〔2-15〕如果角度Θ等于零,即代表圖像該處擁有縱向邊緣,左方較右方暗。Sobel算子邊緣提取效果如圖〔2-8〕所示,a)圖為源圖像,b)圖為X方向邊緣檢測(cè)結(jié)果,c)圖為Y方向邊緣檢測(cè)結(jié)果c)b)a)c)b)a)圖2-8Sobel算子邊緣檢測(cè)效果圖圖2-8Sobel算子邊緣檢測(cè)效果圖Canny算子Canny邊緣檢測(cè)算子是一個(gè)多級(jí)邊緣檢測(cè)算法,它的目標(biāo)為實(shí)現(xiàn)最優(yōu)的邊緣檢測(cè)算法。Canny算子的處理過(guò)程分為幾個(gè)步驟,首先要對(duì)輸入圖像進(jìn)行高斯平滑處理,然后使用一個(gè)二維一階導(dǎo)數(shù)算子作用與平滑處理后的圖像,用于突出圖像中高一空間導(dǎo)數(shù)的圖像區(qū)域,這樣我們就從原始圖像生成了圖像中每個(gè)點(diǎn)亮度梯度圖以及亮度梯度的方向。隨后Canny跟蹤這些亮度梯度并且保存局部最大值而把其他值設(shè)為0,即非極大值抑制,最后使用雙閾值算法檢測(cè)和連接邊緣。對(duì)圖〔2-8〕中圖像進(jìn)行Canny邊緣檢測(cè)效果如圖〔2-9〕所示:圖2-9Canny算子邊緣檢測(cè)效果圖圖2-9Canny算子邊緣檢測(cè)效果圖Sobel算子和Canny算子的比擬Sobel算子通過(guò)對(duì)圖像進(jìn)行卷積運(yùn)算,算法簡(jiǎn)單且計(jì)算速度相對(duì)較快,缺點(diǎn)是Sobel算子并沒(méi)有將圖像的主題與背景嚴(yán)格地區(qū)分開(kāi)來(lái),換言之就是Sobel算子并沒(méi)有基于圖像灰度進(jìn)行處理,由于Sobel算子并沒(méi)有嚴(yán)格地模擬人的視覺(jué)生理特征,所以提取的圖像輪廓有時(shí)并不能令人滿意。算子是一個(gè)具有濾波增強(qiáng)檢測(cè)的多階段的優(yōu)化算子,在進(jìn)行處理前,Canny算子先利用高斯平滑濾波器來(lái)平滑圖像以除去噪聲,Canny分割算法采用一階偏導(dǎo)的有限差分來(lái)計(jì)算梯度幅值和方向,在處理過(guò)程中,Canny算子還將經(jīng)過(guò)一個(gè)非極大值抑制的過(guò)程,最后Canny算子還采用兩個(gè)閾值來(lái)連接邊緣??梢钥闯鯟anny算子的處理過(guò)程比擬復(fù)雜,但它的處理結(jié)果是比擬好的。Hough變換直線和橢圓的檢測(cè)Hough變換直線檢測(cè)Hough變換直線檢測(cè)的根本原理Hough變換的核心思想是將圖像空間轉(zhuǎn)化到參數(shù)空間進(jìn)行分析。在平面直角坐標(biāo)系中,一條直線可以用方程來(lái)表示,其中和是參數(shù),分別是斜率和截距。過(guò)某一點(diǎn)的所有直線的參數(shù)都會(huì)滿足方程,即點(diǎn)確定了一族直線。方程在參數(shù)平面上是一條直線。這樣,圖像平面上的一個(gè)前景像素點(diǎn)就對(duì)應(yīng)到參數(shù)平面上的一條直線,同理,直線上的其他點(diǎn)也對(duì)應(yīng)一條參數(shù)空間的直線,最終,在參數(shù)空間中的這些直線將會(huì)交于一點(diǎn),很顯然,這個(gè)點(diǎn)就是。但是方程無(wú)法表示這樣的直線〔斜率無(wú)窮大〕,所以在實(shí)際應(yīng)用中使用直線的法線式方程來(lái)表示直線:此時(shí),圖像空間中的一點(diǎn)將對(duì)應(yīng)參數(shù)空間的一條正弦曲線,這樣圖像空間中的一條直線就對(duì)應(yīng)參數(shù)空間中的一點(diǎn)。如圖〔3-1〕所示:圖3-1直線上點(diǎn)在參數(shù)空間的映射圖3-1直線上點(diǎn)在參數(shù)空間的映射圖〔3-2〕為霍夫變換直線檢測(cè)的效果〔已設(shè)置感興趣區(qū)域〕:圖3-2霍夫變換直線檢測(cè)圖3-2霍夫變換直線檢測(cè)Hough變換的缺陷和改良Hough變換具有顯而易見(jiàn)的優(yōu)點(diǎn),但它也有一些不可無(wú)視的缺點(diǎn):1、運(yùn)算量大。傳統(tǒng)的Hough變換需要對(duì)每個(gè)點(diǎn)進(jìn)行計(jì)算,不僅運(yùn)算量大,而且會(huì)產(chǎn)生大量冗余數(shù)據(jù),并且運(yùn)用Hough變換進(jìn)行圓或其他圖像的檢測(cè)時(shí),由于參數(shù)的增多〔如圓需要3個(gè)參數(shù)〕,計(jì)算量將會(huì)急劇增加,所以,Hough變換的實(shí)時(shí)性不高;2、雖然Hough變換能得到直線的參數(shù)方程,但它無(wú)法確定直線的起止點(diǎn),即無(wú)法確定直線是否是連續(xù)的;3、圖像中的噪聲點(diǎn)會(huì)對(duì)Hough變換的結(jié)果產(chǎn)生較大的影響。針對(duì)以上缺陷,需要對(duì)Hough變換進(jìn)行一定的改良,以更好地完成期望的工作:1、對(duì)圖像進(jìn)行適宜的預(yù)處理,盡力排除噪聲點(diǎn)的干擾;2、對(duì)圖像進(jìn)行邊緣提取、區(qū)域分割等,提取出有用的信息,再根據(jù)統(tǒng)計(jì)學(xué)的一些原理來(lái)應(yīng)用Hough變換,減少Hough變換的運(yùn)算量3、對(duì)于Hough變換以上缺陷中的第二點(diǎn),可以設(shè)計(jì)特殊的數(shù)據(jù)結(jié)構(gòu)記錄Hough變換過(guò)程中的數(shù)據(jù),從而解決探測(cè)直線等起止點(diǎn)的問(wèn)題。Hough變換圓檢測(cè)Hough變換圓檢測(cè)的根本原理Hough變換直線檢測(cè)中是將圖像空間中的一條直線映射為參數(shù)空間中的一個(gè)點(diǎn),對(duì)圓的檢測(cè)同樣如此,這也是Hough變換的核心思想所在。但是直線檢測(cè)需要兩個(gè)參數(shù),而圓檢測(cè)需要三個(gè)參數(shù)〔為圓心坐標(biāo),r為圓的半徑〕。在平面直角坐標(biāo)系中,圓用方程來(lái)表示,將圓上的一點(diǎn)映射到參數(shù)空間,對(duì)應(yīng)的方程為由于圓的半徑r不確定,所以參數(shù)空間是一個(gè)三維空間,每一點(diǎn)在參數(shù)空間映射為一個(gè)圓錐,如圖〔3-3〕所示:圖3-3圓上一點(diǎn)在參數(shù)空間的映射圖3-3圓上一點(diǎn)在參數(shù)空間的映射因此,Hough變換圓檢測(cè)的計(jì)算量會(huì)是相當(dāng)大的,這是傳統(tǒng)Hough變換最大的缺陷之一。對(duì)hough變換圓檢測(cè)算法的改良由于傳統(tǒng)的Hough變換圓檢測(cè)算法計(jì)算量太大,所以需要對(duì)其進(jìn)行改良以增強(qiáng)其實(shí)時(shí)性。對(duì)于圓,有如下性質(zhì):圓上一點(diǎn)的法線必過(guò)圓心。根據(jù)這一性質(zhì),隨機(jī)選取圓上假設(shè)干各點(diǎn),求得其法線,法線的交點(diǎn)便是圓心,進(jìn)而也可以很容易地計(jì)算出圓的半徑。那么如何求一個(gè)點(diǎn)的法線呢?對(duì)于圖像中的一個(gè)點(diǎn),其法線方向便是其梯度變換最大的方向,且法線與切線呈垂直關(guān)系,那么我們可以先求一點(diǎn)的切線,進(jìn)而得到這一點(diǎn)的法線。最小二乘法求曲線上一點(diǎn)的切線最小二乘法〔又稱最小平方法〕是一種數(shù)學(xué)優(yōu)化技術(shù)。它通過(guò)最小化誤差的平方和尋找數(shù)據(jù)的最正確匹配函數(shù)。利用最小二乘法可以簡(jiǎn)便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小。最小二乘法還可用于曲線擬合等初中應(yīng)用領(lǐng)域。假設(shè)圖像中存在處于一條直線附近的幾個(gè)點(diǎn),那么設(shè)這條直線的方程為:為直線斜率,為截距。為求得和,根據(jù)最小二乘法原理,將實(shí)測(cè)值與的離差的平方和最小作為最優(yōu)判據(jù)。令〔3-1〕當(dāng)最小時(shí),分別對(duì)和求偏導(dǎo),令這兩個(gè)偏導(dǎo)數(shù)等于0: 〔3-2〕 〔3-3〕兩個(gè)偏導(dǎo)數(shù)等于0,即得: 〔3-4〕 〔3-5〕將和的結(jié)果代入原直線方程,即得擬合所得的直線方程為:nnXkYXXXnYXYXnYiiiiiiii22)(同樣,在圖像中圓上某一點(diǎn)的切線方程也可用同樣的方法求得。雖然最小二乘法能比擬方便的得出圓上一點(diǎn)的切線,但要知道其正確性與點(diǎn)的樣本大小有很大關(guān)系,如果樣本太小,那么計(jì)算誤差變大,很可能得不到正確的結(jié)果,假設(shè)樣本太大,那么計(jì)算量也將隨之增大,所以樣本大小的選取是一個(gè)不可無(wú)視的問(wèn)題。圖〔3-4〕展示了根據(jù)最小二乘法原理得到的曲線上一點(diǎn)的切線:圖3-4最小二乘法得到曲線上一點(diǎn)的切線圖3-4最小二乘法得到曲線上一點(diǎn)的切線Hough變換橢圓檢測(cè)根據(jù)前面的分析,道路車(chē)道線經(jīng)過(guò)圖像采集設(shè)備采集后,其原本的圓將會(huì)變化為橢圓,所以我們更應(yīng)該關(guān)注橢圓的檢測(cè)。根據(jù)Hough變換圓檢測(cè)的算法,進(jìn)一步討論橢圓的檢測(cè),由于橢圓上一點(diǎn)的法線并不過(guò)橢圓的中心,所以上面的圓檢測(cè)算法不能直接用于橢圓的檢測(cè),需要進(jìn)一步的改良。根據(jù)橢圓的性質(zhì):橢圓上兩點(diǎn)法線的交點(diǎn)與這兩點(diǎn)中點(diǎn)所確定的直線過(guò)橢圓中心。我們自然而然便能對(duì)圓檢測(cè)算法加以改良以適應(yīng)橢圓的檢測(cè)。橢圓檢測(cè)的過(guò)程描述為:第一步:在目標(biāo)圖形上選取隨機(jī)的三個(gè)點(diǎn)分別記為、和,并求得他們各自的切線,分別記為、、和他們兩兩間的中點(diǎn),分別記為、和〔即為和的中點(diǎn)〕;第二步:找到這三條切線兩兩相交的交點(diǎn),分別記為、和〔即為和的交點(diǎn),以此類(lèi)推〕;第三步:將對(duì)應(yīng)的交點(diǎn)與中點(diǎn)連接,即與、與、與,將得到的直線分別記為、和;第四步:求得這三條連線兩兩相交的交點(diǎn),根據(jù)一定的距離準(zhǔn)那么,判斷這三點(diǎn)是否足夠接近,如果足夠接近,說(shuō)明此時(shí)的形狀可能是一個(gè)橢圓,否那么那么說(shuō)明不是;第五步:在目標(biāo)圖形上另選一點(diǎn),求其切線,并將其與其他三點(diǎn)中的一點(diǎn)重新配對(duì),得到兩切線交點(diǎn)與中點(diǎn)的直線方程;第六步:根據(jù)同樣的距離準(zhǔn)那么,判斷新得到的直線與其他直線的交點(diǎn)是否足夠接近,如果是,那么目標(biāo)圖形是一個(gè)橢圓,如果不是,那么說(shuō)明目標(biāo)圖形不是橢圓。圖〔3-5〕為根據(jù)此方法對(duì)橢圓進(jìn)行檢測(cè)的結(jié)果:圖3-5橢圓檢測(cè)圖3-5橢圓檢測(cè)由圖可以看出,該方法能正確的檢測(cè)出圖像中的橢圓,說(shuō)明了此方法的正確性和可靠性。車(chē)道線的識(shí)別綜合分析前面章節(jié)中的處理過(guò)程和算法,總結(jié)出車(chē)道線識(shí)別的流程,如圖〔4-1〕所示:圖4-1車(chē)道線識(shí)別流程圖圖4-1車(chē)道線識(shí)別流程圖在Linux平臺(tái)上,使用C語(yǔ)言和Gtk+結(jié)合OpenCV圖像處理庫(kù)編寫(xiě)程序,進(jìn)行車(chē)道線的識(shí)別,如圖〔4-2〕所示:圖4-2車(chē)道線識(shí)別程序界面圖4-2車(chē)道線識(shí)別程序界面車(chē)道線的識(shí)別結(jié)果如圖〔4-3〕所示:圖4-3車(chē)道線的識(shí)別結(jié)果圖4-3車(chē)道線的識(shí)別結(jié)果從識(shí)別的結(jié)果可以看出,算法能對(duì)車(chē)道線進(jìn)行準(zhǔn)確的識(shí)別,到達(dá)了預(yù)期的目的和理想的效果。結(jié)論從以上的算法分析和實(shí)驗(yàn)結(jié)果,可以看出,本論文中的算法能對(duì)車(chē)道線較好較準(zhǔn)確的進(jìn)行識(shí)別,算法的主要優(yōu)點(diǎn)有:1、算法的準(zhǔn)確性高。相比傳統(tǒng)的識(shí)別算法,本論文中的算法經(jīng)過(guò)優(yōu)化處理,提高了識(shí)別的準(zhǔn)確性;2、算法的實(shí)時(shí)性好,特別是經(jīng)過(guò)對(duì)Hough變換等算法的一定的改良,大大減少了計(jì)算量,提高了計(jì)算速度;3、算法能檢測(cè)多種車(chē)道線,適應(yīng)范圍廣;4、算法結(jié)構(gòu)清晰,魯棒性好,方便擴(kuò)展和改良;當(dāng)然,在實(shí)際的應(yīng)用中也發(fā)現(xiàn)了一些問(wèn)題,主要有:1、對(duì)于復(fù)雜路況和天氣條件欠佳時(shí),算法的適應(yīng)性還不夠高;2、對(duì)于一些現(xiàn)實(shí)中存在的干擾因素如馬路沿等,不能進(jìn)行有效的排除。這些存在的問(wèn)題,也指出了下一階段改良的方向和思路,以后的時(shí)間里還有更多的工作要做。對(duì)于未來(lái),隨著人工智能、機(jī)器學(xué)習(xí)等的不斷開(kāi)展,將這些技術(shù)應(yīng)用于車(chē)道識(shí)別中,必將能極大的提高車(chē)道線識(shí)別的精確性和適應(yīng)性,并且伴隨著智能汽車(chē)的進(jìn)一步開(kāi)展,新的技術(shù)不斷得到應(yīng)用,車(chē)道線的識(shí)別技術(shù)一定會(huì)迎來(lái)一個(gè)大的開(kāi)展。特別是國(guó)內(nèi),隨著中國(guó)的科技水平不斷提高,市場(chǎng)需要持續(xù)增大,對(duì)于車(chē)道線的自動(dòng)識(shí)別的需求也將更加迫切。所以未來(lái)是光明的,但更需要我們腳踏實(shí)地,不斷取得新的突破。參考文獻(xiàn):[1]魯曼,蔡自興,李儀.道路區(qū)域分割的車(chē)道線檢測(cè)方法[J].智能系統(tǒng)學(xué)報(bào),2023,5(6):505-509[2]金輝,吳樂(lè)林,陳慧巖,龔建偉.結(jié)構(gòu)化道路車(chē)道線識(shí)別的一種改良算法[J].北京理工大學(xué)學(xué)報(bào),2007,27(6):502-505[3]朱桂英,張瑞林.基于Hough變換的圓檢測(cè)方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2023,29(6)[4]郭磊,王建強(qiáng),李克強(qiáng).基于點(diǎn)集優(yōu)化和干擾點(diǎn)模糊化的車(chē)道線識(shí)別[J].中國(guó)機(jī)械工程,18(15):1872-1876[5]楊喜寧,段建民,高德芝,鄭榜貴.基于改良Hough變換的車(chē)道線檢測(cè)技術(shù)[J].計(jì)算機(jī)測(cè)量與控制,2023,18(2):292-298[6]莫建文,范楷,張順嵐.基于擴(kuò)散性搜索區(qū)域的車(chē)道線檢測(cè)與跟蹤算法[J].桂林電子科技大學(xué)學(xué)報(bào),2023,31(6):464-468[7]王曉云,王永忠.基于線性雙曲線模型的車(chē)道線檢測(cè)算法[J].杭州電子科技大學(xué)學(xué)報(bào),2023,30(6):64-67[8]徐巖,雷濤.基于形態(tài)學(xué)方法的車(chē)道線檢測(cè)算法研究[J].鐵道學(xué)報(bào),2023,31(1):107-110[9]秦開(kāi)懷,王海潁,鄭輯濤.一種基于Hough變換的圓和矩形的快速檢測(cè)方法[J].中國(guó)圖像圖形學(xué)報(bào),2023,15(1):110-115[10]段汝嬌,趙偉,黃松嶺,稱建業(yè).一種基于改良Hough變換的直線快速檢測(cè)算法[J].儀器儀表學(xué)報(bào),2023,31(12):2774-2780[11]李假設(shè)皓,丁冬花.一種基于掃描線的車(chē)道線識(shí)別算法[J].微計(jì)算機(jī)信息,2023,24(6):244-246[12]劉富強(qiáng),張姍姍,朱文紅,李志鵬.一種基于視覺(jué)的車(chē)道線檢測(cè)與跟蹤算法[J],2023,38(2):223-229[13]黃永林,葉玉堂,陳鎮(zhèn)龍,喬鬧生.一種新的快速Hough變換圓檢測(cè)方法[J],2023,24(9):837-841[14]陳洪波,王強(qiáng),徐曉蓉,陳真誠(chéng),湯井田.用改良的Hough變換檢測(cè)交通標(biāo)志圖像的直線特征[J],2023,17(5):1111-1118[15]KastrinakiV,ZervakisM,KalaitzakisK.Asurveyofvideoprocessingtechniquesfortrafficapplications[J].ImageandprogrammingforVisionComputing,2003,21(1):359.[16]LeeJW.Amachinevisionsystemforlanedeparturedetection[J].ComputerVisionImageUnderst,2002,86[17]IsardMA,Blake.Condensationconditionaldensitypropagationforvisualtracking[J].InternationalJournalofComputerVision,1998,29(1):5[18]AdrianKaehler,Dr.GaryRostBradski.LearnintOpenCV[M].O'RELILY,2023[19]D.Pomerleau,RALPH:RapidlyAdaptingLateralPositionHandler,Proc.IEEESymposiumonIntelligentVehicles,Detroit,USA,1995:506-511[20]M.BertozziandA.Broggi.GOLD:AParallelRealTimeStereoVisionSystemforGenericObstacleandLaneDetection,IEEETrans.OnImageProc.1998,7(1):62-81[21]YouFeng.Intelligentvehicleautomaticallychangethewayandautomaticcontrolmethodofovertaking[D].JiLinuniversity.2005:44-46[22]Guanxin.High-speedcarlanedeparturewarningsystemalgorithms.JilinuniversityPhd.paper.2004:12-23致謝本論文的工作實(shí)在景文博老師的悉心指導(dǎo)下完成的。景老師嚴(yán)謹(jǐn)?shù)膶W(xué)風(fēng)、教書(shū)育人的敬業(yè)精神和對(duì)事業(yè)的執(zhí)著追求,對(duì)我影響至深,是我受益匪淺。在算法的研究過(guò)程中,景老師給了我特別大的幫助,如算法的選擇、圖像的選取和相關(guān)的參考資料等,節(jié)省了我很多時(shí)間,也讓我的理論知識(shí)得到了極大的提高。在此。我向景老師表達(dá)我最誠(chéng)摯的感謝和致意!同時(shí),也感謝DebianLinux和OpenCV社區(qū)給我提供的幫助,對(duì)于OpenCV編程環(huán)境的搭建以及OpenCV在Linux操作系統(tǒng)上的應(yīng)用,他們給我提供了許多珍貴的意見(jiàn),在此,為他們樂(lè)于分享、樂(lè)于助人的精神獻(xiàn)上我深深地感謝。當(dāng)然,也要感謝學(xué)校提供應(yīng)我們的便利的學(xué)習(xí)條件,特別是圖書(shū)館提供應(yīng)我們的便利的查閱資料的條件,讓我接觸到了許多有用的資料。最后,感謝我的朋友們,在我迷惑不解時(shí)和我討論問(wèn)題幫我找到思路,謝謝他們的支持和幫助!附錄1車(chē)道線識(shí)別程序源代碼,編譯要求:LinuxKernel2.6或以上,Glibc2.13或以上,OpenCV2.1或以上,Gcc4.7或以上版本。#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>#include<opencv/highgui.h>#include<opencv/cv.h>#defineREDcvScalar(0,0,255,0)#defineGREENcvScalar(0,255,0,0)#defineBLUEcvScalar(255,0,0,0)#defineROIcvRect(0,(int)src->height/3,src->width,src->height)#defineLOW_THRESH80#defineHIGH_THRESH255#defineMAXDISTANCE10//img為加載的源圖像,src為處理過(guò)程中所用的灰度圖像//temp為臨時(shí)需要時(shí)的中轉(zhuǎn)圖像,out為最后輸出的三通道圖像IplImage*img,*src,*temp,*out;CvMemStorage*storage;CvSeq*lines;CvSeq*contours;typedefstruct{ floata; floatb; floatc; intis_vertical;}Line;Line*get_tangent(CvSeq*seq,intn);Lineget_line_func(CvPointp1,CvPointp2);CvPoint*get_join(CvPoint*p1,Linel1,CvPoint*p2,Linel2);CvPointget_center(CvPointp1,CvPointp2);doublepoints_distance(CvPointp1,CvPointp2);intis_ellipse(CvSeq*);intmain(intargc,char*argv[]){//圖像的加載過(guò)程 if(argc!=2) { puts("Usage:./markfilename"); exit(1); } if((img=cvLoadImage(argv[1],CV_LOAD_IMAGE_UNCHANGED))==NULL) { printf("cannotloadimage%s.\n",argv[1]); exit(1); } src=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); temp=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); out=cvCreateImage(cvGetSize(img),img->depth,3); if(img->nChannels>=3) { cvCvtColor(img,src,CV_RGB2GRAY); cvCopy(img,out,NULL); } else { cvCopy(img,src,0); cvCvtColor(img,out,CV_GRAY2RGB); } storage=cvCreateMemStorage(0);//設(shè)置ROI cvSetImageROI(src,ROI);//濾波 cvSmooth(src,src,CV_MEDIAN,5,5,0,0); cvSmooth(src,src,CV_GAUSSIAN,5,5,0,0);//大津法閾值分割 cvThreshold(src,src,LOW_THRESH,HIGH_THRESH,CV_THRESH_OTSU);//邊緣檢測(cè) cvSetImageROI(temp,ROI); cvCanny(src,temp,LOW_THRESH,HIGH_THRESH,3); cvResetImageROI(src); cvResetImageROI(temp); cvCopy(temp,src,0); cvSetImageROI(src,ROI);//hough直線檢測(cè) lines=cvHoughLines2(src,storage,CV_HOUGH_PROBABILISTIC,0.5,CV_PI/180,5,10,5);//繪制檢測(cè)到的直線 inti; cvSetImageROI(out,ROI); for(i=0;i<lines->total;i++) { CvPoint*endpoints=(CvPoint*)cvGetSeqElem(lines,i); cvLine(out,endpoints[0],endpoints[1],RED,2,8,0); }//邊緣提取 intsum_of_area=0; sum_of_area=cvFindContours(src,storage,&contours,sizeof(CvContour),CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0)); for(i=0;i<sum_of_area;contours=contours->h_next,i++) { if(contours->total<=50) continue; if(is_ellipse(contours)) { puts("OK"); cvDrawContours(out,contours,BLUE,GREEN,LOW_THRESH,2,8,cvPoint(0,0)); } } cvResetImageROI(out); cvRectangle(out,cvPoint(0,(int)out->height/3),cvPoint(out->width,out->height),GREEN,2,8,0); cvNamedWindow("IMG",0); cvNamedWindow("OUT",0); cvShowImage("IMG",img); cvShowImage("OUT",out); cvWaitKey(0); return0;}Line*get_tangent(CvSeq*seq,intn){ Line*result=(Line*)malloc(sizeof(Line)); if(n>=seq->total||n<4) return(Line*)NULL; CvPoint*p=(CvPoint*)cvGetSeqElem(seq,n); doublesum_of_xy=0.0,sum_of_x=0.0,sum_of_y=0.0,sum_of_x2=0.0; inti; for(i=n-4;i<=n+4;i++) { CvPoint*temp=(CvPoint*)cvGetSeqElem(seq,i); sum_of_xy+=(double)(temp->x*temp->y); sum_of_x+=(double)temp->x; sum_of_y+=(double)temp->y; sum_of_x2+=(double)(temp->x*temp->x); }#ifndefSIZEOFTANGENTAREA#defineSIZEOFTANGENTAREA9result->a=(SIZEOFTANGENTAREA*sum_of_xy-sum_of_x*sum_of_y)/(SIZEOFTANGENTAREA*sum_of_x2-sum_of_x*sum_of_x); result->c=sum_of_y/SIZEOFTANGENTAREA-result->a*sum_of_x/SIZEOFTANGENTAREA; result->b=-1.0; result->is_vertical=0;#endif returnresult;}Lineget_line_func(CvPointp1,CvPointp2){ Lineresult; if(p1.x==p2.x) result.is_vertical=1; else { result.a=p2.y-p1.y; result.b=p1.x-p2.x; result.c=-(result.a*p1.x+result.b*p1.y); result.is_vertical=0; } returnresult;}CvPoint*get_join(CvPoint*p1,Linel1,CvPoint*p2,Linel2){ CvPoint*p=(CvPoint*)malloc(sizeof(CvPoint)); if(l1.is_vertical!=1&&l2.is_vertical!=1) { if(fabs(l1.a/l1.b-l2.a/l2.b)>=0.000001) { p->x=(l1.b*l2.c-l2.b*l1.c)/(l2.b*l1.a-l1.b*l2.a); p->y=(l1.a*l2.c-l1.c*l2.a)/(l1.b*l2.a-l1.a*l2.b); returnp; } else returnNULL; } elseif(l1.is_vertical&&l2.is_vertical!=1) { p->x=p1->x; p->y=p1->x*l2.a/(-l2.b)+l2.c/(-l2.b); returnp; } elseif(l2.is_vertical&&l1.is_vertical!=1) { p->x=p2->x; p->y=p2->x*l1.a/(-l1.b)+l1.c/(-l1.b); returnp; } elsereturnNULL;}CvPointget_center(CvPointp1,CvPointp2){ CvPointcenter; center.x=(p1.x+p2.x)>>1; center.y=(p1.y+p2.y)>>1; returncenter;} intis_ellipse(CvSeq*contours){ if(contours->total<=50) return0; intpos1=contours->total-10; intpos2=pos1-20; intpos3=pos1-30;//在曲線上選三個(gè)點(diǎn) CvPoint*p1=(CvPoint*)cvGetSeqElem(contours,pos1); CvPoint*p2=(CvPoint*)cvGetSeqElem(contours,pos2); CvPoint*p3=(CvPoint*)cvGetSeqElem(contours,pos3);//得到三個(gè)點(diǎn) Line*tangent1=get_tangent(contours,pos1); Line*tangent2=get_tangent(contours,pos2); Line*tangent3=get_tangent(contours,pos3);//分別得到相應(yīng)的三條切線 CvPoint*join1_2,*join1_3,*join2_3;//三條切線的交點(diǎn) if(tangent1&&tangent2) join1_2=get_join(p1,*tangent1,p2,*tangent2); if(tangent1&&tangent3) join1_3=get_join(p1,*tangent1,p3,*tangent3); if(tangent2&&tangent3) join2_3=get_join(p2,*tangent2,p3,*tangent3); CvPointcp1_2=get_center(*p1,*p2); CvPointcp1_3=get_center(*p1,*p3); CvPointcp2_3=get_center(*p2,*p3);//得到相應(yīng)的三個(gè)中點(diǎn) Linejoin_center1_2,join_center1_3,join_center2_3; if(join1_2) join_center1_2=get_li

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論