Gamma校正及其OpenCV實現

2021-09-08 10:30:28 字數 1297 閱讀 4196

參考:[1]

[2]一、什麼是gamma校正?

gamma校正是對輸入影象灰度值進行的非線性操作,使輸出影象灰度值與輸入影象灰度值呈指數關係:

這個指數即為gamma.

經過gamma校正後的輸入和輸出影象灰度值關係如圖1所看到的:橫座標是輸入灰度值,縱座標是輸出灰度值,藍色曲線是gamma值小於1時的輸入輸出關係,紅色曲線是gamma值大於1時的輸入輸出關係。能夠觀察到,當gamma值小於1時(藍色曲線),影象的總體亮度值得到提公升,同一時候低灰度處的對照度得到新增,更利於分辯低灰度值時的影象細節。

圖1 gamma校正.

二、為什麼進行gamma校正?

1. 人眼對外界光源的感光值與輸入光強不是呈線性關係的,而是呈指數型關係的。在低照度下,人眼更easy分辨出亮度的變化,隨著照度的新增,人眼不易分辨出亮度的變化。而攝像機感光與輸入光強呈線性關係。如圖2所看到的:

圖2 人眼和攝像機的感光與實際輸入光強的關係[1]。

為方便人眼辨識影象,須要將攝像機採集的影象進行gamma校正。

2. 為能更有效的儲存影象亮度資訊,需進行gamma校正。

未經gamma校正和經過gamma校正儲存影象資訊如圖3所看到的:

圖3 未經gamma校正和經過gamma校正儲存影象資訊.

能夠觀察到,未經gamma校正的情況下,低灰度時,有較大範圍的灰度值被儲存成同乙個值,造成資訊丟失;同一時候高灰度值時,非常多比較接近的灰度值卻被儲存成不同的值,造成空間浪費。經過gamma校正後,改善了儲存的有效性和效率。

三、利用opencv實現的gamma校正

void mygammacorrection(mat& src, mat& dst, float fgamma)

dst = src.clone();

const int channels = dst.channels();

switch(channels)

case 3:

break;}}}

Gamma校正及其OpenCV實現

一 什麼是gamma校正?gamma校正是對輸入影象灰度值進行的非線性操作,使輸出影象灰度值與輸入影象灰度值呈指數關係 這個指數即為gamma.經過gamma校正後的輸入和輸出影象灰度值關係如圖1所示 橫座標是輸入灰度值,縱座標是輸出灰度值,藍色曲線是gamma值小於1時的輸入輸出關係,紅色曲線是g...

Gamma校正及其OpenCV實現

參考 1 2 一 什麼是gamma校正?gamma校正是對輸入影象灰度值進行的非線性操作,使輸出影象灰度值與輸入影象灰度值呈指數關係 這個指數即為gamma.經過gamma校正後的輸入和輸出影象灰度值關係如圖1所看到的 橫座標是輸入灰度值,縱座標是輸出灰度值,藍色曲線是gamma值小於1時的輸入輸出...

gamma校正 OpenCV Gamma校正

gamma校正是一種非常重要的線性變換。對輸入影象的灰度值進行指數變換,進而校正亮度偏差,通常應用於擴充套件暗調的細節。gamma校正可使得影象看起來更符合人眼的特性。當gamma校正的值大於1時,影象的高光部分被壓縮而暗調部分被擴充套件 當gamma校正的值小於1時,影象的高光部分被壓縮而暗調部分...