上次剛講完Data Preprocess,這次來介紹Image Preprocess,因為Image Preprocess牽涉的範圍比較廣,所以這邊先大致介紹圖片預處理的方法與理論
那….再說Image Preprocess之前,我們先來談談Image Proccessing
一 什麼是Image Processing
Image process可區分為Analogue Image Process(模擬圖像處理)跟Digital Image Process(影像處理),本次主題只先針對Digital Image Process做說明
digital image process(數位影像處理)
使用演算法對數位的圖像進行圖像處理,他允許更廣泛的應用於輸入數據。數字圖像處理的目的是通過抑制不必要的失真和/或增強某些重要圖像功能來改善圖像數據(功能),從而使我們的AI計算機 視覺模型可以從改進後的數據中受益。
而圖像不過是由介於0~255之間的數字組合成的二維陣列,他可由數學的f函數(x,y)表示,f(x,y)的任意點的值給出的是圖像在該點的像素值。
處理圖像的步驟如下:
1. Read image — 讀取圖像
我們必須透過一些方法去image dataset抓去我們所需要的圖片,可透過網路爬蟲的方式去收集大量的圖片資訊。
2. Resize image — 調整圖像大小
為什麼我們要調整圖像大小呢?因為不同的來源圖像大小各不相同,這樣演算法比較難處理,所以我們必須把這些標準resize成一個基本的大小
3. Remove noise(Denoise) — 消除雜訊
圖像的雜訊會影響訓練的準確度,所以必須消除雜訊,常見的方法為gaussian blur。
在弄懂gaussian blur之前,必須先知道什麼是高斯函數與image filter
一維的高斯函數(Gaussian noise)
常態分布(英語:normal distribution)又名高斯分布(英語:Gaussian distribution), 是一個非常常見的連續機率分布
Image Filter(影像過濾器)
最常使用的方式:
A. 平滑化(濾除雜訊)
常用的方法有:均值濾波器, 中值濾波器,Gaussian Filter
B. 銳化(強化邊緣)
常用的方法有: Laplace Filter, Sobel Filter
所以說明gaussian blur其實是處理Image常見的方法。如果單從數學公式下去看高斯模糊,我是看不懂的,所以接下來我們會以用途下去反推,從用途 -> 生成矩陣 ->數學式去了解什麼是gaussian Filter
1. 用途
主要減少圖像雜訊以及降低細節層次,其視覺效果就像是經過一個半透明屏幕在觀察圖像
2. 生成矩陣
以下近似3*3 Gaussian Filter的generalized weighted smoothing filter矩陣, 圖像與3*3 Gaussian Filter做卷積將會達到濾除雜訊、低通、模糊化的效果。
為何對這個矩陣卷積就能將圖片模糊化?
卷積後會從九個點變一個點,當然會模糊化阿!!
為何對這個矩陣卷積就能將圖片模糊化?
簡單來說圖片的每一點都會跟矩陣的中心點卷積一次,也就是Sliding window的概念。邊角的點,由於周圍沒有點可以卷積,則補0。若想進一步了解我相當推薦以下這個教學影片。
如果要將圖片模糊化,為何不9個點相加除以9就好了?
不論是對任何圖像作低通,都不希望圖像失真,而降低圖像失真最好的辦法就是增加圖像中心點的權重,所以中心點的權重最高,越往邊角權重就越低!
那……該如何決定權重的比例呢?
好問題! 讓我們看第三點Gaussian Filter數學函式
3. 數學函式
步驟一 實際的Gaussian Filter由此方程式產生
步驟二 簡化計算,假設sigma = 0.707(根號0.5)
步驟三 Gaussian Filter的中心點(x,y)須為(0,0),下例為一個3*3的(x,y)值矩陣
將此矩陣的x,y值套入Gaussian Function並正規化後就可以得到3*3的Gaussian filter了!
4. Segmentation and Morphology(smoothing edges)
上面我們學會了消除雜訊的方式,就是透過高斯模糊,這一步我們將會將影像分割,將背景與前景對象分離開來,並通過進一步去除噪點進一步改善分割效果。
參考: