灰階世界演算法(Gray World Algorithm),grayalgorithm
人的視覺系統具有顏色恒常性,能從變化的光照環境和成像條件下擷取物體表面顏色的不變特性,但成像裝置不具有這樣的調節功能,
不同的光照環境會導致採集的映像顏色與真實顏色存在一定程度的偏差,需要選擇合適的色彩平衡(校正)演算法,消除光照環境對顏
色顯現的影響。灰階世界演算法是最常用平衡演算法。
一、灰階世界演算法
灰階世界演算法以灰階世界假設為基礎,該假設認為:對於一幅有著大量色彩變化的映像,,三個分量的平均值趨於同一灰
度值。從物理意義上講,灰色世界法假設自然界景物對於光線的平均反射的均值在總體上是個定值,這個定值近似地為“灰
色”。色彩平衡演算法將這一假設強制應用於待處理映像,可以從映像中消除環境光線的影響,獲得原始情境映像。
演算法執行步驟:
(1)一般有兩種方法確定:
要麼取固定值(如最亮灰階值的一半,八位顯示的話即為128);
要麼通過計算映像三通道平均值,取;
(2)計算三個通道的增益係數:;;;
(3)根據Von Kries對角模型,對於映像中的每個像素,調整其分量分量:
這種演算法簡單快速,但是當映像情境顏色並不豐富時,尤其出現大塊單色物體時,該演算法常會失效。
注:Von Kries提出,可用一個對角矩陣變換描述兩種光照條件下同一物體表面顏色間的關係。假定在光照下感知
到的物體值分別為、,根據Von Kries對角理論有:
該理論實現不同光源間的轉換。
二、Matlab實現
function Test()I=imread('test.jpg');y=GrayWorld(I);y=uint8(y);figure(1);imshow(I);figure(2);imshow(y);function y=GrayWorld(Image)r=Image(:,:,1);g=Image(:,:,2);b=Image(:,:,3);avgR = mean(mean(r));avgG = mean(mean(g));avgB = mean(mean(b));avgRGB = [avgR avgG avgB];grayValue = (avgR + avgG + avgB)/3scaleValue = grayValue./avgRGB;newI(:,:,1) = scaleValue(1) * r;newI(:,:,2) = scaleValue(2) * g;newI(:,:,3) = scaleValue(3) * b;y=newI;
測試結果:
參考:
http://www.cnblogs.com/Imageshop/archive/2013/04/20/3032062.html
http://scien.stanford.edu/pages/labsite/1999/psych221/projects/99/jchiang/intro2.html
http://scien.stanford.edu/pages/labsite/2000/psych221/projects/00/trek/GWimages.html
[1] 徐曉昭,蔡軼珩,劉曉民,劉長江,沈蘭蓀. 改進灰階世界顏色校正演算法[J]. 光子學報, 2010, 39(3): 559~564