視網膜-大腦皮層(Retinex)理論認爲世界是無色的,人眼看到的世界是光與物質相互做用的結果,也就是說,映射到人眼中的圖像和光的長波(R)、中波(G)、短波(B)以及物體的反射性質有關算法
其中I是人眼中看到的圖像,R是物體的反射份量,L是環境光照射份量,(x, y)是二維圖像對應的位置函數
基於上面的原理,看下Retinex常見的幾種加強算法spa
1、 SSR(Single Scale Retinex)單尺度Retinex算法3d
它經過估算L來計算R,具體來講,L能夠經過高斯模糊和I作卷積運算求得,用公式表示爲:blog
其中F是高斯模糊的濾波器,「 * 」表示卷積運算圖片
其中σ稱爲高斯周圍空間常數(Gaussian Surround Space Constant),也就是算法中所謂的尺度,對圖像處理有比較大的影響,對於二維圖像對應於圖像中位置,即:博客
所以,這個算法的思路就能夠歸結爲如下幾步:it
一、輸入: 原始圖像數據I(x,y),尺度(也就是高斯函數中的σ)io
二、①計算原始圖像按指定尺度進行模糊後的圖像 L(x,y);圖像處理
②按照log(R)=log(I)-log(L)公式的計算方法計算出 Log[R(x,y)]的值
③將 Log[R(x,y)]量化爲0到255範圍的像素值,做爲最終的輸出,量化公式:R(x,y) = ( Value - Min ) / (Max - Min) * (255-0)(注:無需將Log[R(x,y)]進行Exp函數的運算,而是直接利用Log[R(x,y)]進行量化,即上述公式中的value值)
代碼以下:
效果圖(左邊是原圖,右邊是SSR效果圖):(其中σ=300,即代碼中的sigma=300)
2、 MSR(Multi-Scale Retinex)多尺度Retinex算法
多尺度視網膜加強算法(MSR, Multi-Scale Retinex),最爲經典的就是3尺度的,大、中、小,既能實現圖像動態範圍的壓縮,又能保持色感的一致性較好。基於單尺度Retinex算法,多尺度Retinex算法描述以下:
一、須要對原始圖像進行每一個尺度的高斯模糊,獲得模糊後的圖像Li(x,y),其中小標i表示尺度數。
二、對每一個尺度下進行累加計算 Log[R(x,y)] = Log[R(x,y)] + Weight(i)* ( Log[Ii(x,y)]-Log[Li(x,y)]); 其中Weight(i)表示每一個尺度對應的權重,要求各尺度權重之和必須爲1,經典的取值爲等權重。
若是尺度數爲3,則:W1=W2=W3=1/3
代碼以下:
效果圖(左邊是原圖,中間是SSR效果圖,右邊是MSR效果圖)
3、 MSRCR(Multi-Scale Retinex with Color Restoration)具備色彩恢復的多尺度Retinex算法
在前面的加強過程當中,圖像可能會由於增長了噪聲,而使得圖像的局部細節色彩失真,不能顯現出物體的真正顏色,總體視覺效果變差。針對這一點不足,MSRCR在MSR的基礎上,加入了色彩恢復因子C來調節因爲圖像局部區域對比度加強而致使顏色失真的缺陷.
先看一組公式:
RMSRCR(x,y)'=G⋅RMSRCR(x,y)+b
RMSRCR (x,y)=C(x,y)RMSR(x,y)
C(x,y)=f[I'(x,y)]=f[I(x,y)/∑I(x,y)]Ci(x,y)=f[Ii′(x,y)]=f[Ii(x,y)∑j=1NIj(x,y)]
f[I'(x,y)]=βlog[αI'(x,y)]=β{log[αI'(x,y)]−log[∑I(x,y)]}
若是是灰度圖像,只須要計算一次便可,若是是彩色圖像,如RGB三通道,則每一個通道均須要如上進行計算
G表示增益Gain(通常取值:5)
b表示誤差Offset(通常取值:25)
I (x, y)表示某個通道的圖像
C表示某個通道的彩色回覆因子,用來調節3個通道顏色的比例;
f(·)表示顏色空間的映射函數;
β是增益常數(通常取值:46);
α是受控制的非線性強度(通常取值:125)
MSRCR算法利用彩色恢復因子C,調節原始圖像中3個顏色通道之間的比例關係,從而把相對較暗區域的信息凸顯出來,達到了消除圖像色彩失真的缺陷。 處理後的圖像局部對比度提升,亮度與真實場景類似,在人們視覺感知下,圖像顯得更加逼真;可是MSRCR算法處理圖像後,像素值通常會出現負值。因此從對數域r(x, y)轉換爲實數域R(x, y)後,須要經過改變增益Gain,誤差Offset對圖像進行修正。
另外:介紹下什麼是顏色的簡單白平衡(simplest Color Balance)
白平衡的意思就是:是圖片中最亮的部分爲白色,最暗的部分爲黑色。其他部分進行拉伸
簡單的說就是:在RGB三通道上分別統計每一個像素值的出現次數。將1%的最大值和最小值設置爲255和0。其他值映射到(0,255),這樣使得每一個值通道的值在RGB中分佈較均勻。達到顏色平衡的結果
MSRCR代碼以下:
效果圖(左上:原圖,右上:SSR,左下:MSR,右下:MSRCR)
做爲一枚技術小白,寫這篇筆記的時候參考了不少博客論文,在這裏表示感謝,同時,未經贊成,請勿轉載....