做網(wǎng)站賣廣告位賺錢嗎百度站長工具平臺登錄
本項目使用FPGA設(shè)計出SOBEL圖像邊緣檢測器,通過分析項目在使用過程中的工作原理和相關(guān)軟硬件設(shè)計進(jìn)行分析詳細(xì)介紹SOBEL圖像邊緣檢測器的設(shè)計。
資料獲取可聯(lián)系wechat 號:comprehensivable
邊緣可定義為圖像中灰度發(fā)生急劇變化的區(qū)域邊界,它是圖像最基本的特征。邊緣檢測主要就是(圖像的)灰度變化的度量、檢測和定位,它是圖像分析和模式識別的主要特征提取手段,它在計算機視覺、圖像分析等應(yīng)用中起著重要的作用,是圖像分析與處理中研究的熱點問題。在過去的20年里產(chǎn)生了許多邊緣檢測器,而Sobel算法只涉及加法操作,但卻可以得到很好的劃分效果,因而是圖像處理系統(tǒng)中最常用的邊緣檢測算法。
Sobel算法包括帶4個3×3掩碼的輸入圖像數(shù)據(jù),即Sobel算子,它設(shè)置權(quán)重來檢測水平、垂直、左對角、右對角各個不同方向上密度幅度的不同。這個過程通常被稱為過濾。我們來看像素窗口(3×3),如圖2所示。水平、垂直、左對角、右對角各圖像方向上密度幅度的變化可以用如下算子進(jìn)行計算:
H=(Q0+2Q3+Q6)-(Q2+2Q5+Q8);V=(Q0+2Q1+Q2)-(Q6+2Q7+Q8);
DR=(Q1+2Q0+Q3)-(Q5+2Q8+Q7);DL=(Q1+2Q2+Q5)-(Q3+2Q6+Q7);
H,V,DL,DR這四個參數(shù)用于計算梯度大小和方向。
對梯度大小的一個普遍估計值為:Magnitude=Max(H,V,DR,DL)
H=(Q0+2Q3+Q6)-(Q2+2Q5+Q8);V=(Q0+2Q1+Q2)-(Q6+2Q7+Q8);
DR=(Q1+2Q0+Q3)-(Q5+2Q8+Q7);DL=(Q1+2Q2+Q5)-(Q3+2Q6+Q7);
Q0 | Q3 | Q6 |
Q1 | [i,j] | Q7 |
Q2 | Q5 | Q8 |
H,V,DL,DR這四個參數(shù)用于計算梯度大小和方向。????????????????
我們通過對圖像灰度作直方圖分析后,便可以給出區(qū)分度閥值
Threshold,區(qū)分度閥值往往要借助一定的經(jīng)驗并需要反復(fù)調(diào)整。如果Magnitude大于Threshold,則該像素被聲明為邊界像素,否則為一般像素。
本課題就是要求使用LPM兆功能塊設(shè)計和VHDL程序設(shè)計相結(jié)合的方式或全部采用VHDL程序設(shè)計方式,用FPGA/CPLD實現(xiàn)Sobel算法。
圖1.1為一個DSP+FPGA/CPLD的圖像處理系統(tǒng)的總體框圖,本課題就是設(shè)計圖中的圖像邊緣檢測協(xié)處理器,并且能夠繪畫出圖形邊緣如圖1.2所示;
圖1.1? DSP+FPGA /CPLD 圖像處理系統(tǒng)的組成框圖
圖1.2? 實驗效果
由于Sobel算法只涉及加法操作,但卻可以得到很好的劃分效果,因而是圖像處理系統(tǒng)中最常用的邊緣檢測算法。
Sobel算法包括帶4個3×3掩碼的輸入圖像數(shù)據(jù),即Sobel算子:
H=(Q0+2Q3+Q6)-(Q2+2Q5+Q8);
V=(Q0+2Q1+Q2)-(Q6+2Q7+Q8);
DR=(Q1+2Q0+Q3)-(Q5+2Q8+Q7);
DL=(Q1+2Q2+Q5)-(Q3+2Q6+Q7);
H,V,DL,DR這四個參數(shù)用于計算 水平、垂直、左對角、右對角各個不同方向的梯度大小和方向(該過程稱之為過濾)。
梯度大小的估計公式:Magnitude=Max(H,V,DR,DL)。
邊緣的判定:如果Magnitude>Threshold,則該像素為邊界像素,否則為一般像素。處理像素端見圖1.3所示;
Sobel的濾波函數(shù)為:
H=(Q0+2Q3+Q6)-(Q2+2Q5+Q8);
V=(Q0+2Q1+Q2)-(Q6+2Q7+Q8);
DR=(Q1+2Q0+Q3)-(Q5+2Q8+Q7);
DL=(Q1+2Q2+Q5)-(Q3+2Q6+Q7);
Magnitude=Max(H,V,DR,DL)
為了減少設(shè)計的復(fù)雜度,可將Sobel的濾波函數(shù)中的乘法運算可以改寫成加法運算:
H=(Q0+Q3+Q3+Q6)-(Q2+Q5+Q5+Q8);
V=(Q0+Q1+Q1+Q2)-(Q6+Q7+Q7+Q8);
DR=(Q1+Q0+Q0+Q3)-(Q5+Q8+Q8+Q7);
DL=(Q1+Q2+Q2+Q5)-(Q3+Q6+Q6+Q7);
對于數(shù)據(jù)的處理,我們估算一下分別使用單片機、DSP、CPLD/FPGA所需的時間。
(1)如果使用12M的單片機:完成一次Sobel濾波操作需要的時間至少為:(24×2+20+2×3+2)×1us=72us。對于一幅600×800像素的圖像,總共的時間為:600×800×72us=32s。
(2)若使用40M六級流水的DSP,他們的處理時間大概為 32s/24=1.4s。
(3)如果使用CPLD/FPGA進(jìn)行自行設(shè)計,通過采用并行流水線技術(shù)假設(shè)使用50M的系統(tǒng)時鐘,處理完一個像素點的時間為 4×1/(50M)=80ns,處理完一幀圖像的時間為 800×600×80ns=38.4ms,結(jié)果處理速度比DSP高了大約兩個數(shù)量級,從上可以看出,使用CPLD/FPGA進(jìn)行自行設(shè)計有關(guān)圖像處理模塊,對整個系統(tǒng)速度的改善是很非常明顯的。
通過使用VHDL代碼設(shè)計出對應(yīng)的模塊,以下為部分RTL圖;?
UPDATE的RTL圖?
讀取的RTL圖?
由于本次實驗要求只需要在軟件上顯示圖像并且進(jìn)行邊緣化即可,無需在硬件在顯示出像素的數(shù)據(jù),整體RTL圖見圖4.1所示,主要包括倆個模塊,即SOBEL算法的部分和數(shù)據(jù)輸出的部分,在SOBEL算法內(nèi)部又包括了許多的模塊,從而達(dá)到我們需要設(shè)計的目的。
編譯完成后調(diào)用ALTERA-MODELSIM仿真如下圖4.4所示;
?圖4.4 調(diào)用ALTERA-MODELSIM仿真
總結(jié):
對SOBEL算法有了初步的了解,并且本次SOBEL算法對圖形邊緣檢測能夠很好的應(yīng)用,對嵌入式的功能有了更多的知曉,也明白VHDL語言的強大之處;
本次實驗網(wǎng)上資料較多,要求使用matalab軟件和EDA仿真等軟件配合使用,在網(wǎng)絡(luò)上尋找相關(guān)資料并且去深入了解,對于我的自學(xué)能力有了進(jìn)一步的提高。