---
# System prepended metadata

title: Mask(Kernel Map)(Filter)
tags: [SBD]

---

###### tags: `SBD`
# Mask(Kernel Map)(Filter)

# 補充
## Filter 
- 傳統的方式是把filter寫死
- 方法不只一種
- 目的是擴大想要的訊息，縮小不需要的資訊

#### 用面罩 ( Mask )(Kernel Map)(Filter) 對影像做捲積
##### 古典寫死的版本
#### 可以調整步伐(Stride)
#### 可以調整填充(padding)
- ‘VALID’ 等於最一開始敘述的卷積計算，圖根據filter大小和stride大小而變小
- ‘SAME’，會用zero-padding的手法，讓輸入的圖不會受到kernel map的大小影響

## 拉普拉斯算子
原理 : 將區域之間的灰階值會出現「 急劇變化 ( Abrupt change ) 」進行二次微分(會出現「 零點交叉 ( Zero-crossing ) 」)
四個方向混成一個(比較檢)

實作 :
用設計好的面罩 ( Mask )(Kernel Map)(Filter) 對影像做捲積, 可以自己調整步伐(Stride)

![](https://i.imgur.com/6LjdECs.png =50%x)


## 索伯算子
原理 : 用圖像的梯度作為判斷依據

實作 : 
左邊負責偵測水平向的邊界，右邊負責偵測垂直向的邊界
![](https://i.imgur.com/Voq3rjp.png =80%x)

公式 : 

A 表示輸入影像，G 表示梯度

第一步
![](https://i.imgur.com/7QGeTMQ.png)
第二步
![](https://i.imgur.com/b85VEwx.png)
第三步
看 G 有沒有超過門檻

### 補充
此演算法跟Prewtit operator雷同，只差別在於第一行第二列的數值，sobel演算法為”2”和 “-2”，目的為凸顯周遭相臨的像素影響，因此比傳統權重較高，但此算法雖然加強邊緣的影響，可是也會導致卷積後的數值較高且對於梯度的求解較為粗糙，因此本研究使用正規劃消除數值較高的影響。圖9為工具設定線擷取範例圖，可手動輸入或是將遮罩設定選單選取到edge選項，且edge選項有直、橫、左斜、右斜等四個方向可選，並將對應的數值更改成想要的倍數。

## 羅伯茨算子
原理 : 用對角線方向相鄰兩象素之差近似梯度幅值檢測邊緣, 2*2的Mask

實作 : 
### X軸
 -1 0
 0 1
 
### Y軸
 0 -1
 1 0 
1. [d_x(i, j) = f(i + 1, j + 1) – f(i, j) ]

2. [d_y(i, j) = f(i, j + 1) – f(i + 1, j)]

3. [S = sqrt{d_x(i, j)^2 + d_y(i, j)^2} ]


## Prewitt 算子
原理 : 一階微分算子的邊緣檢測，利用像素點上下、左右鄰點的灰度差，在邊緣處達到極值檢測邊緣，去掉部分偽邊緣，對噪聲具有平滑作用
- 適合用來識別噪聲較多、灰度漸變的圖像

實作 : 
### X軸
[[1,1,1],[0,0,0],[-1,-1,-1]]
 
### Y軸
[[-1,0,1],[-1,0,1],[-1,0,1]]

### 補充
影像處理中，邊(Edge)是用來偵測物件邊緣是否有存在亮度劇烈變化的
現象，而這些劇烈變化的點可以組成被稱為邊的曲線段，代表在該圖像中該位
置在某種方向明顯從亮到暗、或是暗到亮的變化出現，是影像處理中必經的步
驟之一，而為了更有效提取邊(Edge)的特徵發展出各有優缺點的遮罩演算法，
本研究採用兩種邊特徵擷取遮罩演算法，第一種是Prewitt operator演算法，是一種求圖像邊緣的梯度強弱方法，且權種數值皆為整數，因此計算成本相對較
小，Prewittt演算法使用四組3*3的矩陣，求得水平、垂直、左斜縣、右斜線等方向，有可以更改矩陣內的權重，延伸出八種方向，但此演算法容易受到極端
值得影響。圖8為工具設定線擷取範例圖，可手動輸入或是將遮罩設定選單選取
到edge選項，且edge選項有直、橫、左斜、右斜等四個方向可選。

# Marr-Hildreth算子(LOG濾波器, Laplacian of Gaussian)
原理 : 先對圖象平滑(Gaussian 函數) => 降低噪音
      然後做拉普拉斯變換求二階微分
      
實作 : 
1. 圖象平滑
[公式](https://www.zhihu.com/equation?tex=G_%7B%5Csigma%7D%28x%2Cy%29%3D%5Cfrac%7B1%7D%7B2%5Cpi%5Csigma%5E2%7D%5Cexp%28-%5Cfrac%7Bx%5E2%2By%5E2%7D%7B2%5Csigma%5E2%7D%29)
- 函數圖像 : 
![](https://i.imgur.com/ROUQEgE.jpg)

- 以下图3所示的离散卷积核可以近似上面的表达式(当 [a = 14] 时)
![](https://i.imgur.com/9q6OVV9.jpg)



### 補充


# Canny算子

# 輪廓追蹤法

# 基底投射法

# 鬆弛法

# 動態規劃法

# 幾種算子的比較
Robert算子定位比較精確，但由於不包括平滑，所以對於噪聲比較敏感。Prewitt算子和Sobel算子都是一階的微分算子，而前者是平均濾波，後者是加權平均濾波且檢測的圖像邊緣可能大於2個像素。這兩者對灰度漸變低噪聲的圖像有較好的檢測效果，但是對於混合多複雜噪聲的圖像，處理效果就不理想了。LOG濾波器方法通過檢測二階導數過零點來判斷邊緣點。LOG濾波器中的a正比于低通濾波器的寬度，a越大，平滑作用越顯著，去除噪聲越好，但圖像的細節也損失越大，邊緣精度也就越低。所以在邊緣定位精度和消除噪聲級間存在着矛盾，應該根據具體問題對噪聲水平和邊緣點定位精度要求適當選取。

討論和比較了幾種常用的邊緣檢測算子。梯度算子計算簡單,但精度不高,只能檢測出圖像大致的輪廓,而對於比較細的邊緣可能會忽略。Prewitt 和Sobel 算子比Roberts 效果要好一些。LOG 濾波器和Canny 算子的檢測效果優於梯度算子,能夠檢測出圖像較細的邊緣部分。不同的系統,針對不同的環境條件和要求,選擇合適的算子來對圖像進行邊緣檢測。