图像sobel梯度详细计算过程_视频处理之Sobel【附源码】
欲觀原文,請君移步
圖像邊緣是圖像最基本的特征,所謂邊緣(Edge) 是指圖像局部特性的不連續性。灰度或結構等信息的突變處稱之為邊緣。例如,灰度級的突變、顏色的突變,、紋理結構的突變等。這些突變會導致梯度很大。圖像的梯度可以用一階導數和二階偏導數來求解。但是圖像以矩陣的形式存儲的,不能像數學理論中對直線或者曲線求導一樣,對一幅圖像的求導相當于對一個平面、曲面求導。對圖像的操作,我們采用模板對原圖像進行卷積運算,從而達到我們想要的效果。而獲取一幅圖像的梯度就轉化為:模板(Roberts、Prewitt、Sobel、Lapacian算子)對原圖像進行卷積。本文主要描述Sobel算子的實現原理和實現過程。
Sobel算子簡介
Sobel算子 是一種用于邊緣檢測的離散微分算子,它結合了高斯平滑和微分求導。該算子用于計算圖像明暗程度近似值,根據圖像邊緣旁邊明暗程度把該區域內超過某個數的特定點記為邊緣。Sobel算子在Prewitt算子的基礎上增加了權重的概念,認為相鄰點的距離遠近對當前像素點的影響是不同的,距離越近的像素點對應當前像素的影響越大,從而實現圖像銳化并突出邊緣輪廓。
Sobel算子根據像素點上下、左右鄰點灰度加權差,在邊緣處達到極值這一現象檢測邊緣。對噪聲具有平滑作用,提供較為精確的邊緣方向信息。因為Sobel算子結合了高斯平滑和微分求導(分化),因此結果會具有更多的抗噪性,當對精度要求不是很高時,Sobel算子是一種較為常用的邊緣檢測方法。Sobel算子的邊緣定位更準確,常用于噪聲較多、灰度漸變的圖像。
Sober算法基礎
其算法模板如下面的公式所示,其中dx表示水平方向,dy表示垂直方向。
用數學公式表示如下
圖像的每一個像素的橫向及縱向梯度近似值可用以下的公式結合,來計算梯度的大小。
FPGA實現
硬件框圖如下
如下圖所示,首先需要緩存兩行圖像用于計算(第三行可以用寄存器存儲一個像素即可計算)。
然后加入sobel算子模塊將所得到的9個像素按照sobel算子進行運算。
接著把輸出的Gx和Gy做平方,所以需要一個乘法器模塊。
然后將Gx,Gy和Gxy(分別為水平梯度,垂直梯度,水平和垂直梯度)做平方根輸出。
最后再用一個輸出模塊來整合整個視頻流,可以選擇閾值和邊緣模式。
緩存模塊
小編是一個懶人,能不寫代碼就盡量不寫代碼,既然要緩存了,首先看看有沒有IP,查看了一下based shift register 這個IP,發現最大深度只有1088,所以沒辦法,小編只能自己寫了。
為了考慮后期還會繼續使用這種緩存的應用場景,小編在這個模塊使用RAM的原語進行設計,因為是基于視頻的應用,所以設置的緩存深度為1行,如果需要緩存多行,把這個模塊級聯即可。
仿真結果如下圖
梯度計算模塊
按照sobel算子給出源碼如下
// GX = (A13+2 *A23 + A33 ) - (A11 +2 *A21 + A31 )// GY = (A31+2* A32 + A33 ) - (A11 +2* A12 + A13 )// | G | =(GX^2+ GY^2)^1/2always @ (posedge clk) beginif(pixel_en_d3)beginGX_right <=(A13+2 *A23 + A33 ) ;GX_left <=(A11 +2 *A21 + A31);endif(pixel_en_d3)beginGY_up <=(A31+2* A32 + A33 );GY_down <=(A11 +2* A12 + A13 );endadd_en<=pixel_en_d3;end always @ (posedge clk) beginif(add_en)beginif(GX_right>GX_left) GX<=GX_right-GX_left;else GX<=GX_left-GX_right;if(GY_up>GY_down) GY<=GY_up-GY_down;else GY<=GY_down-GY_up;endGX_GY_valid <= add_en;end乘法器模塊
使用Multiplier IP:輸入兩個乘法因子為無符號數8bit
配置其latency為3 clock cycle(便于時序收斂)
平方根模塊
計算平方根,這里用到了Cordic IP,如下圖所示選擇實現功能為:Square Root
選擇Data Fomat為unsigned interger,輸入的值限制到(0,2^n)
選擇輸入位寬為24bit。
實現結果
仿真程序層次圖
仿真結果
實現結果
調節閾值視頻鏈接
調節閾值https://v.qq.com/x/page/g0969ko1uts.html
參考鏈接
https://www.jianshu.com/p/bed4ffe996a1
https://blog.csdn.net/zaishuiyifangxym/article/details/89840396
資料獲取
總結
以上是生活随笔為你收集整理的图像sobel梯度详细计算过程_视频处理之Sobel【附源码】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java xml数据解析_java xm
- 下一篇: 我从小米裸辞后进Shopee了...