Retinex 算法
目錄
1、Retinex 理論及數學模型
2、Retinex 算法發展歷程
2.1 基于迭代的 Retinex 算法
2.1.1 Frankle-McCann Retinex 算法
2.1.2 McCann99 Retinex 算法
2.2?基于中心環繞的 Retinex 算法?
2.2.1?SSR算法(單尺度)
2.2.2?MSR算法(多尺度)
2.2.3?MSRCR算法
2.3?Retinex算法的頻域處理
1、Retinex 理論及數學模型
Retinex 理論指出,入射光決定了一副圖像中的所有像素點的動態范圍的大小,而物體自身所固有不變的反射系數決定了圖像的內在固有屬性。也就是說,我們所看到的圖像是照射光根據物體的反射系數所反射的光線形成的,如圖所示。很顯然,如果把一幅圖像看作是由照射光和反射光組成的話,Retinex 圖像增強的基本思想就是去除照射光的影響,保留物體自身的反射屬性。
?
核心:從S圖像中估測L分量,并去除L分量,得到原始反射分量R
retina(視網膜) + cortex(皮層) —— Retinex
提出者:埃德溫·赫伯特·蘭德 —— Polaroid(寶麗來)
Retinex百度百科RETINEX_百度百科
2、Retinex 算法發展歷程
2.1 基于迭代的 Retinex 算法
2.1.1 Frankle-McCann Retinex 算法
基本原理:
Frankle-McCann 算法采用了一種新的基于螺旋結構的迭代分段線性比較路徑,螺旋結構路徑像素點間的比較是一個由遠到近的比較過程,在進行完一次比較之后,下一次的做比較的兩個像素點間的間距縮短為上一次比較間距的一半,并且比較路徑的方向同時也按順時針方向發生轉變,就這樣逐次比較直至像素點間距為 1 為止。
Frankle-McCann Retinex 算法步驟 :
(1)數據的前期轉換
????????把原圖像的像素值由整數域轉到對數域,減少后續算法的運算量
????????對于彩色圖像要先分解為R.G.B三幅灰度圖再轉換
????????因為RGB圖像的像素值是(0,255),在做對數運算時為避免負值的出現,可以將原圖像像素值整體加 1,即s (x, y) = log(1+S (x, y))
(2)初始化一個與原圖像 S(x,y)同樣大小的常數為 t 的矩陣
????????若m*n的圖像,則矩陣包含m*n個t,保證每個像素點都進行一次迭代。
????????t是原圖像亮度的均值,
(3)求解 S = 2P的值,P=fix[log2 min(m, n)-1]
????????S是目標點與兩個比較點之間的最大距離
(4)計算路徑上的像素點
假設 rn (x,y)是上一次迭代的結果,將此次迭代差值累加保存到相應的 rn (x,y)位置中,最終得到此次的迭代結果,然后再對兩者做一個平均,最后得到輸出結果。△l是目標點在此路徑上的亮度差。
? ? ?
(5)令S=-S/2
????????每下一步的兩個比較點與目標點的間距縮短為上一步的一半,同時方向按順時針改變,即S=-S/2
(6)重復3.4.5三個步驟直到|S|<1
(7)迭代n次,也就是重復3.4.5.6四個步驟n次
????????每次迭代選取不同的初始比較點
(8)線性拉伸,彩色圖像還需要三個通道的合成,然后輸出顯示
經過像素間的比較校正 n 次迭代之后,輸出結果是以初始化值 t為中心,集中分布在 t 附近的一系列的浮點數。也就是說原圖像的數據經過迭代后起到了壓縮的效果,因此需要對迭代結果做線性拉伸處理,提高圖像對比度。通常采用的 8 bit 圖像的動態范圍值是 0 到 255,拉伸公式:
?其中max和min分別是迭代結果的最大和最小值,R(x,y)是最終的增強結果。
2.1.2 McCann99 Retinex 算法
?
基本原理:
提出了一種金字塔比較模型,由金字塔頂端到底端分辨率由低到高,依次逐層迭代。這種采用分辨率由低到高的迭代方法可以有效減少算法的運算量,節約算法的執行時間。
算法步驟:
1) 將原圖像變換到對數域S;
2) 初始化(計算圖像金字塔層數;初始化常數圖像矩陣R作為進行迭代運算的初始值);
3) 從頂層開始,到最后一層進行8鄰域比較運算,運算規則與MccCann Retinex算法相同;
4) 第n層運算結束后對第n層的運算結果進行插值,變成原來的兩倍,與n+1層大小相同;
5) 當最底層計算完畢得到的即最終增強后的圖像。
局限性:
讀取圖像的尺寸必須符合2的整數次冪,即圖像長寬可表示為(col*2^n)*(row*2^n)
Col必須大于row ,并且屬于集合{1,2,3,4,5}
改進算法:
適用于各種尺寸的圖像,保持擴展后的圖像與原圖的一致性,盡量避免擴展像素點對原圖的干擾,采取只對圖像邊界擴展的方法。
基于迭代的 Retinex 算法總結:
迭代次數對算法的影響:
算法的執行時間隨著迭代次數 n 取值變大而增加
n 取 5 到 8 之間能同時兼顧圖像質量和計算速度
優點:
顏色恒常性、動態范圍壓縮大(像素點豐富)、色彩逼真度高(圖像高保真)
缺點:
增強后的圖像存在“光暈”現象,即在圖像色彩交界處漸變
光暈缺陷同樣也存在于其他 Retinex算法之中
2.2?基于中心環繞的 Retinex 算法?
基于路徑比較的 Retinex 算法和 McCann 算法,像素點之間亮暗關系的比較路徑實質上都是一維的,一維路徑的比較方法不論在效率上還是在準確性上都有較大的缺陷。為了更加準確地估計出圖像的照射分量,1986 年Land 在分析一維路徑缺陷的基礎上對算法做了改進,用二維區域內像素比較來取代一維路徑比較,提出了基于二維路徑比較的 Retinex 算法,經過后續發展之后就是我們現在所熟知的基于中心環繞的 Retinex 算法。
2.2.1?SSR算法(單尺度)
基本理論:
在計算圖像中目標像素點的灰度值時,是通過以目標點為中心的區域內的像素值的加權得到的,權重的比例大小則是由環繞函數(高斯函數)來確定。
σ 越小,高斯模型會變得越尖銳,目標像素點受到周圍像素影響的范圍就越小;
σ 越大,則高斯模型會變得越平緩,目標像素點受到周圍像素影響的范圍就越大。
SSR算法σ 一般取80-100
SSR算法步驟:
2.2.2?MSR算法(多尺度)
基本理論:
采用幾個不同大小的尺度參數對R.G.B三個分量分別單獨做濾波后再線性加權歸一化就得到了MSR算法。
MSR算法步驟:
同樣在這里,對于灰度圖像來說,直接對灰度值做上述步驟處理即可;對于彩色圖像來說,可以將圖像分解為 R、G、B 三副灰度圖分別進行以上步驟處理,然后再合成彩色圖像。
2.2.3?MSRCR算法
MSRCR 算法在 MSR 算法的基礎上增加了一個色彩恢復的步驟
利用彩色圖像的各個色彩通道間的比例關系,較好地解決了顏色恒常性的問題
2.3?Retinex算法的頻域處理
SSR、MSR、MSRCR 算法都需要用高斯核對圖像進行卷積計算,所有算法都要進行下式的計算
在時域中卷積,特別是對于大尺度 σ 時,需要進行的計算量過大,耗時過長。
卷積定理:時域中卷積相當于頻域中乘積
假設一個序列的長度為 m,那么此序列做卷積運算是的運算復雜度是 O(m*m);如果將序列做快速傅里葉變換轉換到頻域再做乘積運算則運算復雜度降低為O(m*logm)。也就是說將計算搬移到頻域,卷積計算變成乘法計算,計算量將會大大下降。式 3-13 可以簡化為?
在做圖像增強之前,首先需要對原圖像和高斯核做二維離散傅里葉變換
總結
以上是生活随笔為你收集整理的Retinex 算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [html] 你有使用过IE的条件注释
- 下一篇: [html] iframe在更改了sr