<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術 > 設計應用 > 基于攝像頭的AD黑線提取算法

          基于攝像頭的AD黑線提取算法

          作者: 時間:2012-09-18 來源:網絡 收藏

          基于AD采樣的算法

            基于AD的黑線能夠反映圖像上的每個點的黑白程度,提取出來的黑線準確度比較高,但是后續(xù)的黑線比較復雜。基于電壓跳變比較方法軟件黑線提取非常簡單,但是硬件調試比較困難,而且不能反映每個點的真實黑白程度。對賽道環(huán)境要求很高,易受干擾。

            基于AD的黑線提取有以下幾種方法:

            1) 找出每一行的黑線的左右邊界點,把中間點作為道路;

            2) 利用若干行相加,取最黑點;

            3) 找出每行的最黑點,把它作為道路。

            第一種做法:找出每一行的黑線的左右邊界點,把中間點作為道路。

            

          11.jpg

            圖1 斜看十字交叉道示意圖

            它是最容易想到的方法,在無交叉道以及的黑白AD值分明的情況下,它可以達到非常理想的效果。但是若出現(xiàn)了斜看交叉道或者黑白AD不是很分明的情況下,該方法的濾波顯得十分復雜。在實際中由于對于遠處的黑線不是很敏感,這使得黑點的閾值很難以確定,選大了會使遠方道路提取出錯,選小了會丟失遠方的道路信息。也許采用動態(tài)閾值是一個好方法,但是它也不是十分管用。在實驗中我們發(fā)現(xiàn)黑點的閾值不是隨著距離的變化成線性變化的,它的變化多少帶有點突變的味道,因此很難確定黑點閾值的變化規(guī)律,自然動態(tài)閾值也很難設定。斜看十字道會帶來更大的麻煩,由于在實際的控制中很難做到每次都嚴格地貼線走,因此小車在從彎道出來的時候若彎道前方有個十字道,很容易造成斜看的情況發(fā)生。這時從AD采集的圖像上看來十字交叉道會像一個分叉的樹枝一樣從前方道路上出來,更糟糕的情況是在前方正確道路消失的地方恰好被斜的十字道路的一邊給補上了。若采用這種方法,則很容易誤將道路確定到十字叉的一邊上,使得小車的轉向錯誤。為了濾除這種情況,我們根據它的特點采用了很多的濾波方法。

            首先,在前方道路與十字叉的交界點,黑點的個數會突然增加很多。在一般情況下,隨著距離的增加黑點的個數會慢慢減少,不會出現(xiàn)突然增多的情況。因此我們可以用上一行的黑點數,估計出下一行的黑點數,如果超出了我們的估計值,我們就認為它是不合理的。

            其次可以根據賽道不突變的原則,來濾除雜點。我們可以根據前面兩行的變化情況預測出下一行的賽道變化范圍,利用它來濾除雜點。但是在實際的應用中下一行的變化范圍預測總是不是很理想。因此當賽車經過90度彎時,賽道的變化在小車看來變化是十分巨大的幾乎和斜看十字交叉道沒有多大的區(qū)別。有時會將90度彎濾除,造成小車直接沖出跑道。

            最后,我們還可以通過分別從左至右與從右至左的方法來所搜賽道的左右邊界點,若發(fā)現(xiàn)兩者不一致,則可以采取取變化較小的點作為賽道來處理。

            


          上一頁 1 2 3 下一頁

          關鍵詞: 攝像頭 AD黑線 提取算法

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();