同态滤波
在生活中會得到這樣的圖像,它的動態范圍很大,而我們感興趣的部分的灰度又很暗,圖像細節沒有辦法辨認,采用一般的灰度級線性變換法是不行的。圖像的同態濾波屬于圖像頻率域處理范疇,其作用是對圖像灰度范圍進行調整,通過消除圖像上照明不均的問題,增強暗區的圖像細節,同時又不損失亮區的圖像細節. 我們人眼能分別得出圖像的灰度不僅僅是由于光照函數(照射分量)決定,而且還與反射函數(反射分量)有關,反射函數反映出圖像的具體內容。光照強度一般具有一致性,在空間上通常會有緩慢變化的性質,在傅立葉變換下變現為低頻分量,然而不一樣的材料的反射率差異較大,經常會引起反射光的急劇變化,從而使圖像的灰度值發生變化,這種變化與高低頻分量有關。為了消除不均勻照度的影響,增強圖像的高頻部分的細節,可以采用建立在頻域的同態濾波器對光照不足或者有光照變化的圖像進行處理,可以盡量減少因光照不足引起的圖像質量下降,并對感興趣的景物進行有效增強,這樣就在很大程度上做到了原圖像的圖像增強。
同態濾波是一種在頻域中進行的圖像對比度增強和壓縮圖像亮度范圍的特殊方法。同態濾波器能夠減少低頻并且增加高頻,從而能減少光照變化并銳化邊緣細節。圖像的同態濾波技術的依據是圖像獲取過程中的照明反射成像原理。它屬于頻域處理,作用是對圖像灰度范圍進行調整,通過消除圖像上照明不均的問題。非線性濾波器能夠在很好地保護細節的同時, 去除信號中的噪聲,同態濾波器就是一種非線性濾波器,其處理是一種基于特征的對比度增強方法,主要用于減少由于光照不均勻引起的圖像降質,并對感興趣的景物進行有效地增強。
同臺系統適用于服從廣義疊加原理,輸入和輸出之間可以用線性變化表示的系統。圖像的同態濾波是基于以入射光和反射光為基礎的圖像模型上的,如果把圖像函數表示為光照函數,即照射分量與反射分量兩個分量的乘積,那么圖像的模型可以表示為,其中,。的性質取決于成像物體的表面特性。通過對光照分量和反射分量的研究可知,光照分量一般反映灰度的恒定分量,相當于頻域中的低頻信息,減弱入射光就可以起到縮小圖像灰度范圍的作用;而反射光與物體的邊界特性是密切相關的,相當于頻域中的高頻信息,增強反射光就可以起到提高圖像對比度的作用。因此,同態濾波器的傳遞函數一般在低頻部分小于1,高頻部分大于1。
進行同態濾波,首先要對原圖像取對數,目的是使得圖像模型中的乘法運算轉化為簡單的加法運算:
再對對數函數做傅立葉變換,目的是將圖像轉換到頻域:
即,
同態濾波器的傳遞函數H(U,V)
選擇適當的傳遞函數,壓縮照射分量的變化范圍,削弱,增強反射分量的對比度,提升,增強高頻分量,即確定一個合適的。由上分析可知的大致形狀如上圖所示。
???? 假設用一個同態濾波器函數來處理原圖像的對數的傅立葉變換,得
逆變換到空域得
再對取指數即得到最終處理結果:,相當于高通濾波。
?
???????????????? ?? 同態濾波的原理框圖
算法實現及結果分析
核心算法
void homomorphicFiltering(unsigned char* des, const unsigned char* src, int height, int width, double cutoff, int n, double cvar) {int x,y;int ewidth,eheight;Complex* temp = new Complex[width * height]; //圖像的復數形式Complex* eimg1; //擴展后圖像(適應FFT的大小要求)Complex* eimg2; //擴展后圖像Complex* filter; //濾波器//1.轉換圖像形式,并取logfor(y = 0; y < height; y++){for(x = 0; x < width; x++){temp[y * width + x].real = log((double)src[y * width + x] + 1);temp[y * width + x].imag = 0;}}//2.擴展源圖像expand(&eimg1, &ewidth, &eheight, temp, width, height);eimg2 = new Complex[ewidth * eheight];filter = new Complex[ewidth * eheight];//3.獲得濾波器getButterworthFilter(filter, ewidth, eheight, cutoff, n);//4.FFTFFT2D(eimg2, eimg1, ewidth, eheight);//5.濾波filtering(eimg2, ewidth, eheight, filter);//6.IFFTIFFT2D(eimg1, eimg2, ewidth, eheight);//7.還原并取expfor(y = 0; y < height; y++){for(x = 0; x < width; x++){temp[y * width + x].real = exp(eimg1[y * ewidth + x].real);}}//8.歸一化clipNormalization(temp, width, height, cvar);//9.轉換為圖像形式for(y = 0; y < height; y++){for(x = 0; x < width; x++){des[y * width + x] = (unsigned char)temp[y * width + x].real;}} }
?
?
?
?
從實驗結果可知:在頻域內的同態濾波方法只要選取適當的濾波器參數,就可以在增強圖像高頻信息的同時保留部分低頻信息,達到壓縮圖像灰度的動態范圍,增強圖像的對比度的效果。本文通過光照場的頻譜分析,能快速準確地選取濾波器參數。改進的同同態濾波器的參數獲取辦法,有利于快速獲得增強效果好的參數,對光照不均勻的圖像的補償效果更明顯。
?
轉載于:https://www.cnblogs.com/hustlx/p/5245500.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: 第一周作业--软件过程与项目管理
- 下一篇: 【类库】私房干货.Net数据层方法的封装