###### 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)

## 索伯算子
原理 : 用圖像的梯度作為判斷依據
實作 :
左邊負責偵測水平向的邊界,右邊負責偵測垂直向的邊界

公式 :
A 表示輸入影像,G 表示梯度
第一步

第二步

第三步
看 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)
- 函數圖像 :

- 以下图3所示的离散卷积核可以近似上面的表达式(当 [a = 14] 时)

### 補充
# Canny算子
# 輪廓追蹤法
# 基底投射法
# 鬆弛法
# 動態規劃法
# 幾種算子的比較
Robert算子定位比較精確,但由於不包括平滑,所以對於噪聲比較敏感。Prewitt算子和Sobel算子都是一階的微分算子,而前者是平均濾波,後者是加權平均濾波且檢測的圖像邊緣可能大於2個像素。這兩者對灰度漸變低噪聲的圖像有較好的檢測效果,但是對於混合多複雜噪聲的圖像,處理效果就不理想了。LOG濾波器方法通過檢測二階導數過零點來判斷邊緣點。LOG濾波器中的a正比于低通濾波器的寬度,a越大,平滑作用越顯著,去除噪聲越好,但圖像的細節也損失越大,邊緣精度也就越低。所以在邊緣定位精度和消除噪聲級間存在着矛盾,應該根據具體問題對噪聲水平和邊緣點定位精度要求適當選取。
討論和比較了幾種常用的邊緣檢測算子。梯度算子計算簡單,但精度不高,只能檢測出圖像大致的輪廓,而對於比較細的邊緣可能會忽略。Prewitt 和Sobel 算子比Roberts 效果要好一些。LOG 濾波器和Canny 算子的檢測效果優於梯度算子,能夠檢測出圖像較細的邊緣部分。不同的系統,針對不同的環境條件和要求,選擇合適的算子來對圖像進行邊緣檢測。