Retinex算法
概述
Retinex是一種常用的建立在科學(xué)實(shí)驗(yàn)和科學(xué)分析基礎(chǔ)上的圖像增強(qiáng)方法,它是Edwin.H.Land于1963年提出的。就跟Matlab是由Matrix和Laboratory合成的一樣,Retinex也是由兩個(gè)單詞合成的一個(gè)詞語,他們分別是retina 和cortex,即:視網(wǎng)膜和皮層。Land的retinex模式是建立在以下三個(gè)假設(shè)之上的:
(1)真實(shí)世界是無顏色的,我們所感知的顏色是光與物質(zhì)的相互作用的結(jié)果。我們見到的水是無色的,但是水膜—肥皂膜卻是顯現(xiàn)五彩繽紛,那是薄膜表面光干涉的結(jié)果。
(2)每一顏色區(qū)域由給定波長的紅、綠、藍(lán)三原色構(gòu)成的;
(3)三原色決定了每個(gè)單位區(qū)域的顏色。
Retinex理論的基礎(chǔ)理論是物體的顏色是由物體對(duì)長波(紅色)、中波(綠色)、短波(藍(lán)色)光線的反射能力來決定的,而不是由反射光強(qiáng)度的絕對(duì)值來決定的,物體的色彩不受光照非均勻性的影響,具有一致性,即retinex是以色感一致性(顏色恒常性)為基礎(chǔ)的。
不同于傳統(tǒng)的線性、非線性的只能增強(qiáng)圖像某一類特征的方法,Retinex可以在動(dòng)態(tài)范圍壓縮、邊緣增強(qiáng)和顏色恒常三個(gè)方面達(dá)到平衡,因此可以對(duì)各種不同類型的圖像進(jìn)行自適應(yīng)的增強(qiáng)。
原理
一幅給定的圖像S(x,y)可以分解為兩個(gè)不同的圖像:反射圖像R(x,y)和亮度圖像(也有人稱之為入射圖像)L(x,y),其原理如下圖所示:
L又稱為光照分量,R又稱為反射分量。Retinex的基本思想是,在S中,降低L的影響,從而盡量保留物體本質(zhì)的反射屬性,即R。
求解R是一個(gè)奇異問題,只能通過數(shù)學(xué)方法近似估算。Retinex是一個(gè)框架,采用用不同的亮度圖像估計(jì)算法,其具體形式也不同,但基本流程如下:
一般直接通過空間平滑得到照射圖像估計(jì),常用的是高斯核的低通濾波。
retinex在對(duì)數(shù)域里進(jìn)行:
以上是單尺度retinex(SSR),多尺度(MSR)的表達(dá)式如下:
K是尺度數(shù),通常取K為3,并且權(quán)值w1=w2=w3=1/3,F是中心環(huán)繞函數(shù),即高斯核函數(shù)、卷積核:
其中λ是歸一化常數(shù),確保卷積核內(nèi)的積分為1;c為卷積核尺寸,retinex中常用的卷積核半徑為15,80,120(小、中、大3個(gè)尺度)
中心環(huán)繞函數(shù)可以估計(jì)出光照分量L所對(duì)應(yīng)圖像的低頻成分,并從S中去除低頻成分,剩下來的就是高頻分量,即反射分量R,保留了圖像的邊緣細(xì)節(jié)。
以上是經(jīng)典Retinex算法,其缺點(diǎn):都假設(shè)光照是低頻的,即光照是緩慢變化的,但實(shí)際情況并非如此。在亮度相差很大的邊緣處,光照變化是非平滑的。此時(shí),在亮度差異較大的區(qū)域會(huì)產(chǎn)生光暈現(xiàn)象。此外,邊緣銳化不足、陰影邊界突兀、部分顏色扭曲、紋理不清晰、高光區(qū)域(過曝)的細(xì)節(jié)沒有明顯改善也是其缺點(diǎn)。
光暈現(xiàn)象是經(jīng)典retinex算法的最大缺點(diǎn),它使圖像發(fā)生了失真,而在圖像增強(qiáng)中,失真是無論如何不允許出現(xiàn)的。光暈可以理解為光照變化劇烈的地方,被當(dāng)作細(xì)節(jié)增強(qiáng)了。
對(duì)光暈現(xiàn)象更深層次的解釋為:實(shí)際上,由一幅圖像分解成兩幅圖像在數(shù)學(xué)上是一個(gè)“病態(tài)”問題。因?yàn)閱我坏南袼亓炼缺磉_(dá)了照度信息和圖像內(nèi)容雙重含義,在這種情況下要想準(zhǔn)確的估計(jì)山照度情況只能依靠計(jì)算像素本身和圖像中其它像素的關(guān)系。空域?yàn)V波在計(jì)算照度時(shí)主要根據(jù)劇圍像素的位置遠(yuǎn)近賦予不同的權(quán)重來估算當(dāng)前像素的照度(空域=二維特征空間),沒有充分考慮到像素亮度本身的意義(空域+亮度=三維特征空間)。這直接導(dǎo)致了在估算圖像高對(duì)比度邊緣區(qū)域照度的時(shí)候,邊緣兩邊的高低值像素會(huì)相互影響:高值像素的照度受相鄰低值像素的影響導(dǎo)致所估計(jì)的照度較低;低值像素的照度受相鄰高值像素的影響導(dǎo)致所估計(jì)的照度較高。這會(huì)造成這一區(qū)域照度估計(jì)失真,出現(xiàn)結(jié)果圖像中的“光暈偽影”。
人們?yōu)榱私鉀Q這一問題,相繼提出了改進(jìn)的措施。主要思路是改進(jìn)算法框圖中的“照度圖像估計(jì)”這一塊。經(jīng)典算法使用的是高斯低通濾波,對(duì)圖像的每一處都使用同一個(gè)濾波模板;而改進(jìn)的方法,將考慮鄰近像素間的灰度值差異。常見的方法有,雙邊濾波、各向異性擴(kuò)散。雙邊濾波有快速算法,能夠滿足實(shí)時(shí)性要求。
經(jīng)過以上步驟獲得了反射分量,一般還會(huì)加入增強(qiáng)環(huán)節(jié),例如對(duì)數(shù)變換、指數(shù)變換、伽馬校正等一些非線性的灰度變換,進(jìn)一步提高細(xì)節(jié)的呈現(xiàn)。
matlab程序
產(chǎn)生中心環(huán)繞函數(shù)
sigma=1; %sigma delta=1; %取值步長為1 g_width_1=11; %卷積核尺寸 gauss_1=zeros(g_width_1,g_width_1); for i=-1*floor(g_width_1/2):floor(g_width_1/2)for j=-1*floor(g_width_1/2):floor(g_width_1/2)gauss_1(i+1+floor(g_width_1/2),j+1+floor(g_width_1/2))=exp(-1*((i*delta)^2+(j*delta)^2)/(2*sigma^2))/(2*sigma^2);end end gauss_1=gauss_1/sum(sum(gauss_1));總結(jié)
- 上一篇: [html] 说说你对移动优先布局的理
- 下一篇: ux和ui_UI和UX设计师的10种软技