一。 Sobel簡(jiǎn)介
一句話可以概況為,分別求水平與豎直梯度,然后求平方和再開方(近似的話就直接求絕對(duì)值之和),最后與設(shè)定的閾值進(jìn)行比較,大于的話就賦值為0,小于的話就賦值為255
x方向梯度dx的求法:3*3的圖像矩陣與下面的矩陣在對(duì)應(yīng)位置相乘然后相加
y方向梯度dy的求法:同上
二。 代碼實(shí)現(xiàn)
這里采用近似計(jì)算G = |dx| + |dy|,正負(fù)號(hào)分開計(jì)算,然后用大的數(shù)減去小的數(shù)
reg[10:0] Sobel_px ,Sobel_nx;reg[10:0] Sobel_py ,Sobel_ny;
wire[10:0] Sobel_x;wire[10:0] Sobel_y;
wire[7:0] Sobel_data;
//x方向的梯度assign Sobel_x = (Sobel_px 》 Sobel_nx) ? (Sobel_px - Sobel_nx) : (Sobel_nx - Sobel_px);//y方向的梯度assign Sobel_y = (Sobel_py 》 Sobel_ny) ? (Sobel_py - Sobel_ny) : (Sobel_ny - Sobel_py);assign Sobel_data = (Sobel_x + Sobel_y 》 ‘d135) ? ’d0 : ‘d255;
always@(posedge clk_9M or negedge rst)begin if(rst == 1’b0) begin Sobel_px 《= ‘d0; Sobel_nx 《= ’d0; end else if(cur_x 》= ‘d100 && cur_x 《= ’d199 && cur_y 》= ‘d50) begin Sobel_nx 《= data_line_11 + data_line_21 + data_line_21 + data_line_31; Sobel_px 《= data_line_13 + data_line_23 + data_line_23 + data_line_33; end else begin Sobel_nx 《= ’d0; Sobel_px 《= ‘d0; endend
always@(posedge clk_9M or negedge rst)begin if(rst == 1’b0) begin Sobel_py 《= ‘d0; Sobel_ny 《= ’d0; end else if(cur_x 》= ‘d100 && cur_x 《= ’d199 && cur_y 》= ‘d50) begin Sobel_py 《= data_line_11 + data_line_12 + data_line_12 + data_line_13; Sobel_ny 《= data_line_31 + data_line_32 + data_line_32+ data_line_33; end else begin Sobel_ny 《= ’d0; Sobel_py 《= ‘d0; endend
編輯:lyn
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
603044 -
sobel
+關(guān)注
關(guān)注
0文章
12瀏覽量
7904
原文標(biāo)題:FPGA實(shí)現(xiàn)Sobel邊緣檢測(cè)
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論