日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Retinex算法

發布時間:2023/12/9 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Retinex算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

Retinex是一種常用的建立在科學實驗和科學分析基礎上的圖像增強方法,它是Edwin.H.Land于1963年提出的。就跟Matlab是由Matrix和Laboratory合成的一樣,Retinex也是由兩個單詞合成的一個詞語,他們分別是retina 和cortex,即:視網膜和皮層。Land的retinex模式是建立在以下三個假設之上的:



(1)真實世界是無顏色的,我們所感知的顏色是光與物質的相互作用的結果。我們見到的水是無色的,但是水膜—肥皂膜卻是顯現五彩繽紛,那是薄膜表面光干涉的結果。


(2)每一顏色區域由給定波長的紅、綠、藍三原色構成的;


(3)三原色決定了每個單位區域的顏色。


Retinex理論的基礎理論是物體的顏色是由物體對長波(紅色)、中波(綠色)、短波(藍色)光線的反射能力來決定的,而不是由反射光強度的絕對值來決定的,物體的色彩不受光照非均勻性的影響,具有一致性,即retinex是以色感一致性(顏色恒常性)為基礎的


不同于傳統的線性、非線性的只能增強圖像某一類特征的方法,Retinex可以在動態范圍壓縮、邊緣增強和顏色恒常三個方面達到平衡,因此可以對各種不同類型的圖像進行自適應的增強。


原理


一幅給定的圖像S(x,y)可以分解為兩個不同的圖像:反射圖像R(x,y)和亮度圖像(也有人稱之為入射圖像)L(x,y),其原理如下圖所示:


L又稱為光照分量,R又稱為反射分量。Retinex的基本思想是,在S中,降低L的影響,從而盡量保留物體本質的反射屬性,即R。


求解R是一個奇異問題,只能通過數學方法近似估算。Retinex是一個框架,采用用不同的亮度圖像估計算法,其具體形式也不同,但基本流程如下:



一般直接通過空間平滑得到照射圖像估計,常用的是高斯核的低通濾波。

retinex在對數域里進行:



以上是單尺度retinex(SSR),多尺度(MSR)的表達式如下:



K是尺度數,通常取K為3,并且權值w1=w2=w3=1/3,F是中心環繞函數,即高斯核函數、卷積核:



其中λ是歸一化常數,確保卷積核內的積分為1;c為卷積核尺寸,retinex中常用的卷積核半徑為15,80,120(小、中、大3個尺度)

中心環繞函數可以估計出光照分量L所對應圖像的低頻成分,并從S中去除低頻成分,剩下來的就是高頻分量,即反射分量R,保留了圖像的邊緣細節。


以上是經典Retinex算法,其缺點:都假設光照是低頻的,即光照是緩慢變化的,但實際情況并非如此。在亮度相差很大的邊緣處,光照變化是非平滑的。此時在亮度差異較大的區域會產生光暈現象。此外,邊緣銳化不足、陰影邊界突兀、部分顏色扭曲、紋理不清晰、高光區域(過曝)的細節沒有明顯改善也是其缺點。


光暈現象是經典retinex算法的最大缺點,它使圖像發生了失真,而在圖像增強中,失真是無論如何不允許出現的。光暈可以理解為光照變化劇烈的地方,被當作細節增強了。

對光暈現象更深層次的解釋為:實際上,由一幅圖像分解成兩幅圖像在數學上是一個“病態”問題。因為單一的像素亮度表達了照度信息和圖像內容雙重含義,在這種情況下要想準確的估計山照度情況只能依靠計算像素本身和圖像中其它像素的關系。空域濾波在計算照度時主要根據劇圍像素的位置遠近賦予不同的權重來估算當前像素的照度(空域=二維特征空間),沒有充分考慮到像素亮度本身的意義(空域+亮度=三維特征空間)。這直接導致了在估算圖像高對比度邊緣區域照度的時候,邊緣兩邊的高低值像素會相互影響:高值像素的照度受相鄰低值像素的影響導致所估計的照度較低;低值像素的照度受相鄰高值像素的影響導致所估計的照度較高。這會造成這一區域照度估計失真,出現結果圖像中的“光暈偽影”。


人們為了解決這一問題,相繼提出了改進的措施。主要思路是改進算法框圖中的“照度圖像估計”這一塊。經典算法使用的是高斯低通濾波,對圖像的每一處都使用同一個濾波模板;而改進的方法,將考慮鄰近像素間的灰度值差異。常見的方法有,雙邊濾波、各向異性擴散。雙邊濾波有快速算法,能夠滿足實時性要求。


經過以上步驟獲得了反射分量,一般還會加入增強環節,例如對數變換、指數變換、伽馬校正等一些非線性的灰度變換,進一步提高細節的呈現。


matlab程序


產生中心環繞函數

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));

總結

以上是生活随笔為你收集整理的Retinex算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。