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