# 圖片濾鏡系統期末線上展覽 因為有些同學在demo時卡到其他時間,因此做了個線上的展覽讓大家可以檢視各組做的狀況。選出一些做得還不錯的結果與一些特別的演算法與大家分享。甚至有同學改良現有的演算法達到更好的結果,非常厲害。 [TOC] ## 基本功能 ### Box Filter 將kernel內的所有像素取平均值,因此當kernel越大,輸出圖片會越模糊,會失去越多細節。 * Author: 廖哲武 ![image](https://hackmd.io/_uploads/SJf9qNFda.png) * Author: 林柏宇 李承洸 ![image](https://hackmd.io/_uploads/rJZCqVt_T.png) * Author: 張庭洋 ![image](https://hackmd.io/_uploads/S1CWo4KuT.png) ### Median Filter 將kernel內的所有像素取出中位數,因此可以將圖片中的極值濾掉。在圖片中的極值為0與255的黑白像素,亦稱作pepper salt noise,因為胡椒是黑的,鹽是白的,就是胡椒鹽的概念。因此如果使用這種濾鏡,便可以將極大值與極小值濾除。此外,與box filter同理,若使用更大的濾鏡,將會使圖片變得更加模糊,失去更多細節。 * Author: 廖哲武 ![image](https://hackmd.io/_uploads/Hy5GAEKda.png) * Author: 張庭洋 ![image](https://hackmd.io/_uploads/HkRtCEK_T.png) :::info :bulb: 雀斑消失了! ::: * Author: 黃綵誼 ![image](https://hackmd.io/_uploads/rJPI1rt_a.png) ### Identity Filter Skip,基本上輸出圖片與輸入圖片相等。 ## 進階功能 ### Contrast Stretching(對比拉伸) $$Pixel_{new}=\dfrac{Pixel-Pixel_{min}}{Pixel_{max}-P_{min}}$$ * Author: 張庭洋 ![image](https://hackmd.io/_uploads/r1OZpucda.png) * Author: 廖偉程 沈昱成 ![image](https://hackmd.io/_uploads/SkfVYdqOp.png) * Author: 郭庭維 ![image](https://hackmd.io/_uploads/BJ8ycO9_a.png) 如果該圖片本身就具備0及255這種極值的像素值,則拉伸的結果便會非常有限。郭庭維同學因此改良原先的算法,使對比度能夠更加的被拉伸。具體細節如下: ![image](https://hackmd.io/_uploads/H1v0cuqOT.png) * Author: 郭庭維 ![image](https://hackmd.io/_uploads/Sk7FiO9dT.png) ### Mosaic Filter(馬賽克濾鏡) 與期末上機考第二題max pooling的做法類似,只不過這次是計算kernel包住的平均值,而非最大值。可以觀察到當kernel size越大,圖片變得更模糊,馬賽克得顆粒越大。 * Author: 郭庭維 ![image](https://hackmd.io/_uploads/rkqZ2dc_T.png) ### Intensity Transformation(強度轉換) 基本上就是找各種函數將input的像素值map到ouptut的像素值。 * Author: 江旭宸 周志鎧 ![image](https://hackmd.io/_uploads/S1f5KY9dp.png) * Authot: 黃綵誼 ![image](https://hackmd.io/_uploads/ry46tFqOp.png) ### Histogram Equalization(直方圖均化) ref: [https://jason-chen-1992.weebly.com/home/-histogram-equalization] 為使用統計的手法將像素值盡可能的分散到不同的像素值,以增強圖片對比度。 * Author: 黃綵誼 ![image](https://hackmd.io/_uploads/rkXv_Y5_a.png) ### Alpha-Trimmed Mean Filter(Alpha-修整平均濾波器) 結合了box filter與median filter的點子,將kernel內的像素值排序後,去掉部分的極大極小值,將剩餘的值平均。為一個對抗胡椒鹽雜訊的好工具。 * Author: 江旭宸 周志鎧 ![image](https://hackmd.io/_uploads/S10C_Y9_p.png) ### Sobel Gradient Filter(索伯梯度濾鏡) Horizontal Kernel: $$G_{x}=\left( \begin{array}{ccc} +1 & 0 & -1 \\ +2 & 0 & -2 \\ +1 & 0 & -1 \\ \end{array} \right)$$ Vertical Kernel: $$G_{y}=\left( \begin{array}{ccc} +1 & +2 & +1 \\ 0 & 0 & 0 \\ -1 & -2 & -1 \\ \end{array} \right)$$ 將兩個kernel與原圖作convolution之後作幾何平均: $$I(x, y) = \sqrt{(G_x * I)^2 + (G_y * I)^2}$$ * Author: 楊捷茗 ![image](https://hackmd.io/_uploads/BJ4hSKcOp.png) * Author: 張庭洋 ![image](https://hackmd.io/_uploads/HkNA8K9_6.png) ### Linear Motion Blurring(線性運動模糊) 這個濾鏡的結果很像在拍照的時候手抖了一下,因此會有一個速度感。實作原理如下: $$B(x, y) = \int I(x - t \cdot \cos(\theta), y - t \cdot \sin(\theta)) \, dt$$ 其中$I(x,y)$為原始圖像中的像素值,$B(x,y)$為模糊後的像素值。透過將上式離散化所得到的kernel與原圖作convolution之後,便可以得到圖片朝特定方向產生線性模糊的結果圖。 * Author: 江旭宸 周志鎧 ![image](https://hackmd.io/_uploads/Bk32adcuT.png) ## 特殊現象 ### Moire Pattern(摩爾紋) 當ASCII ART使用過高解析度,且原始圖片解析度較高時,在液晶螢幕上顯示只有黑字的ASCII ART時會因為大量細紋的光學干涉產生摩爾紋效應。 * Author: 廖哲武 ![image](https://hackmd.io/_uploads/ryphzK9_6.png) ![image](https://hackmd.io/_uploads/HytVXKc_a.png) 在日常生活中也會出現類似的現象: ![image](https://hackmd.io/_uploads/ry9JQFc_p.png) ref: [https://www.fuji.com.tw/shownews.asp?RecordNo=880] ## 希望你們學到的事情 :::info :bulb: Programming + Domain Knowledge = Potential ::: 現在學會寫程式後,再加上你們來自各個領域的專業知識,便有無限的潛能。