C實現RGB32 Gama校正

2021-07-29 07:14:05 字數 863 閱讀 1325

c實現gama變換

原理:

gama變換也冪變換,公式如下:

s=cr^γ

輸入r與s的變換關係如下圖:

上圖中,橫座標0附近對應於輸入影象中的黑色畫素值,縱座標中0附近對應於輸出影象中黑色畫素值。由上圖可以看出,當γ<1時,gama變換將輸入影象中0值鄰域拉伸了,相反,當γ>1時gama變換將輸入影象中0值鄰域縮小了。當γ=1時,為恒同變換。上圖中,γ=1兩邊的變換互為逆對映,如0.2和5.0。

為什麼要進行gama校正:

某些顯示器,如crt顯示器,它的強度到電壓的響應是冪變換,其γ值在1.8到2.5之間,因此,其顯示效果偏暗,如果在顯示之前,先對影象進行γ變換,使之在0值鄰域偏亮,那麼輸出的影象就是正常的了。可以對其他裝置做此相應的分析,它們之間沒有什麼差別,只不過是γ不同而已。

**實現:

void rgb32gamacorrection(uint8_t* src, int width, int height, int factor)}}

效果如下:

原圖:

變換後的效果:

問題,變換之後引入了雜訊,而且引數值越大,雜訊越明顯,所以,為了進一步改善視覺效果,可以根據需要引入濾波器,對變換結果進行濾波處理。

RGB和HSL之間的轉換 C 實現

define min3v v1,v2,v3 v1 v2 v2 v3 v3 v2 v1 v3 v3 v2 define max3v v1,v2,v3 v1 v2 v2 v3 v3 v2 v1 v3 v3 v1 typedef struct color rgb typedef struct color ...

CRC32校驗 c實現

環境 vs2013 成功編譯並執行 include include include pragma warning disable 4996 這樣防止警告 dword crc32table 256 0x04 c1 1d b7 dword bitreverse dword poly 進行位顛倒 retu...

C 實現LeetCode 32 最長有效括號

given a string containing just the characters and find the length of the longest valid well formed parentheses substring.example 1程式設計客棧 input output ...