帶色彩恢復的多尺度視網膜增強算法(MSRCR)的原理、實現及應用。


    Retinex這個詞是由視網膜(Retina)和大腦皮層(Cortex) 兩個詞組合構成的。Retinex理論主要包含了兩個方面的內容:物體的顏色是由物體對長波、 中波和短波光線的反射能力決定的,而不是由反射光強度的絕對值決定的;物體的色彩不受光照 非均勻性的影響,具有一致性 。 

    根據Retinex理論,人眼感知物體的亮度取決於環境的照明和物體表面對照射光的反射,其數學表達式為:

            I(x,y)=L(x,y)*R(x,y)                            (2-1)

  式中: I(x,y)代表被觀察或照相機接收到的圖像信號;L(x,y)代表環境光的照射分量 ;R(x,y)表示攜帶圖像細節信息的目標物體的反射分量 。

    將(2-1)式兩邊取對數,則可拋開入射光的性質得到物體的本來面貌,即有關系式 :

       Log[R(x,y)] = Log[I(x,y)]-Log[L(x,y)];                      (2-2)

    對上面的理論的進行一個簡單的注釋吧。把這個技術運用到圖像處理上,就是針對我們現在已經獲得的一副圖像數據I(x,y),計算出對應的R(x,y),則R(x,y)認為是增強后的圖像,現在的關鍵是如何得到L(X,Y)。Retinex理論的提出者指出這個L(x,y)可以通過對圖像數據I(x,y)進行高斯模糊而得到,很多論文中都列出了那個中心/圍繞函數以及需要歸一化的K值,搞的很多新手都不明白是什么了,其實就是一個模糊而已。從實際運用的角度來說,也可以用均值模糊來代替高斯模糊。

     因此這個算法的細路就很簡單了,具體步驟如下:

     1、輸入: 原始圖像數據I(x,y),尺度(也就是所謂的模糊的半徑)

     2、處理:(1) 計算原始圖像按指定尺度進行模糊后的圖像 L(x,y);

              (2) 按照2-2式的計算方法計算出 Log[R(x,y)]的值。

              (3) 將 Log[R(x,y)]量化為0到255范圍的像素值,作為最終的輸出。

    可以看得出,算法很簡單,其核心的東西還是在於高斯模糊的實現。關於高斯模糊,網上有很多快速優化的文章參考,具體的參考代碼可能很少有好人提供的。

    注意到一點,似乎在量化的時候沒有誰會將 Log[R(x,y)]進行Exp函數的運算而直接得到R(x,y),至於為什么,我無法給出明確的答案。

    量化的方式其實有很多種,而這個方法在很大的程度上對處理的效果有着決定性的影響。至今我沒看到有哪一篇論文對這一塊講的很清楚,也不知道他們的那些結果是如何取得的,一種最簡單的方式就是計算出Log[R(x,y)]的最大值Max和最小值Min,然后對每一個值Value,進行線性量化,公式為:

            R(x,y) = ( Value - Min ) / (Max - Min) * (255-0)                           (2-3)

    效果測試:

         

                         原圖                                   經過Retinex(尺度為10)增強后的圖像              經過Retinex(尺度為300)增強后的圖像

        

                       原圖                                   經過Retinex(尺度為10)增強后的圖像                 經過Retinex(尺度為300)增強后的圖像

    論文中說,尺度取值較小時, 能夠較好地完成動態范圍的壓縮,暗區域的細節能得到較好地增強,但輸出顏色易失真;取值較大時,色感一致性較好。 我倒是沒看出尺度小有什么好處。

    以上算法所實現的過程通常倍稱作為SSR(Single Scale Retinex,單尺度視網膜增強);

    為了得到更好的效果,人們又開發出所謂的多尺度視網膜增強算法(MSR, Multi-Scale Retinex),最為經典的就是3尺度的,大、中、小,既能實現圖像動態范圍的壓縮,又能保持色感的一致性較好。同單尺度相比,該算法有在計算Log[R(x,y)]的值時步驟有所不同:

    (1) 需要對原始圖像進行每個尺度的高斯模糊,得到模糊后的圖像Li(x,y),其中小標i表示尺度數。

     (2)  對每個尺度下進行累加計算  Log[R(x,y)] =  Log[R(x,y)] + Weight(i)* ( Log[Ii(x,y)]-Log[Li(x,y)]);  其中Weight(i)表示每個尺度對應的權重,要求各尺度權重之和必須為1,經典的取值為等權重。

     其他的步驟和單尺度的沒有區別。

           

                        原圖                                      經過SSR(尺度為300)增強后的圖像               經過MSR(最大尺度為300,尺度數為3)增強后的圖像

           

                           原圖                                      經過SSR(尺度為300)增強后的圖像              經過MSR(最大尺度為300,尺度數為3)增強后的圖像

    SSR和MSR在最大尺度相同的時候誰好誰壞我還真講不清。

     在以上的兩幅測試圖像中,特別是第二幅,我們看到明顯的偏色效果,這就是SSR和MSR普遍都存在的問題。給一段比較經典的論文中的原話供大家參考:

      The general effect of retinex processing on images with regional or global gray-world violations is a “graying out” of the image, either globally or in specific regions. This desaturation of color can, in some cases, be severe (see Fig. 4, middle). More rarely, the gray-world violations can simply produce an unexpected color distortion (see Fig. 4,top left).

     為此,研究者又開發出一種稱之為帶色彩恢復的多尺度視網膜增強算法(MSRCR,Multi-Scale Retinex with Color Restoration) ,具體討論的過程詳見 <A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes>這篇論文,這里要說的是,我認為論文里的方法不起任何作用,並且論文里為了這個又引入了太多的可調參數,增加了算法的復雜性,不利於自動化實現。

    從我目前的了解來看,GIMP的contrast-retinex.c文件里使用的算法很好,效果也很好。他直接從量化的方式上入手,引入了均值和均方差的概念,再加上一個控制圖像動態的參數來實現無色偏的調節過程,簡要描述如下。

    (1)分別計算出 Log[R(x,y)]中R/G/B各通道數據的均值Mean和均方差Var(注意是均方差)。

    (2)利用類似下述公式計算各通道的Min和Max值。

            Min = Mean - Dynamic * Var;  

            Max = Mean + Dynamic * Var;
    (3)  對Log[R(x,y)]的每一個值Value,進行線性映射: 

           R(x,y) = ( Value - Min ) / (Max - Min) * (255-0) ,同時要注意增加一個溢出判斷,即:

           if (R(x,y) > 255)  R(x,y) =255; else if (R(x,y) < 0) R(x,y)=0;

     就是經過這么簡單的處理,實踐證明可以取得非常好的效果,下面貼出一些處理后的效果。

       

     MSR(最大尺度為300,尺度數為3)增強圖像           MSRCR(最大尺度為300,尺度數為3,Dynamic=2)增強圖像   MSRCR(最大尺度為300,尺度數為6,Dynamic=2)增強圖像

        

      MSR(最大尺度為300,尺度數為3)增強圖像          MSRCR(最大尺度為300,尺度數為3,Dynamic=2)增強圖像   MSRCR(最大尺度為300,尺度數為6,Dynamic=2)增強圖像

         由以上三幅圖的效果得出的結論:

        (1)MSRCR效果要比MSR好很多,基本消除了色偏。

        (2)對於MSRCR,尺度數對結果的影像不是特別大,但是隨着尺度數的增加,算法耗時會線性增加,因此,一般尺度數取3就較為合適了。

         繼續貼圖做比較:

        

                MSRCR(Dynamic=1)增強圖像                            MSRCR(Dynamic=2)增強圖像                              MSRCR(Dynamic=5)增強圖像

             

                 MSRCR(Dynamic=1)增強圖像                            MSRCR(Dynamic=2)增強圖像                          MSRCR(Dynamic=5)增強圖像

      由以上三幅圖的效果得出的結論:

    (3)Dynamic取值越小,圖像的對比度越強。

    (4)一般來說Dynamic取值2-3之間能取得較為明顯的增強效果,即能取得很自然過渡效果,又能保持圖像的清晰度適度增強。

     關於最大尺度,個人建議取值以大於100為佳。

     retinex算法的效果對於一些正常的圖像處理后的效果並不佳,我們可以認為他就是為那些在外界環境不理想的狀態下拍攝的圖像增強而設計的,特別的,對於航拍的霧天圖片,醫學上的成像圖片等成像條件惡劣的圖有很明顯的效果,再列出一些照片處理效果。

          

          

          

         

          

          

                    原始圖像                                             MSRCR增強的效果                                        NASA的Retinex增強結果

    上述照片均使用最大尺度為300,尺度數為3,Dynamic=2時的效果。

    由以上幾組照片,可以看到,Retinex在圖像去霧、宇航圖、醫學圖像、老照片等圖像的處理上效果很是明顯。

    NASA的處理效果要比我這里的MSRCR好一些,這當然無可厚非,人家是什么單位啊。

    關於NASA對Retinex技術的應用,可以參考:http://dragon.larc.nasa.gov/retinex/

    關於去霧效果,我們在來和美圖秀秀、可牛影像、光影魔術手等現有的軟件做個簡單的比較:

        

                      原圖                                             MSRCR                                                    美圖秀秀 

     

                 可牛影像                                                  光影魔術手

       

                       原圖                                                 MSRCR                                                 美圖秀秀 

      

                 可牛影像                                                 光影魔術手

    關於誰是誰非,為避免不必要的口舌之爭,這里還是交給給位看管去分辨吧。

    同樣,提供個編譯好的文件給有興趣研究該算法的朋友看看效果:

    http://files.cnblogs.com/Imageshop/Retinex.zip

 

    

    關於Rentinex,在共享兩篇比較經典的英文論文:

    Multi-Scale Retinex for Color Image Enhancement

    A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes

    關於實現代碼,提供GIMP的contrast-retinex.c的下載鏈接(要像完全看懂其中的所有代碼的意思很困難,但是要提取其中的算法部分就不那么復雜了)。

    http://files.cnblogs.com/Imageshop/contrast-retinex.rar

 

 

 ***************************作者: laviewpbt   時間: 2013.4.17    聯系QQ:  33184777  轉載請保留本行信息*************************


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM