1. 程式人生 > >OPenCV - 改變影象的對比度和亮度

OPenCV - 改變影象的對比度和亮度

......filter2D函式,通過掩碼矩陣實現濾波功能(銳化圖片),這裡繼續熟悉其他處理影象的方式:改變影象對比度和亮度。

γ方法來修改影象的光強和對比度,效果更好!首先看一看gamma 方式修改影象的公式:

很明顯,它已經不是線性的,那它的好處是什麼?

當γ<1 的時候,它能讓暗黑區域更加明亮,更加適合處理未曝光完全的圖片

它的效果如下:

這是官網上的圖片,當然我本地也嘗試過,它的程式碼如下:

因為它是根據畫素的值轉化的公式,我們要用LUT函式通過查詢表的方式修改影象資料

/**
 通過伽馬的方式 (非線性) 顯示一個圖片
 */
void gammaProcessImage(Mat& oriMat,double gamma,Mat outputMat){
   
    //伽馬方法也是按照一個公式修改了每個畫素值,我們可以通過LUT函式進行編寫,它的公式是:
    //O=(I/255)的γ次方×255
    //程式碼如下
    Mat lookupTable(1,256,CV_8U);
    uchar* p = lookupTable.ptr();
    for (int i =0 ; i < 256; i++) {
        p[i] = saturate_cast<uchar>(pow(i/255.0, gamma) * 255.0);
    }
    LUT(oriMat,lookupTable,outputMat);
}


From:openCV學習筆記 (六) : 改變影象的對比度和亮度