日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像sobel梯度详细计算过程_视频处理之Sobel【附源码】

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像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【附源码】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。