2018年12月23日 星期日

04362782 柯岱佑 HW04

空間濾波
現在美肌APP,或是一些濾鏡基本上用到的都是空間濾波的概念,人工智慧裡CNN也是透過類似的概念去抓取影像中的特徵點來做運算,以下會介紹最基本的三種濾波。

原理是我們透過一個基數的方陣3*3、5*5之類的將你要修改的象素點放在中間位置,你就會獲得這個點的色彩值與他周圍象素的色彩值在根據這些值去做修改。

Smoothing Filter(平滑濾波器)
我們給九個點對應的權重,再把他們相加,最後平均這樣它的色彩值就會更趨近於鄰近的色彩值,當色彩值相近就會使色差減少形成一個柔化的效果。


 胡椒鹽與中值濾波器(Median Filter and Pepper-and-salt Noise)
以前的相機當你把ISO值調太高的時候很容易就會有雜訊跑出來,一點一點的跟胡椒鹽一樣,所以我們把它稱為胡椒鹽雜訊,而中值濾波器可以幫助我們把胡椒鹽雜訊消除掉,那他要做的方法是把極端的值給排除掉,那他會把抓到的九個點逕行排列然後取中位數,基本上極端的都會出現在兩側所以可以透過這樣把它個替換掉,但這樣也出現了一點柔化的效果,因為她也不是原本的值他只是找了一個相近的值來替換他而已。

胡椒鹽雜訊
經過中值濾波器處裡後
銳化濾波器(sharp filter)
當我們照相時些微的顫抖照成了照片有點模糊時,銳化濾波器可以幫我們呈現一個較清晰的影像,那他會用到一些微積分,拉普拉斯轉換我也看不太懂為甚麼要這樣做,但最後減化出來的公式,大概了解到我們給予中間點即高的權重,讓他減去周圍的點,剩下的值一定比原來的值高或低,與周圍個治的差也會變大,因此加強了色差,形成了較強的對比度讓畫面更佳的顆粒。

原圖

寫這份作業遇到的問題是imageRowInitialPosition = (unsigned char *)Image1->Picture->Bitmap->ScanLine[i];這個東西一次只抓一列得色彩值要處理這個要嘛一次抓三列,但感覺很麻煩所以我創了3個陣列把RGB各至丟進去,再創3個陣列去裝銳化後的值因為,只用一組的化再改動時會改到原來的值,這樣下一個值就不是依原圖來做銳化處裡了,所以總共6個陣列,但當圖太大時C++ Builder會說 Stack Overflow 所以你必須用動態宣告他把空間創在heap,然後再做銳化得時候得到的值有可能小於0或大於255要記得處裡一下不然圖片會出現奇怪象素點。


沒有留言:

張貼留言