1.線性點運算
原始圖像的灰度值我們可以使用f(x,y)來表示在(x,y)處的圖像灰度值,我們經過點運算輸出的圖像灰度值則為:g(x,y).為了表示的方便,我們通常使用r來表示原始圖像的灰度值,s用來表示處理后圖像的灰度值。
線性點運算的公式如下:s=ar+b,如下圖所示:
a和b取值的大小影響着我們輸出灰度圖像的性質,總結也在上圖當中實現了。如果a為負值,那么圖像當中的亮色區域將會變暗,暗色的區域將會變亮。
2.分段線性點運算
我們對自己感興趣的區域分別進行相應的點運算,最后得到自己理想的效果,如下圖所做的分段線性運算所示:
分段函數描述如下:
當然除了線性點運算,我們還有一種更加普遍的運算則是非線性點運算了,我們下面來看看
3.非線性點運算
一般常見的有對數變換,變換的公式為s=clog(1+r),其中的c僅僅是一個常數,變換后的圖像如下:
這個方法主要用於降低對比度,將低灰度的地方進行擴展,高灰度的地方進行壓縮,這樣就得到了最終圖像輸出的結果。
2.冪次變換
變換的公式和圖像如下:
但是很遺憾的是,我們的在opencv的開發當中一般不知道如何進行線性點運算,一般都是進行將整張圖的灰度值增加多少或者減少多少的運算,而非線性或者非線性的運算,有點難堪,但是matlab實現起來卻簡單得多了。matlab的實現可以參考這篇博文:https://www.cnblogs.com/geeksongs/p/11037415.html