影象變換可以看作如下
畫素變換-點操作
調整影象亮度和對比度屬於畫素變換-點操作
鄰域操作-區域 影象卷積 梯度計算
g(i,j)=a*f(i,j)+b其中a>0,b是增益變數
重要的api
mat new image =mat:zeros( image,size(), image.type();創
建一張跟原影象大小和型別一致的空白影象、畫素值初始化為0
saturate_ castmat.at(y,x)[index]=value給每個通道的每個畫素點賦值
亮度是的明亮程度超過80%影象開始發白
對比度是顏色之間的對比程度 對比度越大 個顏色之間的分別越明顯特別是黑白之間
超過85%過於艷麗
#include
#include
#include
using
namespace cv;
using
namespace std;
intmain()
//畫素點 位操作
char input_win=
"input image"
;// 設定乙個名為input image的字串 來做src的視窗顯示
namedwindow
(input_win,cv_window_autosize)
;imshow
(input_win,src)
;//直接顯示這條字串到src視窗
int height = src.rows;
int width = src.cols;
dst = mat::
zeros
(src.
size()
, src.
type()
);float alpha =1;
//第一通道賦值 越低越暗 越高越亮 對比度調節
float beta =30;
//第二通道賦值 越低越暗 越高越亮 亮度調節
/* α > 1會擴大兩個畫素值之間的差值,從而提高了影象的對比度,
反之降低影象對比度;β \betaβ值可以用來增大的亮度,
值越大,亮度增加越明顯。
*/ mat m1;
//若想進一步提高精度,可以使使讀取的畫素的資料型別都為float型別,
//即vec3f,這裡需要乙個轉換函式
src.
convertto
(m1, cv_32f)
;//轉換為32位浮點型的矩陣 對比度亮度調節精度更大
// cvtcolor(src,dst,cv_bgr2gray);
for(
int row =
0; row < height; row++
)else
if(dst.
channels()
==1)//灰度圖}}
char output_tittle=
"output and brightness change demo"
;namedwindow
(output_tittle,cv_window_autosize)
;imshow
(output_tittle, dst)
;waitkey(0
);return0;
}
亮度 對比度 飽和度 灰度
亮度是指畫面的明亮程度,單位是堪德拉每平公尺 cd m2 或稱nits,也就是每平方公尺分之燭光。亮度對應由背光電壓控制 對比度是乙個亮度的比值,定義是 在暗室中,白色畫面 最亮時 下的亮度除以黑色畫面 最暗時 下的亮度。更精準地說,對比度就是把白色訊號在100 和0 的飽和度相減,再除以用lux ...
色調 色相 飽和度 對比度 亮度
對比度 對比度指不同顏色之間的差別。對比度越大,不同顏色之間的反差越大,即所謂黑白分明,對比度過大,影象就會顯得很刺眼。對比度越小,不同顏色之間的反差就越小。亮度 亮度指照射在景物或影象上光線的明暗程度。影象亮度增加時,就會顯得耀眼或刺眼,亮度越小時,影象就會顯得灰暗。色調 色調是各種影象色彩模式下...
自動對比度的opencv實現
在 一文中,作者給出了 自動對比度 的實現方法,非常nice 實際實現過程中,我發現文中有 dim histred 255 這樣的定義。一般來說,通道是0 255乙個256階的吧,如果不是語法的不同,應該是乙個bug.mat autocontrost mat matface double histg...