matlab retinex,基于Retinex算法视频增强的MATLAB实现
基于Retinex算法視頻增強的MATLAB實現
一、讀書筆記
1:數字圖像文件簡介
BMP文件:Windows操作系統中的標準圖像文件格式,能夠被多種Windows應用程序所支持。
GIF文件:GIF文件的數據是一種基于LZW算法的連續色調的無損壓縮格式,不屬于任何應用程序。
JPEG圖像格式:后綴名為.jpg或者.jpeg,是一種有損壓縮格式。
ICO文件:Windows的圖標文件格式的一種,可以存儲單個圖案、多尺寸、多色板的圖標文件
HDF文件:層次型數據格式可以存儲不同類型的圖像和數碼數據,有函數庫。
PNG文件:常用于JAVA程序、網頁和S60中。
TIFF文件:主要用來存儲包括照片和藝術圖在內的文件格式。
DICOM文件:數字影像和通信標準。
2:基于MATLAB圖像處理基礎
1)圖像數據類型
double類型:圖像處理最常用的數據類型,也是matlab中默認的數據類型。圖像數據的取值范圍為0-1。
Unit8類型:常用于從存儲設備中讀取數據時,操作不能使結果超出[0,255].
Unit16類型:用于精度較高的圖像中。
Logical類型:常用于二值圖像中,可用true、false或關系運算符得到。
2)數據類型轉換
名稱
將輸入轉換為
有效的輸入圖像數據類型
Im2unit8
Unit8
Unit8, Unit16, Double, logical
Im2unit16
Unit16
Unit8,Unit16, Double, logical
Mat2gray
Double[0-1]
Unit8,Double, Unit16, logical
Im2double
Double
Unit8,Double, Unit16, logical
Im2bw
logical
Unit8, Unit16, Double
3)文件信息讀取
Matlab提供imfinfo函數來實現所有格式(除DICOM)的信息讀取,調用形式: info=imfinfo(’filename’)
4)讀取圖像
使用imread可以將圖像讀入matlab環境,語法:
imread (‘filename’),其中,filename是一個含有文件全名的字符串。
函數size可給出一副圖像的行數和列數
>>size(f)
Ans=
1024? 1024
5)顯示圖像
在matlab桌面上顯示圖像一般用imshow,語法:
imshow (f,G)
其中,f是一個圖像數組,G為顯示該圖像的灰度級數。若將G省略,則默認256.語法 imshow(f,[low high])會將小于或等于low的顯示為黑色,大于或等于high的顯示為白色,介于兩者之間的值以默認的級數顯示為中等亮度值。語法 imshow(f,[])可以將變量low設置為數組f的最小值,將high設置為f的最大值。
6)保存圖像
使用imwrite函數可將圖像寫入磁盤,語法;
Imwrite(f,’filename’)
Filename必須是一個可識別的文件格式擴展名
另一種常用但只用于jpeg圖像的函數imwrite,其語法為
Imwrite(f,’filename.jpg’,’quality’,q),
Q為一個0到100的整數,q越小,圖像退化越嚴重
3:亮度變換與空間濾波
1)函數imadjust是對灰度圖像進行亮度變換的基本IPT工具。語法
g=imadjust(f,[low_in high_in],[low_out high_out],gamma)
將low_in至high_in之間的值映射到low_out至high_out之間的值,其他的值被剪切掉了。
2)對數和對比度的拉伸變換
對數變換通過以下表達式實現:
g=c*log(1+double(f))
3)閾值變換
表達式:g=1./(1+(m./(double(f)+eps)).^E)
Eps可避免f出現0值的溢出現象
4)計算并繪制圖像直方圖
函數:imhist(f);
直方圖均衡化有函數histep實現,語法:g=histep(f,nlev)
Nelv為輸出圖像制定的灰度等級
5)空間濾波:
工具箱使用函數imfilter來實現線性空間濾波,語法
g=imfilter(f,w,filter_mode,boundary_options,size_options)
w為濾波掩膜,g為濾波結果
二、Retinex算法簡介 與實現
1)簡介
Retinex(視網膜”Retina”和大腦皮層”Cortex”的縮寫)理論是一種建立在科學??????? 實驗和科學分析基礎上的基于人類視覺系統(Human Visual System)的圖像增強理論。該算法的基本原理模型最早是由Edwin Land(埃德溫?蘭德)于1971年提出的一種被稱為的色彩的理論,并在顏色恒常性的基礎上提出的一種基于理論的圖像增強方法。Retinex 理論的基本內容是物體的顏色是由物體對長波(紅)、中波(綠)和短波(藍)光線的反射能力決定的,而不是由反射光強度的絕對值決定的;物體的色彩不受光照非均性的影響,具有一致性,即Retinex 理論是以色感一致性(顏色恒常性)為基礎的。
不同于傳統的圖像增強算法,如線性、非線性變換、圖像銳化等只能增強圖像的某一類特征,如壓縮圖像的動態范圍,或增強圖像的邊緣等,Retinex可以在動態范圍壓縮、邊緣增強和顏色恒常三方面達到平衡,因此可以對各種不同類型的圖像進行自適應性地增強。
單尺度(Single-Scale Retinex, SSR)算法原理 根據Land提出的理論,一幅給定的圖像S(x,y)分解成兩幅不同的圖像:反射物體圖像R(x,y)和入射光圖像L(x,y),其原理示意圖如下
Retinex原理示意圖
對于觀察圖像S中的每個點(x,y),用公式可以表示為:
S(x,y)=R(x,y)﹒L(x,y) (1)
據Retinex 理論,物體的顏色是由物體對光線的反射能力決定的,而物體對光線的反射能力是物體本身固有的屬性,與光源強度的絕對值沒有依賴關系。因此通過計算各個像素間的相對明暗關系,可以對圖像中的每個像素點做校正,從而確定該像素點的顏色。
單尺度(Single-Scale Retinex, SSR)算法在對數域中則表示為:
根據上面式的原理,Retinex理論進行圖像增強的關鍵是從原圖像中有效的信息計算出亮度圖像L(x,y)。但是從原圖像計算亮度圖像在數學上是一個奇異問題,因此只能通過數學上近似估計的方式估算亮度圖像。在Retinex算法的發展史中,曾經出現過平方反比的環繞形式、指數形式以及高斯指數形式,但在單尺度Retinex增強算法中,杰泊森(Jobson)論證了高斯卷積函數可以對源圖像提供更局部的準確處理,因而可以更好地增強圖像,其可以表示為:
其中λ是常量矩陣,c是濾波半徑,并且滿足:
c越小,灰度動態范圍壓縮的越多,c越大,圖像銳化的越厲害。因此亮度圖像最終可以表示為:
單尺度(SSR)可以表示為:
2)matlab實現
步驟:讀入圖像→歸一化→設置高斯函數參數及矩陣→高斯函數和輸入圖像矩陣卷積→取對數→和輸入圖像矩陣的對數相差→取指數→輸出圖像
結果:
原圖
處理后
原圖
處理后的圖
總結
以上是生活随笔為你收集整理的matlab retinex,基于Retinex算法视频增强的MATLAB实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web:你知道我这十几年是怎么过来的吗?
- 下一篇: 4月,诚邀你参加源码共读,学会看源码,打