我一直都在這里分享計算機基礎知識,比如計算機組成原理、數據結構與算法、計算機網絡和操作系統等。
不過偶爾我也想寫一下其他的話題,今天就想和你聊聊圖像處理的相關知識,因為工作中會用到圖像處理,所以就研究了一下。廢話不多說,先扔一個目錄在這:
**圖像卷積
圖像梯度
邊緣提取
-
Prewitt算子
-
Sobel算子
-
Laplacian算子
平滑去噪
-
高斯濾波
-
均值濾波
-
中值濾波**
文章有點長,看不完可以先收藏。
01
圖像卷積
這里有一張圖像 f(x,y) 和一個kernel核 w(a,b)。通過核對圖像進行卷積
如下圖所示:
這是要做什么呢?先來看看卷積操作是什么意思。
卷積操作就是對于圖像 f(x,y) 中的每個像素,將其作為中心像素,計算它及其鄰域像素和 kernel核 w(a,b) 對應位置元素的乘積,然后把結果相加到一起,得到的值就作為該中心像素的新值,這樣就完成了一次卷積運算。
如上圖所示,原圖像中的 1 經過卷積操作,得到新值 -8。
然后將 kernel 向下或向左滑動一位繼續計算其他像素的新值,直到遍歷完整個圖像。
用公式表示卷積運算:
還有一個和類似的概念是 互相關 (Cross-correlation),流程和卷積類似,區別在于卷積在運算前需要把kernel圍繞中心旋轉180度(即做一次上下翻轉(filp)和一次左右翻轉),而互相關則不需要。
互相關的公式如下:
互相關主要用于計算兩個圖像的相關性(主要用于圖像配準)。因為我們平時接觸的卷積核大都是關于x軸和y軸對稱的,所以卷積和互相關在這種情況下沒什么區別。
中心像素在圖像的邊緣時,沒有足夠的像素與kernel進行運算,有兩個方法來解決:
- 最外面的一圈像素不進行計算,如果圖像非常大,丟掉圖像邊緣的一圈對結果影響不大。
- 比較好的辦法是人為地在圖像四周插入一圈像素(比如最近鄰插值)。
圖像的處理結果可能超出值域范圍(0-255),則小于0的值視作0,大于255的視作255就行了。
這里的核是什么意思,卷積到底有什么用?別著急,接下來會慢慢介紹。
02
圖像梯度
梯度的方向是函數 f(x,y) 變化最快的方向,當圖像中存在邊緣時,有一些相鄰像素的灰度值變化比較大,即一定有較大的梯度值。所以可以求圖像的梯度來確定圖像的邊緣。
分別對圖像按照x方向和y方向進行求偏導,得到x梯度圖和y梯度圖。梯度是矢量,存在幅值和方向,下面這個公式表示了圖像的梯度:
梯度方向會取絕對值,因此得到的角度范圍是 [0,180°]。
導數的含義就是計算像素灰度值的變化率,對于離散圖像而言,在圖像上使用一階差分來計算相鄰像素之間的差值,從而得到圖像的梯度。
上面是對斜坡區域進行求導,斜坡區域是圖像中最常見的區域,因為圖片中的大部分邊緣都不是突變的而是漸變的。
對于斜坡區域,一階導數將斜坡變成了平坦區域即變成了粗線,二階導數將斜坡變成了兩條中間存在平臺區域的細線。
關于一階和二階導數總結如下:
- 一階導數在圖像中產生較粗的邊緣
- 二階導數對細節更敏感,如細線、噪聲等,它提取出來的邊緣更細更強(sharp)
- 二階導數在灰度斜坡和灰度臺階過度處會產生雙邊沿響應
- 二階導數的符號可以確定邊緣的過渡是從亮到暗還是從暗到亮
- 根據導數提取邊緣之前最好對圖像做平滑處理,因為導數對噪聲比較敏感,尤其是二階導數
- 二階導數會強化邊緣和其他區域的對比度,但是也會將灰度平滑區域的噪聲進行放大,使其更明顯
-
圖像處理
+關注
關注
27文章
1295瀏覽量
56814 -
計算機
+關注
關注
19文章
7520瀏覽量
88265
發布評論請先 登錄
相關推薦
評論