陽光算法,其實應該叫灰度圖像處理算法才對;叶葓D像轉二值化圖像,具體步驟什么的,不再介紹,不懂得可以去自學《數(shù)字圖像處理》和matlab。
OV7725硬件二值化與MT9V034比較
OV7725硬件二值化攝像頭
(1)基本原理:
當掃描到某點時,該點處圖像的灰度值被攝像頭中的圖像傳感芯片換成與灰度值對應的電壓值,不同的電壓值經過硬件二值化電路的處理轉化成高低電壓,這樣就完成電壓值的二值化處理(高低電壓)。
最后將圖像信息數(shù)據(jù)通過數(shù)據(jù)端口輸出到控制器。
(2)優(yōu)勢
①由硬件自動進行二值化,節(jié)約MCU運算時間。
②二值化后處理簡單,因為0就是黑,1就是白
③一次傳輸8個像素,一個字節(jié)為8個像素,有效降低像素時鐘
(3)劣勢
由于二值化后信息量少,導致在復雜的場景可能無法正常判斷與識別。
2.灰度攝像頭MT9V034
(1)MT9V034優(yōu)勢:
①全局快門是MT9V034最大的優(yōu)勢,可以在MT9V034 PDF中查看全局快門與卷簾快門的區(qū)別(OV7725為卷簾快門)
②攝像頭輸出灰度圖像,可以用于實現(xiàn)更加復雜的圖像識別。因為包含的信息量較多
③圖像輸出的速度較快,例如設置FPS為 60,分辨率為120*188,圖像輸出的時間只有3MS左右,有更多的時間去處理。
(2)劣勢
與二值化比較就是信息量比較大,使得運算量也較大,同時處理起來需要更多的知識但是由于現(xiàn)在比賽的環(huán)境越來越復雜,簡單的攝像頭已經開始難以滿意要求,因為慢慢的這點已經變得不再是缺點了
3. DMA傳輸
DMA轉移數(shù)據(jù)程序解析:當攝像頭采集到圖像時,發(fā)出場中斷信號,控制器捕捉到這一場中斷信號,觸發(fā)中斷,進入場中斷服務程序,場中斷標志置1。
在場中斷服務程序中,初始化 DMA傳輸,并使能DMA傳輸。
之后控制器捕捉PCLK時鐘信號,PCLK時鐘信號為脈沖方波,它的每一個上升沿都將觸發(fā)一次DMA傳輸,每次DMA傳輸將一個字節(jié)的圖像信息送入控制器寄存器中,當觸發(fā)n 次后停止DMA傳輸。
DMA傳輸停止時觸發(fā)中斷程進入中斷復位函數(shù),在中斷復位函數(shù)里禁止DMA傳輸關閉場中斷,同時標記圖像采集完畢。
這樣就完成一場圖像信息的采集。
灰度圖像處理
提取到圖像數(shù)據(jù)后,需要對CMOS傳感器采集的數(shù)據(jù)進行處理,把路況提取出來,這時需要確定圖像閾值的大小。
智能車采集到的圖像的灰度值是0-255,數(shù)值越高表示接近白色,數(shù)值越低接近黑線。
如果像素點灰度值小于某一閾值,則確定該點為黑點,否則,確定其為白點。但現(xiàn)在由于加入了陽光,所以綜合考慮陽光的影響。
確定闕值的方法有很多,這里介紹自動閾值法(大津(Ostu)法)。
(1)自動閾值法基本原理
是以圖像的灰度直方圖為依據(jù),以目標和背景的類間方差最大為閾值選取準則,綜合考慮了像素鄰域以及圖像整體灰度分布等特征關系。
由直方統(tǒng)計圖確定被閾值t分離后的區(qū)域l、區(qū)域⒉所占整個圖像的面積比,以及整幅圖像、區(qū)域1、區(qū)域2的平均灰度。
(2)介紹一下灰度直方圖
灰度直方圖:描述圖像中每種灰度級像素的個數(shù),反映圖像中每種灰度出現(xiàn)的頻率,橫坐標是灰度級,縱坐標是灰度級出現(xiàn)的頻率。
雙峰直方圖是指直方圖中出現(xiàn)兩個峰,也就是說有兩個頻率較高的灰度級,一個在較低灰度級部分,一個在較高灰度級部分。
以兩幅尺寸為256*256圖片為例,一幅是調車時的實際場地圖像,一幅是純藍白賽道圖。
用MATLAB統(tǒng)計灰度直方圖
灰度圖
灰度直方圖
由此實際賽道和理想賽道的灰度差異,智能車圖像直方圖就是一個多峰灰度圖。
(3)自動閾值法基本步驟
(4)閾值分割完圖像數(shù)組后,便是對其二值化,因為處理器只能識別二進數(shù)О和1,因此小于或等于闕值的像素可以設定為黑色,以灰度值0表示,大于閾值的像素設定為白色,以灰度值1表示。
如果有連續(xù)均勻地灰度值,那么可以得到相當好的二值化圖像。
MATLAB編程對上述測試圖片二值化
圖像不同部分灰度差別較大,勢必造成大津法閾值分割不準確。圖片一運行時間為0.017821 秒,圖片二為0.013891秒。
閾值不準確的原因﹐在很大一部分上是由于光照不均引起的圖像噪聲所致,一幅完美的圖像,直方圖應是谷寬雙峰的。
一幅較好的圖像,代表藍色底布和白色賽道的雙峰應該是最明顯的,而圖片一的直方圖是三峰,而且前兩峰靠的很近,高度也近似,這就引入了極大的噪聲。因此我們需要濾除噪聲。
采用最簡單的均值濾波,得到以下圖像
可見最簡單的均值濾波并不能滿足濾波要求,但是均值濾波能很好地去掉由于地面反射引起的光斑。
中值濾波以后的圖像
中值濾波并沒有去掉光斑,但是將光斑區(qū)域明顯的聚集起來。濾波方法對噪聲是否有用,要看噪聲的類型,上述中值濾波和均值濾波呈現(xiàn)了不同的效果,說明含有的噪聲至少有高斯噪聲和椒鹽噪聲兩類。
綜合考慮均值濾波和中值濾波,得到以下圖像
(5)上述提到了三峰圖像,而我們采用的是單闕值分割,即只實現(xiàn)了兩峰之間的分割,第三峰被忽視了,因此可以考慮多峰閾值分割。
具體如下:
①使用OSTU求出第一個分割閾值t1,將小于等于t1的灰度值設為t1,其他保持不變,得到新圖像。
②再度適用OSTU得到第二個閾值t2、將圖像中像素灰度值小于等于t2的置為0,大于的置為255,得到所要處理的圖像。
運用多峰闕值法,得到如下圖像:
步驟一以后
由此可知,第一次得到的閾值是前兩個峰之間的閾值。
步驟二以后
多閾值分割法的效果顯然好于單閥值,而且運行時間為0.037678秒,時間上比起單閾值分割法多了0.02秒。
加入中值濾波得到的圖像
完全可以滿足尋線要求,但是時間上為0.112160秒,可見中值濾波很耗費時間。
(6)對于陽光的濾除,模型優(yōu)化上,以信標車為例
模糊OSTU
大津算法的閾值準確度較高,但是遇見多峰圖像時,大津閾值法的分割可能無法滿足要求,需要判斷峰的數(shù)目,然后多次使用大津算法,這種情況下運算量較大。
對智能車賽道來講,究其原因,是因為藍色底布反光呈現(xiàn)的灰度值與白色賽道灰度值接近,使得圖像灰度值呈現(xiàn)模糊化的特點,因此可以運用模糊數(shù)學的方法,在大津法的基礎上對其進行改進。
1、模糊大津閾值法基本原理
將賽道圖像灰度值分為三類,第一類A 藍色底布,選取較低的一部分灰度值L2,第二類B反光區(qū)域,選取中間的一部分灰度值Ll-L4,第三類C白色賽道,選取較高的一部分灰度值L3。
圖像被分割為三個區(qū)域ABC,圖像的每一個灰度值都有一個隸屬度或兩個隸屬度,比如L2點有兩個隸屬度u(L2)和u,(L2)且u(L2)+ ug(L2)=1,每個區(qū)域就相當于一個模糊子集。
2、模糊大津閾值法基本步驟
設圖像灰度直方圖函數(shù)為h(k),h(k)表示當灰度值為k時像素點的個數(shù),如果整幅圖像的像素數(shù)為N,那么在大津閾值法基礎上修改的各個區(qū)域的像素面積比為︰
由于區(qū)域劃分受到L1,L2,L3,L4的影響,通過遍歷灰度直方圖的谷點,求出均值谷點作為灰度直方圖分割點,分割點左方為α.區(qū)域,右方為β區(qū)域,取α區(qū)域頻率最高灰度值gray1 ,β區(qū)域頻率灰度最高值gray2 。
Ll = gray1
L2= gray1+20
L4= grav 2
L3滑動取值,比較不同L3下的類問最大方差,當類問最大方差最大時,取闕值為
3、模糊大津閾值法MATLAB圖像處理
使用MATLAB編程,得到如下圖像。
五、方法比較
在反射光較強時,對不加任何濾波的OSTU、多闕值OSTU、模糊OSTU進行比較
沒有反射光的圖像,不加任何濾波進行比較