图像sobel梯度详细计算过程_数字图像处理(第十章)
- 點、線、邊緣檢測
背景知識。書中主要介紹了圖像的一階導數與二階導數,這個之前的文章中有過介紹這里在復習一遍。對于函數
,對于點 在x方向的一階偏導為: ,二階偏導為:之后書中總結了一階導與二階導對于圖像求取邊緣的結論:
孤立點檢測。圖像中孤立點檢測使用二階梯度。公式如下:
(擴展:用于邊緣檢測的sobel算子屬于一階梯度。)
拓展一下拉普拉斯,包含像素
四個對角,那么可以使用如下模板。線檢測
線檢測同樣使用拉普拉斯變換,不過不同的方向使用不同的二階偏導。如下圖是不同方向直線檢測模板。
例如水平方向的檢測模板,使用y方向的二階偏導。
- 基本邊緣檢測
選擇梯度作為在圖像
的 處邊緣的強度和方向。梯度表示如下: ,沿梯度方向灰度變化率最大。梯度大小:
梯度方向:沿
軸的夾角: ,梯度表示如下圖。任意點
處邊緣的方向與該點處梯度向量的方向正交。梯度向量有時被稱為邊緣法線。當向量通過除以其幅值而歸一化為單位向量,結果稱為邊緣單位法線。
- 梯度算子
如下圖幾種常用梯度算子:
Prewitt算子與Sobel算子的區別在于Sobel算子的中心元素是前者的2倍,這提供了平滑的作用,中心元素2倍于兩邊的元素,這可以看作高斯分布的簡化版,如果模板再大些,可以使用高斯分布初始化各個模板中各個系數。Prewitt與Sobel具有各項同性的特點。兩種算子對角的模板如下圖。
- 更先進的邊緣檢測技術
Marr-Hildreth邊緣檢測器。
高斯拉普拉斯函數本質上是求高斯函數的二階梯度,具體公式如下圖:
拉普拉斯模板可以將模板的
坐標帶入到公式中,調整模板的系數都是整數,保證系數和為0.零交叉點:一階導數的局部最大值對應二階導數的零交叉點(zero crossing),于是通過找出圖像強度的二階導數的零交叉點就能找到精確的邊緣點。Laplacian算子是常用的二階導數算子。
- canny算子
步驟:
主要介紹3,4步驟。第3步將每一個待處理的邊緣像素方向分為8份,一共有水平、垂直、-45、+45四個方向。如下圖。
在圖a中,假設現在有一水平邊緣,那么該邊緣的法線方向一定穿過p2,p8(梯度方向),所以比較p5與p2、p8的幅值大小,如果p5均大于兩者,那么保留,否則抑制為0.
步驟4設置兩個閾值,大閾值、小閾值,梯度幅值大于大閾值的保留、小于小閾值的置零,中間的幅值如果與大閾值相鄰,那么保留。
- 邊緣連接與邊界檢測
前面已經講過可以使用一階梯度算子得到邊緣的梯度強度以及方向,由于其他因素的干擾,邊緣點是不連續的。那么設計算法將相似邊緣點進行連接,以點
為中心的八鄰域內的點 ,確定邊緣相似有兩個性質:梯度強度差小于閾值
;梯度方向差小于閾值
;步驟2中
表示角度 左右 范圍。步驟4的意思是旋轉圖像,再執行步驟3的掃描,將掃描結果旋轉回來。
書中舉了車牌識別的例子,如下圖。
分別連接水平豎直的邊緣并合并,根據車牌的長寬比定位車牌位置(可以計算連通區域)。
- 使用多邊形近似連接邊緣
- 使用霍夫變換找直線
對于二維平面的直線
,可以寫成參數形式: ,那么對于一條直線來說,在參數空間對應于一點,對于一點來說,參數空間對應于一條直線。具體如下圖:那么對于圖a中直線對應于b圖中的點
,那么圖a中直線上的點對應于b圖中經過點 的直線。但是在實際使用過程中,對于逼近垂直方向的直線來說,其斜率無限大,計算不方便產生較大誤差,所以使用直線法線表示方法。其中
是直線與x軸的夾角, 是原點到直線的距離,那么在參數 空間中,直線上每一點都是一條正弦曲線,這些曲線交于的一點就是該直線。如下圖。圖c是
平面的累加單元,其中兩個參數的范圍為: , . 是對角線之間的距離。使用方法是對于 平面上前景點求其在 平面上的曲線,并在 平面的累加單元上畫出并累加,統計累加點數多的 坐標,該坐標是判斷出的直線。霍夫變換法還可拓展到曲線的檢測。
- 閾值處理
影響圖像二值化分割的因素:噪聲、光照不均勻、物體表面反射光線不均勻。
存在噪聲可以使用一些平滑算法、又由于噪聲多數為頻率較高的分量,可以使用低通濾波處理。光照不均勻可以使用同態濾波,同態濾波假設不均勻光照是低頻分量,那么轉換到頻率域,抑制低頻,增強高頻;可以使用局部閾值進行處理;可以使用頂帽變換處理,先使用與前景物體大小類似結構元去掉物體留下背景,使用剩余的背景均勻原背景,最后閾值分割。
- Otus
圖像灰度被分類兩類,該算法選擇分類邊界閾值
,使用的方法是計算最大類間方差,對于[0,255]的灰度也就是說 取多少,類間方差最大。那么將問題轉化為如何求解類間方差:其中
是兩類像素的概率, 是兩類像素的平均灰度值, 是全局灰度值。- 使用邊緣檢測改善閾值處理效果
書中介紹了一種方法,該方法用于對抗噪聲的干擾,主要意思是對有噪聲污染的待處理圖像進行邊緣檢測,對檢測后的圖像進行二值化,使用二值化后的圖像作為掩膜,對掩膜中的圖像進行閾值化例如Otus。下面兩個例子如下圖。
- 多閾值處理
類似OTUS算法,只不過OTUS是計算一個閾值,分成兩類,多閾值可以計算多個閾值。
- 可變閾值處理
這一小結所講算法也是針對于非均勻光照這類問題而提出的,再次總結以下前面對于非均勻光照使用的方法,可以使用同態濾波或頂帽變換進行處理。
分塊閾值
將圖像分成小份,每個小份進行單獨閾值處理,該方法基于每個小塊的灰度是均勻的。
使用局部灰度標準差、局部灰度均值來確定局部閾值,公式如下:
其中
表示標準差, 表示均值。 是常數權值。移動平均閾值
能夠穩定有效處理光照不均勻的文本圖像,和一些受正弦波污染的圖像。
- 多變量閾值處理
對于灰度圖像,每一個像素是單通道數值,那么灰度圖像是單變量的圖像,對于RGB彩色圖像,每一個像素是3通道數值,那么彩色圖像是多變量的圖像。灰度圖像閾值分割是通過灰度值距離進行分割,所以引申到彩色圖像,是通過彩色像素值距離進行分割,彩色像素是多通道,那么可以使用多變量距離進行區分。例如:微紅色像素值向量為
,那么對于待分割圖像的每一個像素 ,它們之間的距離可以使用歐式距離來表示:如果考慮像素之間的關系,可以使用馬氏距離:
其中
是 的協方差矩陣,當 時,馬氏距離轉換為歐式距離,表示各個通道之間無關。- 區域生長
區域生長的方法的原理與種子填充算法類似,首先需要種子點,根據相似度(灰度、紋理等)將不同區域進行合并進而分割。
- 分裂合并
按照某一規則對一副圖像進行細分,直到每一細分區域都滿足該規則為止,在對細分后 的區域進行合并。
上面兩個算法原理比較好理解,區域生長實質上是分裂合并的合并步驟。
- 分水嶺分割
- 運動過程中的分割
空間域分析
使用運動視頻中每一幀之間的像素差值來作為運動變化的證據進行分析。兩幅圖像之間的差值圖像定義如下:
累計運動圖像。
總結
以上是生活随笔為你收集整理的图像sobel梯度详细计算过程_数字图像处理(第十章)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可以搜python编程答案的软件_pyt
- 下一篇: python调用webservice接口