2014年3月20日 星期四

OpenCV - 直方圖均衡化及Sobel邊緣偵測

直方圖均衡化(Histogram Equalization)

介紹:
    我們用一個byte來儲存灰階,所以有256個階層,從0~255(黑~白),直方圖均衡化的用意即計算每個灰階的機率後,試著均勻化,並重新分配。如下圖所示:



我們可以利用以下公式來達成目標:


上述公式的M、N即為圖片的長、寬。在我們這L為256,nk代表每層灰階的數目。顯而易見,若將每層灰階數目除以總數代表每層的比例(機率)。


計算好每層的比例(機率)後,我們再計算每層的累積機率,再乘上(L-1),因為機率最終累積至1,若乘上(L-1),會把累積機率從原本的0~1變成0~L-1,最後每層再四捨五入即為最終的顏色。

實作結果:

直方圖比較:
原始圖片之直方圖

Histogram Equalization後之直方圖



Sobel邊緣偵測(Sobel Edge Detection)

介紹:
    Filtering(濾波)有很多種方式,若我們使用Sobel的濾波方式,可以製造出強化邊緣的效果,下面的matrix即為Sobel的matrix:





實作公式如下:


計算每個點的gx和gy各加絕對值後加總即為當點計算後的顏色。

實作結果:





總結

這次的實作較簡單,histogram equalization後的結果看起來是,暗的地方更暗,亮的地方更亮,達到較明顯的效果。而邊緣偵測後的結果,邊緣會是明顯的白色,看起來像素描。

沒有留言:

張貼留言