由前面所述可知,Sobel的濾波函數(shù)為
H=(Q0+2Q3+Q6)-(Q2+2Q5+Q8);V=(Q0+2Q1+Q2)—(Q6+2Q7+Q8)
DR=(Q1+2Q0+Q3)-(Q5+2QS+Q7);DL=(Q1+2Q2+Q5)—(Q3+2Q6+Q7)
Magnitude=Max(H,V, DR,DL)
為了減少設計的復雜度,上面式子中的乘法運算可以改寫成加法運算:
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所需的時間。
如果使用12 MB的單片機,加法運算需要執(zhí)行2次,加法的中間結果寄存20次,大小比較三次,比較中間結果寄存2次,51單片機內(nèi)的加法需要兩個指令周期,比較需要兩個指令周期。這樣,完成一次Sobel濾波操作需要的時間至少為:(24×2+20+2×3+2)×1 us=72uS°對于一幅600×800像素的圖像,總共的時間為:600×800×72uS=32s。
若使用40 MB六級流水的DSP,它們的處理時間大概為:32s/24=1.4s。
如果使用CPLD/FPGA設計,首先,H、V、DR、DL四個方向的濾波可以全部并行,同時,每一個方向的濾波函數(shù)可以采用一級四路并行加法器與一級雙路并行加法器串連。這樣一來,算上兩級串行比較器,實際上整個系統(tǒng)只有四級串行結構,假設使用50 M的系統(tǒng)時鐘,則處理完一個像素點的時間為4×1/(50 M)=80 ns,處理完一幀圖像的時間為800×600×80 ns=38.4 ms,結果處理速度比DSP高了大約兩個數(shù)量級。
從上可以看出,使用CPLD`FPGA設計有關圖像處理模塊,對整個系統(tǒng)速度的改善是非常明顯的。
歡迎轉(zhuǎn)載,信息來源維庫電子市場網(wǎng)(www.dzsc.com)
來源:ks990次