《MATLAB應(yīng)用圖像處理》課件第7章_第1頁
《MATLAB應(yīng)用圖像處理》課件第7章_第2頁
《MATLAB應(yīng)用圖像處理》課件第7章_第3頁
《MATLAB應(yīng)用圖像處理》課件第7章_第4頁
《MATLAB應(yīng)用圖像處理》課件第7章_第5頁
已閱讀5頁,還剩159頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第7章MATLAB圖像增強(qiáng)與復(fù)原

7.1圖像增強(qiáng)7.2圖像復(fù)原習(xí)題

7.1圖像增強(qiáng)

7.1.1灰度變換增強(qiáng)

1.像素值及其統(tǒng)計特性圖像的灰度變換方法有很多種,其基本原則是利用某種變換函數(shù)對圖像進(jìn)行點運算,從而修改圖像的像素灰度值。顯然,為了選擇一種合理的變換函數(shù),首先要對原始圖像的像素灰度值有個大概的了解,

(1)單個像素的選擇。

MATLAB圖像處理工具箱包括兩個能夠提供指定像素信息的函數(shù):pixval函數(shù)和impiex函數(shù)。當(dāng)鼠標(biāo)在圖像上移動時,pixval函數(shù)將交互式地顯示像素的數(shù)據(jù)值,同時還可以顯示兩個像素間的歐幾里得距離;impiex函數(shù)返回被選擇像素或像素集合的數(shù)據(jù)值,既可以通過輸入?yún)?shù)定義像素坐標(biāo),又可以使用鼠標(biāo)來選擇。使用pixval函數(shù)必須首先顯示圖像,然后輸入privalon命令打開圖像窗口進(jìn)行交互訪問。Prival將在圖形窗口的底部自動添加一個黑色的狀態(tài)欄,這個狀態(tài)欄將顯示當(dāng)前鼠標(biāo)所在像素的x和y坐標(biāo)以及該像素的顏色數(shù)據(jù)。如果用戶在圖像中點擊并拖動鼠標(biāo),那么prival還將顯示最初點擊點與鼠標(biāo)當(dāng)前所在像素之間的歐幾里得距離。如果想退出交互操作,可輸入privaloff命令。如果按照以下格式調(diào)用prival,那么將打開由參數(shù)FIG指定的窗口進(jìn)行交互訪問(OPTION參數(shù)可以為on或off)。

Prival(FIG,OPTION)

Prival函數(shù)給出的像素灰度信息比函數(shù)impixel多,但是impixel函數(shù)的優(yōu)勢在于它能夠?qū)⒔Y(jié)果返回到一個變量中,以后可以通過交互式或非交互式的方法對這個變量進(jìn)行訪問或操作。交互式impixel函數(shù)的調(diào)用格式如下:

[C,R,P]=impixel(X,MAP)

其中,X表示輸入圖像,MAP為索引圖像的調(diào)色板(僅當(dāng)圖像為索引圖像時才有此參數(shù)),C表示指定像素的顏色,R和P表示像素的坐標(biāo)。如果在輸入圖像參數(shù)后面給出兩個指定像素坐標(biāo)的向量,那么impixel函數(shù)將返回指定像素的灰度;如果調(diào)用impixel函數(shù)時沒有指定輸入?yún)?shù),那么系統(tǒng)將自動選擇位于當(dāng)前坐標(biāo)軸中的圖像。在交互方式下,選擇完畢后點擊【返回】命令,impixel函數(shù)將返回被選像素的顏色數(shù)據(jù)。例如,以下代碼首先調(diào)用impixel函數(shù),通過交互方式選擇三個像素,點擊【返回】命令后得到所選像素的數(shù)值:

imshowcanoe.tif

vals=impixel三個被選像素的顏色數(shù)據(jù)如下:

vals=圖7.1獲取單個像素數(shù)值示意圖

0.29020.35290.2588

0.19220.19220.1608

0.22350.19220.1608

0.29020.25880.1922

0.16080.12940.1294從圖7.1中可以看出,第二個像素位于圖中的小船上,圖形顏色與輸出的數(shù)據(jù)一致。圖7.1獲取單個像素數(shù)值示意圖

(2)線段上的像素灰度分布的計算和繪制。函數(shù)improfile能夠計算并繪制圖像中一條或多條線段上的所有像素的灰度值。調(diào)用該函數(shù)時,可以使用端點坐標(biāo)作為輸入?yún)?shù)來定義線段,也可以使用鼠標(biāo)交互式地定義線段。非交互式improfile函數(shù)的調(diào)用格式如下:

C=improfile(I,xi,yi)其中,I為輸入圖像,xi和yi是兩個向量,用來指定線段的端點。C是線段上各點的灰度或顏色值。如果調(diào)用improfile函數(shù)時不指定任何輸入?yún)?shù),那么當(dāng)鼠標(biāo)位于圖像中時會變?yōu)槭中危梢酝ㄟ^點擊鼠標(biāo)定義線段的端點。點擊【返回】命令后,improfile函數(shù)將在下一個新的圖形窗口中顯示所得的線段灰度值的分布情況。無論是交互還是非交互模式,improfile函數(shù)都將使用插值方法來確定曲線上等間隔點的數(shù)值(缺省情況下,improfile函數(shù)使用最近鄰域插值方法,也可以使用自定義的插值方法)。improfile函數(shù)在處理灰度圖像和RGB圖像時能夠獲得非常好的效果。對于單獨的線段,improfile函數(shù)將在二維視圖中繪制點的灰度值;對于多條曲線,improfile函數(shù)將在三維視圖中繪制灰度值。下例首先調(diào)用improfile函數(shù),然后使用鼠標(biāo)指定一條線段,該線段(圖7.2(a)方框中的線段)的起點在上邊,得到的像素分布結(jié)果如圖7.2(b)所示。I=fitsread('solarspectra.fts');imshow(I,[]);improfile圖7.2線段上的像素灰度分布對于RGB圖像,improfile函數(shù)將顯示所選線段上像素的紅、綠、藍(lán)顏色分量的數(shù)值。下例說明了improfile函數(shù)如何操作RGB圖像。圖7.3(a)中的白線表明選擇的線段,起點在左方,灰度分布曲線如圖7.3(b)所示。線段與圖像顏色具有一一對應(yīng)的關(guān)系,例如,圖形的中心區(qū)域說明了紅色和綠色具有較高的亮度,而藍(lán)色亮度較低,這些數(shù)值對應(yīng)于圖像中的線段所經(jīng)過的圖形。

imshowpeppers.png

improfile圖7.3線段上的像素灰度分布

(3)圖像等高線??梢允褂霉ぞ呦浜瘮?shù)imcontour來顯示灰度圖像數(shù)據(jù)的等高線圖形,這個函數(shù)與MATLAB的contour函數(shù)類似,但是imcontour函數(shù)能夠自動進(jìn)行坐標(biāo)軸設(shè)置,使輸出圖形的方向和外觀與圖像吻合。imcontour函數(shù)的調(diào)用格式非常簡單,下例將顯示一幅灰度圖像(如圖7.4(a)所示)以及圖像數(shù)據(jù)的等高線圖(如圖7.4(b)所示):

I=imread('rice.png');

imshow(I)

figure,imcontour(I,3)圖7.4灰度圖像與其等高線圖形比較對于imcontour函數(shù)生成的圖形,可以使用MATLAB的標(biāo)記函數(shù)對其進(jìn)行標(biāo)記。例如,使用clabel函數(shù)來生成一個坐標(biāo)軸標(biāo)簽。

(4)直方圖。圖像的直方圖是一個顯示灰度或索引圖像亮度分布情況的圖表。圖像直方圖函數(shù)imhist通過使用n個等間隔的柱(每一柱代表一個數(shù)值范圍)來創(chuàng)建這個圖表,然后計算每個范圍內(nèi)的像素個數(shù)。imhist函數(shù)的調(diào)用以圖像和所需的柱數(shù)目作為輸入?yún)?shù),自動繪制圖像的直方圖。下面這個例子將顯示一幅米粒圖像(如圖7.5(a)所示)和一個64柱的直方圖(如圖7.5(b)所示)。

I=imread('rice.png');

imshow(I)

figure,imhist(I,64)圖7.5圖像與其直方圖比較根據(jù)直方圖顯示,數(shù)值100附近出現(xiàn)了一個高峰,這個高峰對應(yīng)于米粒圖像中的背景像素。

(5)統(tǒng)計摘要。可以使用工具箱函數(shù)mean2、std2和corr2來計算圖像的標(biāo)準(zhǔn)統(tǒng)計特性。mean2和std2函數(shù)計算矩陣元素的平均值和標(biāo)準(zhǔn)偏差;corr2函數(shù)計算兩個相同大小矩陣的相關(guān)系數(shù)。事實上,以上這些函數(shù)都是MATLAB內(nèi)核函數(shù)mean、std和corrcoef的二維版本。

(6)區(qū)域?qū)傩远攘?。圖7.6硬幣邊緣可以使用regionprops函數(shù)計算圖像的區(qū)域?qū)傩?如面積、質(zhì)心、區(qū)域邊框等)。例如,調(diào)用以下命令先做出一個如圖7.6所示的硬幣邊緣圖像:

I=imread('coins.png');

BW=edge(I,'sobel');

figure,imshow(BW)然后調(diào)用regionprops函數(shù),

L=bwlabel(BW);

Stats=regionprops(L,'all');

Stats(23)

可以得到以下的圖像屬性統(tǒng)計結(jié)果:ans=Area:5Centroid:[51.200047]BoundingBox:[49.500044.500045]SubarrayIdx:{[4546474849][50515253]}MajorAxisLength:7.3702MinorAxisLength:1.4513Eccentricity:0.9804Orientation:-50.6550ConvexHull:[7x2double]

ConvexImage:[5x4logical]ConvexArea:7Image:[5x4logical]FilledImage:[5x4logical]FilledArea:5EulerNumber:1Extrema:[8x2double]EquivDiameter:2.5231Solidity:0.7143Extent:0.2500PixelIdxList:[5x1double]PixelList:[5x2double]Perimeter:10.4853

2.直方圖灰度變換根據(jù)以上介紹的圖像統(tǒng)計信息可以推斷出許多種圖像灰度變換方法,其中最常用的就是直方圖變換方法,下面將對直方圖變換方法做詳細(xì)的說明。直方圖是圖像分析中用來說明圖像灰度分布的圖形,直方圖的每一個分支表示對應(yīng)灰度級出現(xiàn)的頻數(shù)(即該灰度級像素個數(shù)與像素總數(shù)的比值)。根據(jù)直方圖的信息可以選擇一種合理的變換算法對圖像進(jìn)行增強(qiáng)操作。例如,如果一幅圖像的直方圖說明該圖像的灰度值較小,那么可以使用一個線性灰度調(diào)節(jié)函數(shù)來增大圖像每一個像素的灰度值。如果用變量f代表輸入圖像中的像素灰度,用g代表輸出圖像中的像素灰度,那么f和g都是數(shù)值在[0,255]范圍內(nèi)的連續(xù)隨機(jī)變量。設(shè)輸入和輸出圖像的灰度概率密度函數(shù)分別為Pf?(?f?)和Pg(g),那么所謂的直方圖變換就是利用一個轉(zhuǎn)移函數(shù)φ對輸入圖像的像素灰度f進(jìn)行計算,求出輸出像素灰度g?=?φ?(f?),使得Pg(g)服從某種指定的概率密度分布形式,常見的有均勻分布、指數(shù)分布、雙曲線分布等。根據(jù)概率密度分布的不同形式,采用的轉(zhuǎn)移函數(shù)形式也不同。表7.1給出了幾種不同輸出圖像灰度概率密度分布情況所對應(yīng)的轉(zhuǎn)移函數(shù)表達(dá)式,其中,輸入圖像灰度級個數(shù)為L,f的灰度區(qū)間為[fmin,fmax],g的灰度區(qū)間為[gmin,gmax],C(?f?)表示輸入圖像灰度的累計分布函數(shù),其定義如下:表7.1各種概率分布下的概率分布密度及其轉(zhuǎn)移函數(shù)(7.1)圖像處理中經(jīng)常利用的直方圖均衡化就是使輸出像素灰度的概率密度均勻分布的灰度變換方法。轉(zhuǎn)移函數(shù)編程計算通常都是比較復(fù)雜的,在實際應(yīng)用中,一般采用較為簡單的轉(zhuǎn)移函數(shù)形式來實現(xiàn)特殊要求的圖像增強(qiáng)效果。MATLAB的圖像處理工具箱提供了一個灰度變換函數(shù)imadjust函數(shù)來實現(xiàn)圖像的直方圖調(diào)節(jié)。imadjust函數(shù)的一般調(diào)用格式如下:

J=imadjust(I,[low_inhigh_in],[low_outhigh_out])其中,low_in和high_in參數(shù)分別用來指定輸入圖像需要映射的灰度范圍,low_out和high_out指定輸出圖像所在的灰度范圍。另外,imadjust函數(shù)還可以接受一個可選的參數(shù)來指定修正因數(shù),根據(jù)值的不同,輸入圖像與輸出圖像間的映射可能是非線性的。圖7.7說明了imadjust函數(shù)轉(zhuǎn)移函數(shù)的形式和參數(shù),缺省情況下γ?=?1,表示在low和high之間的數(shù)值將會線性地映射為bottom和top之間的數(shù)值??梢允菑?到無窮的任意數(shù)值。如果γ數(shù)值為1,那么映射將是線性的;如果γ<1,那么映射將會對圖像的像素灰度值加權(quán),使輸出像素灰度值比原來大;如果γ>1,那么映射加權(quán)后的灰度值比原來小。圖7.7給出了γ<1、γ=1和γ>1時的數(shù)值映射曲線,其中x軸代表輸入圖像的灰度值,y軸代表輸出圖像的灰度值。圖7.7不同γ值對應(yīng)的轉(zhuǎn)移函數(shù)曲線下面通過一個例子來說明imadjust函數(shù)的使用方法。從圖7.5(a)中可以看出,圖像rice.tif是一個對比度較低的函數(shù),可以使用直方圖灰度變換來改善圖像的對比度,該圖像的直方圖參見圖7.5(b)。從圖7.5(b)中可以看出,該圖像的灰度值全部位于40~255之間。下面使用imadjust函數(shù)將圖像的灰度值重新進(jìn)行映射,使之填滿整個灰度值允許的范圍[0,255],其代碼為

I=imread('rice.png');

J=imadjust(I,[0.150.9],[01]);

imshow(J)

figure,imhist(J,64)其中,imadjust函數(shù)的第二個向量[0.150.9]指定需要映射的灰度值范圍,第三個向量[01]指定希望映射到的灰度值范圍。因此,輸入圖像中的灰度值0.15將被映射為輸出圖像中的0,0.9將被映射為1。直方圖變換后的圖像及其直方圖如圖7.8(a)、(b)所示,從圖中可以看出,變換后的直方圖將填滿整個灰度范圍。圖7.8均衡化后的圖像及其直方圖無論I是哪一種數(shù)據(jù)類型,指定的灰度值必須是0~1范圍內(nèi)的數(shù)值。如果I是uint8類型的,那么真正用于判斷的灰度值將是指定值乘以255的結(jié)果;如果I是uint16類型的,那么真正用于判斷的灰度值將是指定值乘以65535的結(jié)果。事實上,除了增強(qiáng)或減弱圖像的對比度,還可以使用imadjust函數(shù)實現(xiàn)很多種類的圖像增強(qiáng)。例如在圖7.9(a)中,人物外衣的顏色比較灰暗,不能夠體現(xiàn)其細(xì)節(jié)。調(diào)用imadjust函數(shù)將圖7.9(a)所示的輸入圖像(uint8類型)的灰度范圍從[0,51]映射到[128,255.],則輸出圖像如圖7.9(b)所示,其代碼如下:

I=imread('cameraman.tif');

J=imadjust(I,[00.2],[0.51]);

imshow(I)

figure,imshow(J)圖7.9亮度調(diào)節(jié)前后圖像顯示效果比較上述操作將會大大提高圖像的亮度,也使得原始圖像灰暗部分的動態(tài)變化范圍大大增加,從而使外衣的細(xì)節(jié)更容易觀察。然而,由于原始圖像中所有大于51的數(shù)值都將被映射為調(diào)節(jié)圖像后的255,所有變換后的圖像看起來像是被“洗白”了一樣。從以上例子可以看出,使用imadjust函數(shù)必須按照以下兩個步驟來進(jìn)行:

(1)觀察圖像的直方圖,判斷灰度范圍。

(2)將灰度范圍轉(zhuǎn)換為0~1之間的分?jǐn)?shù),使得灰度范圍可以通過向量[low_outhigh_out]傳遞給imadjust函數(shù)。下面來看imadjust函數(shù)的可選參數(shù)γ的修正效果。在MATLAB中,如果調(diào)用函數(shù)時以空矩陣作為某一個參數(shù),那么該參數(shù)就會使用缺省值。下面這個例子中的輸入、輸出灰度范圍都是空矩陣,那么這兩個范圍就會使用缺省值[0,1],這意味著imadjust函數(shù)不會改變圖像的灰度范圍,從而可以更好地觀察修正的效果。取γ?=?0.5,圖像變換前、后的顯示效果如圖7.10所示。

[X,map]=imread('forest.tif');

I=ind2gray(X,map);

J=imadjust(I,[],[],0.5);

imshow(I)

figure,imshow(J)圖7.10γ修正前、后的圖像顯示效果對比

3.直方圖均衡化直方圖均衡化是一種使輸出圖像直方圖近似均勻分布的變換算法。均勻量化的自然圖像的灰度直方圖通常在低值灰度區(qū)間上的頻率較大,使得圖像中較暗區(qū)域中的細(xì)節(jié)常常看不清楚。為了使圖像清晰,可將圖像的灰度范圍拉開,并且讓灰度頻率較小的灰度級增大,即讓灰度直方圖在較大的動態(tài)范圍內(nèi)趨于一致。用圖像f?(x,y)的直方圖代替灰度的分布密度函數(shù)Pf?(?f?),則直方圖均衡化后的圖像g為對于數(shù)字圖像,可以將上述公式離散化。設(shè)原圖像的像素總數(shù)為N,灰度級的個數(shù)為L,第k個灰度級出現(xiàn)的頻數(shù)為nk。若原圖像f?(x,y)在像素點(x,y)處的灰度為rk,則直方圖均衡化后的圖像g(x,y)在像素點(x,y)處的灰度sk為在MATLAB中,可以調(diào)用函數(shù)histeq自動完成圖像的直方圖均衡化。對于灰度圖像,histeq函數(shù)的調(diào)用格式如下:J=histeq(I,n)其中,n表示輸出圖像的灰度級數(shù)目,是一個可選參數(shù),缺省值為64。對于索引圖像,其調(diào)用格式如下:newmap=histeq(X,map)其中,索引圖像的返回值newmap將是輸出圖像的調(diào)色板。以下面這個例子來說明如何調(diào)用histeq函數(shù)來調(diào)節(jié)一幅灰度圖像。

I=imread('pout.tif');

J=histeq(I);

subplot(1,2,1),imshow(I);

subplot(1,2,2),imshow(J)直方圖均衡化前后圖像的比較如圖7.11所示,可以看出,經(jīng)過直方圖均衡化后,圖像的細(xì)節(jié)更加清楚了,但由于直方圖均衡化沒有考慮圖像的內(nèi)容,所以均衡化后的圖像亮度過高。圖7.11直方圖均衡化前后圖像顯示效果比較調(diào)用下面的命令可以顯示圖7.11中兩幅圖的直方圖(如圖7.12所示):

I=imread('pout.tif');

J=histeq(I);

subplot(1,2,1),imhist(I,64)

subplot(1,2,2),imhist(J,64)從圖7.12中可看出,在直方圖調(diào)整前,中灰度的比例較大,經(jīng)過直方圖調(diào)整后,各灰度等級的比例更加平衡。圖7.12均衡化前、后的直方圖比較可以根據(jù)histeq函數(shù)的返回值繪制轉(zhuǎn)移函數(shù)的變換曲線,例如,以下代碼將繪制如圖7.13所示的轉(zhuǎn)移函數(shù)變換曲線:

I=imread('pout.tif');

[J,T]=histeq(I);

figure,plot((0:255)/255,T);圖7.13直方圖均衡化轉(zhuǎn)移函數(shù)曲線在某些情況下,為了增強(qiáng)圖像中某些灰度級的范圍,輸出圖像的直方圖是人為設(shè)計的,并且很難用數(shù)學(xué)模型來描述,此時可以使用直方圖規(guī)定化方法來增強(qiáng)圖像。histeq函數(shù)可通過對灰度值進(jìn)行變換實現(xiàn)直方圖規(guī)定化,使輸出圖像的直方圖自動匹配指定的直方圖。此時,對于灰度圖像,函數(shù)的調(diào)用格式如下:

J=histeq(I,n,hgram)對于索引圖像,其調(diào)用格式如下:

newmap-histeq(X,map,hgram)其中,hgram為指定的直方圖向量,其長度代表直方圖的柱數(shù),每一個數(shù)值代表每一柱的像素數(shù)目,n表示離散等級。7.1.2空域濾波增強(qiáng)空域濾波是在圖像空間中借助模板對圖像進(jìn)行鄰域操作的,輸出圖像每一個像素的取值都是根據(jù)模板對輸入像素相應(yīng)鄰域內(nèi)的像素值進(jìn)行計算得到的。一般情況下,像素的鄰域比該像素要大,也就是說這個像素的鄰域中除了該像素本身以外還包括了其它像素。以g(x,y)和f?(x,y)分別代表增強(qiáng)前后的圖像,在這種情況下,g(x,y)在(x,y)位置處的值不僅取決于f?(x,y)在(x,y)位置處的值,而且取決于f?(x,y)在以(x,y)為中心的鄰域內(nèi)所有像素的值。如以s和t分別表示f?(x,y)和g(x,y)在(x,y)位置處的灰度值,以n(s)表示

f?(x,y)在(x,y)鄰域內(nèi)像素的灰度值,則

T?=?EH[s,n(s)]為了在鄰域內(nèi)實現(xiàn)增強(qiáng)操作,可利用模板與圖像進(jìn)行卷積。每個模板實際上是一個二維數(shù)組,其中各個元素的取值決定了模板的功能,這種模板操作被稱為空域濾波。1.基本原理及分類根據(jù)其特點,空域濾波一般可分為線性濾波和非線性濾波兩類。線性濾波器的設(shè)計?;趯Ω盗⑷~變換的分析。非線性空域濾波器則一般直接對鄰域進(jìn)行操作。另外各種空域濾波器根據(jù)功能又主要分成平滑濾波器和銳化濾波器。平滑可以用低通來實現(xiàn),平滑的目的可分為兩類:一類是模糊,目的是在提取較大的目標(biāo)前去除太小的細(xì)節(jié)或?qū)⒛繕?biāo)內(nèi)的小間斷連接起來;另一類是消除噪聲。銳化可以用高通濾波來實現(xiàn),銳化的目的是增強(qiáng)被模糊的細(xì)節(jié)。綜合這兩種分類法,可將空域濾波增強(qiáng)方法分成4類:

(1)線性平滑濾波器(低通)。

(2)非線性平滑濾波器(高通)。

(3)線性銳化濾波器(低通)。

(4)非線性銳化濾波器(高通)。空域濾波器的工作原理都可借助頻域進(jìn)行分析。它們的基本特點都是讓圖像在傅立葉空間的某個范圍的分量受到抑制,而讓其它分量不受影響,從而改變輸出圖像的頻率分布,達(dá)到增強(qiáng)的目的。在增強(qiáng)中用到的空間濾波器主要有兩類:

(1)平滑(低通)濾波器。它能減弱或消除傅立葉空間的高頻分量,但不影響低頻分量。因為高頻分量對應(yīng)于圖像中邊緣等灰度值具有較大較快變化的部分,濾波器將這些分量濾去可使圖像平滑。

(2)銳化(高通)濾波器。它能減弱或消除傅立葉空間的低頻分量,但不影響高頻分量。因為低頻分量對應(yīng)于圖像中灰度值緩慢變化的區(qū)域,因而與圖像的整體特性,如整體對比度和平均灰度值等有關(guān),將這些分量濾去可使圖像銳化??沼驗V波器都是利用模板卷積,主要步驟如下:

(1)將模板在圖中移到,并將模板中心與圖中某個像素位置重合。

(2)將模板上的系數(shù)與模板下對應(yīng)的像素值相乘。

(3)將所有乘積相加。

(4)將和(模板的輸出響應(yīng))賦給圖中對應(yīng)模板中心位置的像素。圖7.14(a)中給出了一幅圖像的一部分,其中所標(biāo)的是一些像素的灰度值,現(xiàn)設(shè)有一個3×3的模板如圖7.14(b)所示,模板中所標(biāo)的是模板系數(shù)。如將k0所在位置與圖中灰度值為s0的像素重合(也就是將模板中心放在圖中(x,y)位置),模板的輸出響應(yīng)R為R=k0s0+k1s1+…+k8s8圖7.14用3×3模板進(jìn)行空域濾波的示意圖

2.平滑濾波器

1)線性平滑濾波器線性低通濾波器是最常用的線性平滑濾波器,這種濾波器的所有系數(shù)都是正的。對3×3的模板來說,最簡單的操作是取所有系數(shù)都為1。為保證輸出圖像仍在原來的灰度范圍內(nèi),在計算出R后要將其除以9再進(jìn)行賦值,這種方法稱為鄰域平均法。以下面這個例子來說明均值過濾器的應(yīng)用。例如,以圖7.15(a)中的tire.tif為例,加入椒鹽噪聲,并在MATLAB中調(diào)用B=filter2(h,A)實現(xiàn)均值過濾器,其中B=filter2(h,A)返回圖像A經(jīng)算子h濾波的結(jié)果。

I=imread('tire.tif');

J=imnoise(I,'salt&pepper',0.02); %加入椒鹽噪聲

imshow(I)

figure,imshow(J)

K1=filter2(fspecial('average',3),J)/255; %(fspecial('average',3)用來創(chuàng)建3?×?3的 均值濾波器

K2=filter2(fspecial('average',7),J)/255; %(fspecial('average',7)用來創(chuàng)建7?×?7的均值濾波器

figure,imshow(K1)

figure,imshow(K2)加入椒鹽噪聲的圖像和均值濾波后的圖像分別如圖7.15所示。圖7.15原始圖像及均值濾波圖像比較以上采用不同尺寸的均值濾波器進(jìn)行低通濾波處理后的結(jié)果可知,當(dāng)所用的平滑模板的尺寸增大時,消除噪聲的效果增強(qiáng),但同時所得到的圖像變得更模糊,細(xì)節(jié)的銳化程度逐步減弱。此外,維納濾波器也是經(jīng)典的線性降噪濾波器。維納濾波是一種自適應(yīng)濾波,它能根據(jù)圖像的局部方差調(diào)整濾波器的輸出。局部方差越大,濾波器的平滑作用越強(qiáng)。以下面這個例子說明維納濾波器的應(yīng)用。例如,在MATLAB中調(diào)用J=wiener2(I,[m,n],noise),其中[m,n]指定濾波器的窗口大小為m?×?n,默認(rèn)值為3?×?3,noise指定可噪聲的功率,默認(rèn)的是加性噪聲(高斯白噪聲),代碼如下:

I=imread('tire.tif');

J=imnoise(I,'gaussian',0,0.005);

imshow(J)

K1=wiener2(J,[5,5]);

figure,imshow(K1)

wiener2函數(shù)方差適用于圖像中的白噪聲(比如高斯白噪聲),加入高斯噪聲的圖像和維納濾波后的圖像如圖7.16所示。圖7.16加入高斯噪聲的圖像和維納濾波后的圖像

2)非線性平滑濾波器中值濾波器是一種常用的非線性平滑濾波器。它是一種鄰域運算,類似于卷積,但計算的不是加權(quán)求和,而是把鄰域中的像素按灰度級進(jìn)行排序,然后選擇該序列的中間值作為輸出像素值。具體步驟如下:

(1)將模板在圖像中移動,并將模板中心與圖像中某個像素的位置重合。

(2)讀取模板中下一個對應(yīng)像素的灰度值。

(3)將這些灰度值從小到大排成一列。

(4)找出這些值中排在中間的一個。

(5)將這個中間值賦給對應(yīng)模板中心位置的像素。由此看出,中值濾波器的主要功能就是讓與周圍像素灰度值的差比較大的像素改取與周圍的像素值接近的值,從而消除孤立的噪聲點。下面這個例子分別調(diào)用B=medfilt2(A,[m,n])和B=ordfilt2(A,order,domain)來實現(xiàn)中值濾波。例如,以tire.tif為例,加入椒鹽噪聲,并分別調(diào)用B=medfilt2(A,[m,n])和B=ordfilt2(A,order,domain)來實現(xiàn)中值濾波,其中[m,n]表示采用m?×?n的模板,domain表示鄰域的形狀,order表示索取的像素在鄰域像素的排序中所處的位置。

I=imread('tire.tif');

J=imnoise(I,'salt&pepper',0.02);%加入椒鹽噪聲

K1=medfilt2(J,[3,3]);%調(diào)用B=medfilt2(A,[m,n])函數(shù)

figure,imshow(K1)

K1=ordfilt2(I,5,ones(3,3));%調(diào)用B=ordfilt2(A,order,domain)函數(shù)

figure,imshow(K1)調(diào)用B=medfilt2(A,[m,n])和B=ordfilt2(A,order,domain)來實現(xiàn)中值濾波器處理后的圖像如圖7.17所示。圖7.17中值濾波后的圖像由以上處理結(jié)果可以看出,中值濾波器不像均值濾波器那樣,它在衰減噪聲的同時不會使圖像的邊界模糊。中值濾波器去噪的效果依賴于兩個要素:鄰域的空間范圍和中值計算中所涉及的像素數(shù)。一般來說,小于中值濾波器面積一半的亮或暗的物體基本上會被濾掉,而較大的物體則幾乎會原封不動地保存下來。

3.銳化濾波器

1)線性銳化濾波器線性高通濾波器是最常用的線性銳化濾波器。這種濾波器的中心系數(shù)都是正的,而周圍的系數(shù)都是負(fù)的。對3?×?3的模板來說,典型的系數(shù)取值是:事實上這是拉普拉斯算子,所有系數(shù)之和為0。當(dāng)這樣的模板放在圖像中灰度值是常數(shù)或變化很小的區(qū)域時,其輸出為0或很小。這個濾波器將原來圖像中的零頻率分量去除,也就是將輸出圖像的平均灰度值變?yōu)?,這樣就會有一部分像素灰度值小于0。在圖像處理中,我們一般只考慮正的灰度值,所以還要將輸出圖像的灰度值范圍通過尺度變換變回到所要求的范圍。在MATLAB中可通過調(diào)用filter2函數(shù)和fspecial函數(shù)來實現(xiàn),代碼如下:

I=imread('tire.tif');

h=fspecial('laplacian');%fspecial('laplacian',alpha)函數(shù)中,alpha控制

%拉普拉斯算子的形狀,取值范圍為[0,1],默認(rèn)值0.2

K=filter2(h,I);

imshow(I)

figure,imshow(K)原始圖像和處理后的圖像如圖7.18所示。圖7.18加入高斯噪聲的圖像和維納濾波后圖像采用“unsharp”算子實現(xiàn)對比度增強(qiáng)濾波,代碼如下:

I=imread('tire.tif');

h=fspecial('unsharp',0.5);%在h=fspecial('unsharp',alpha)函數(shù)中,alpha

%控制濾波器的形狀,取值范圍為[0,1],默認(rèn)值為0.2

K=filter2(h,I)/255;

figure,imshow(K)處理后的圖像如圖7.19所示。圖7.19對比度增強(qiáng)濾波器處理后的圖像

2)非線性銳化濾波器鄰域平均可以模糊圖像,因為平均對應(yīng)積分,所以利用微分可以銳化圖像。圖像處理中最常用的微分方法是利用梯度。在MATLAB中常用空域微分算子sobel算子、prewitt算子、高斯-拉普拉斯算子等來實現(xiàn)非線性銳化濾波器。下面這個例子顯示了幾種邊緣增強(qiáng)算子在圖像增強(qiáng)中的不同效果。

I=imread('eight.tif');

figure,imshow(I)

h1=fspecial('sobel');

K1=filter2(h1,I);

figure,imshow(K1)

h2=fspecial('prewitt');

K2=filter2(h2,I);

figure,imshow(K2)

h3=fspecial('log');

K3=filter2(h3,I);

figure,imshow(K3)結(jié)果如圖7.20所示。圖7.20幾種算子處理后的圖像7.1.3頻域增強(qiáng)卷積理論是頻域技術(shù)的基礎(chǔ)。頻域增強(qiáng)的主要步驟如下:

(1)計算待增強(qiáng)圖像的傅立葉變換;

(2)將其與一個(根據(jù)需要設(shè)計的)轉(zhuǎn)移函數(shù)相乘;

(3)再將結(jié)果進(jìn)行傅立葉反變換以得到增強(qiáng)的圖像。頻域增強(qiáng)的方法有兩個關(guān)鍵點:

(1)將圖像從空域轉(zhuǎn)換到頻域所需的變換及將圖像從頻域空間轉(zhuǎn)換回空域所需的變換;

(2)在頻域空間對圖像進(jìn)行增強(qiáng)的操作。根據(jù)適用范圍的不同,常用的頻域增強(qiáng)方法有低通濾波和高通濾波。

1.低通濾波一般來說,圖像的邊緣和噪聲對應(yīng)于傅立葉變換中的高頻部分,所以能夠讓低頻信號通過而同時濾掉高頻分量的低通濾波器能夠平滑圖像,去除噪聲。常用的幾種頻域低通濾波器有理想低通濾波器、巴特沃斯(Butterworth)低通濾波器、指數(shù)低通濾波器,其傳遞函數(shù)形式如下:

(1)理想低通濾波器。(2)巴特沃斯(Butterworth)低通濾波器。(3)指數(shù)低通濾波器。其中,表示點(u,v)到原點的距離,D0表示截止頻率點到原點的距離。巴特沃斯(Butterworth)低通濾波器是一種物理上可以實現(xiàn)的濾波器,以下面這個例子來說明巴特沃斯低通濾波器在MATLAB中的實現(xiàn)。

I1=imread('saturn.png');I2=imnoise(I1,'salt&pepper');f=double(I2);%傅立葉變換g=fft2(f);%轉(zhuǎn)換數(shù)據(jù)矩陣g=fftshift(g);[N1,N2]=size(g);n=2;d0=50;n1=fix(N1/2);n2=fix(N2/2);fori=1:N1forj=1:N2d=sqrt((i-n1)^2+(j-n2)^2);%計算巴特沃斯低通轉(zhuǎn)換函數(shù)h=1/(1+0.414*(d/d0)^(2*n));result(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));subplot(1,3,1),imshow(I1)subplot(1,3,2),imshow(I2)subplot(1,3,3),imshow(X3)原圖和處理結(jié)果如圖7.21所示。圖7.21原圖和低通濾波處理圖像

2.高通濾波由于圖像中灰度發(fā)生驟變的部分與其頻譜的高頻分量相對應(yīng),所以采用高通濾波器衰減或抑制低頻分量,使高頻分量暢通并能對圖像進(jìn)行銳化處理。常用的高通濾波器有理想高通濾波器、巴特沃斯高通濾波器、指數(shù)高通濾波器,其傳遞函數(shù)形式分別為

(1)理想高通濾波器。(2)巴特沃斯高通濾波器。(3)指數(shù)高通濾波器。下面以一個例子來說明巴特沃斯高通濾波器在MATLAB中的實現(xiàn)。

I1=imread('eight.tif');

f=double(I1);

g=fft2(f); %傅立葉變換

g=fftshift(g); %轉(zhuǎn)換數(shù)據(jù)矩陣

[N1,N2]=size(g);

n=2;

d0=50;

n1=fix(N1/2);

n2=fix(N2/2);fori=1:N1forj=1:N2d=sqrt((i-n1)^2+(j-n2)^2);ifd==0h=0;elseh=1/(1+(d0/d)^(2*n));endresult(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));subplot(1,2,1),imshow(I1)subplot(1,2,2),imshow(X3)原始圖像和高通濾波后的圖像如圖7.22所示。圖7.22原始圖像和高通濾波后的圖像從圖中可以看出,高通濾波后的圖像很昏暗,很多細(xì)節(jié)都看不清。這是由于圖像中的大部分能量集中在低頻區(qū)域,而高通濾波使圖中各區(qū)域的邊界得到較明顯的增強(qiáng)的同時濾掉了低頻分量,使圖中原來比較平滑的區(qū)域內(nèi)部的灰度動態(tài)范圍被壓縮,因而整幅圖變得比較昏暗。7.1.4色彩增強(qiáng)

1.色彩增強(qiáng)概述在圖像的自動分析中,色彩是一種能夠簡化目標(biāo)提取和分類的重要參數(shù)。雖然人眼只能分辨幾十種不同深淺的灰度級,但是卻能夠分辨幾千種不同的顏色,因此在圖像處理中常常借助色彩來處理圖像,以增強(qiáng)人眼的視覺效果。通常采用的色彩增強(qiáng)方法可以分為偽色彩增強(qiáng)和真色彩增強(qiáng)兩種,這兩種方法的原理上存在著巨大的差別。偽彩色增強(qiáng)是對原來灰度圖像中不同灰度值區(qū)域分別賦予不同的顏色,使人眼能夠更明白地區(qū)分不同的灰度級。由于原始圖像事實上是沒有顏色的,所以稱這種人工賦予的顏色為偽彩色。偽彩色增強(qiáng)實質(zhì)上只是一個圖像的著色過程,是一種灰度到彩色的映射技術(shù);真彩色增強(qiáng)則是對原始圖像本身所具有的顏色進(jìn)行調(diào)節(jié),是一個色彩到色彩的映射過程。由此可見,兩者有著本質(zhì)的區(qū)別。下面將對這兩種方法進(jìn)行詳細(xì)介紹。

2.偽彩色增強(qiáng)偽彩色增強(qiáng)是一種將二維圖像像素逐點映射到由三基色確定的三維色度空間中的技術(shù),其目的在于利用人眼對色彩的敏感性,應(yīng)用偽彩色技術(shù)使圖像中的不同物體具有一定的色差,從而提高人對圖像的分辨能力。偽彩色處理可以分為空域增強(qiáng)和頻域增強(qiáng)兩種??沼騻尾噬幚韺嶋H上是將圖像的灰度范圍劃分為若干等級區(qū)間,每一個區(qū)間映射為某一種顏色??沼騻尾噬幚硎腔陬l域運算基礎(chǔ)上的偽彩色處理方法。輸入圖像經(jīng)過傅立葉變換得到圖像的頻譜,然后將頻譜的各個分量分別送到R、G、B三個通道進(jìn)行濾波,最后對各通道作傅立葉反變換,得到空域的R、G、B分量,最終產(chǎn)生彩色圖像。

MATLAB圖像處理工具箱沒有專門的圖像偽彩色處理函數(shù),但是工具箱中包含許多可以用來實現(xiàn)偽彩色的函數(shù)。例如,灰度圖像類型轉(zhuǎn)換函數(shù)grayslice、gray2ind等,這些函數(shù)都是使用空域增強(qiáng)方法來實現(xiàn)圖像的偽彩色顯示的,可以通過設(shè)置函數(shù)的參數(shù)來選擇調(diào)色板,也可以使用函數(shù)默認(rèn)的調(diào)色板來進(jìn)行灰度映射。

3.真彩色增強(qiáng)在MATLAB中,調(diào)用imfilter函數(shù)對一幅真彩色(三維數(shù)據(jù))圖像使用二維濾波器進(jìn)行濾波就相當(dāng)于使用同一個二維濾波器對數(shù)據(jù)的每一個平面單獨進(jìn)行濾波。下面這個例子使用均值濾波器對一幅真彩色圖像的每一個顏色平面進(jìn)行濾波,濾波結(jié)果如圖7.23所示。

I=imread('peppers.png');

h=ones(9,9)/81;

I2=imfilter(I,h);

subplot(1,2,1),imshow(I)

subplot(1,2,2),imshow(I2)圖7.23彩色圖像均值濾波前、后顯示效果對比7.2圖像復(fù)原

7.2.1模糊及噪聲為了說明MATLAB圖像復(fù)原函數(shù)的效果,針對每一個例子中的復(fù)原或噪聲圖像我們都給出了其原始圖像f,用來表示在圖像獲取狀態(tài)完美無缺的情況下所應(yīng)該具有的性質(zhì)(f實際上并不存在)。這樣就可以將復(fù)原后的圖像與原始圖像進(jìn)行比較,從而看出復(fù)原的效果。事實上例子中給出的模糊或噪聲圖像都是通過對原始圖像人為添加運動模糊和各種噪聲而形成的?;谝陨系脑?,這里首先對MATLAB圖像模糊化和添加噪聲的函數(shù)作一介紹。為了創(chuàng)建模糊化的圖像,通常使用MATLAB的圖像處理工具箱中的fspecial函數(shù)創(chuàng)建一個確定類型的點散布函數(shù)(PSF),然后使用這個PSF對原始圖像進(jìn)行卷積,從而得到模糊化的圖像。fspecial函數(shù)調(diào)用格式為

h=fspecial(type,parameters)其中,type為數(shù)據(jù)類型,parameters為相應(yīng)的參數(shù)。下面以例7.1和7.2來說明fspecial函數(shù)的使用。例7.1創(chuàng)建一個仿真運動模糊的PSF來模糊如圖7.24(a)所示的圖像,指定運動位移為31個像素,運動角度為11°。首先使用fspecial函數(shù)創(chuàng)建PSF,然后調(diào)用imfilter函數(shù)使用PSF圖像對原始圖像I進(jìn)行卷積,這樣就可以得到一幅模糊圖像Blurred。

I=imread('cameraman.tif');

subplot(1,2,1);imshow(I);

LEN=31;

THETA=11;

PSF=fspecial('motion',LEN,THETA);

Blurred=imfilter(I,PSF,'circular','conv');

subplot(1,2,2);imshow(Blurred);模糊化的圖像如圖7.24(b)所示。圖7.24模糊化前后圖像顯示效果對比例7.2對圖7.24(a)所示的圖像分別采用運動PSF和均值濾波PSF進(jìn)行模糊,觀察不同PSF產(chǎn)生的效果。

I=imread('cameraman.tif');

H=fspecial('motion',20,45);

MotionBlur=imfilter(I,H,'replicate');

subplot(1,2,1);imshow(MotionBlur);

H=fspecial('disk',10);

blurred=imfilter(I,H,'replicate');

subplot(1,2,2);imshow(blurred);兩種PSF產(chǎn)生的不同模糊化圖像分別如圖7.25(a)、(b)所示。圖7.25運動PSF和均值濾波PSF產(chǎn)生的模糊圖像效果比較一般在需要復(fù)原的圖像中不僅包含模糊成分,而且還有一些額外的噪聲成分。在MATLAB中可以使用兩種方法模擬圖像噪聲:一種是使用imnoise函數(shù)直接對圖像添加固定類型的噪聲;另一種是創(chuàng)建自定義的噪聲,然后使用MATLAB圖像代數(shù)運算函數(shù)imadd將其添加到圖像中。下面以例7.3、7.4來說明這兩種方法的具體操作。例7.3給圖7.24(a)所示的圖像添加均值為0、方差為0.02的高斯噪聲。

I=imread('cameraman.tif');

V=0.02;

Noisy=imnoise(I,'gaussian',0,V);

figure;imshow(Noisy)對于高斯噪聲、泊松噪聲、椒鹽噪聲等MATLAB系統(tǒng)預(yù)定義的噪聲類型來說,使用imnoise函數(shù)將其添加到圖像中是MATLAB噪聲模擬最簡單的方法。本例添加高斯噪聲后的圖像如圖7.26所示。圖7.26添加高斯噪聲后圖像效果例7.4給圖7.24(a)所示的圖像添加隨機(jī)噪聲。由于imnoise函數(shù)不提供隨機(jī)噪聲添加功能,所以使用以上介紹的第二種方法來完成所需工作。

I=imread('cameraman.tif');

noise=0.1*randn(size(I));

Noisy=imadd(I,im2uint8(noise));

figure,imshow(Noisy)添加隨機(jī)噪聲后的圖像如圖7.27所示。圖7.27添加隨機(jī)噪聲后圖像效果7.2.2?MATLAB復(fù)原函數(shù)簡介

MATLAB的圖像處理工具箱包含四個圖像復(fù)原函數(shù),按照這些函數(shù)的復(fù)雜程度將其排列如下:●?deconvwnr函數(shù):使用維納濾波復(fù)原;●?deconvreg函數(shù):使用約束最小二乘濾波復(fù)原;●?deconvlucy函數(shù):使用拉普拉斯復(fù)原;●?deconvblind函數(shù):使用盲去卷積算法復(fù)原。以上所有復(fù)原函數(shù)都是以一個PSF和模糊圖像作為主要輸入?yún)?shù)的。deconvwnr函數(shù)可以實現(xiàn)最小均方誤差復(fù)原,而函數(shù)deconvreg可以實現(xiàn)約束最小均方誤差復(fù)原,可以在這種復(fù)原方法中對輸出圖像采用某些約束(缺省情況下為光滑性約束)。無論是哪一個函數(shù)在圖像復(fù)原過程中,用戶都應(yīng)該向其提供有關(guān)噪聲的信息。

deconvlucy函數(shù)可以實現(xiàn)一個加速收斂的Lucy-Richardson算法,這個函數(shù)將使用最優(yōu)化技術(shù)和泊松統(tǒng)計完成多次反復(fù)過程,該函數(shù)無需模糊圖像的噪聲信息。deconvblind函數(shù)實現(xiàn)盲去卷積算法,在執(zhí)行過程中可以不需要有關(guān)PSF的知識,調(diào)用時將PSF的一個初始化估計作為輸入?yún)?shù)即可。deconvblind函數(shù)將給復(fù)原后的圖像返回一個重建的PSF。該實現(xiàn)過程使用與deconvlucy函數(shù)相同的收斂方式。除了以上四個復(fù)原函數(shù)以外,還可以使用MATLAB自定義的復(fù)原函數(shù)。7.2.3維納濾波復(fù)原通過調(diào)用deconvwnr函數(shù)可以利用維納濾波方法對圖像進(jìn)行復(fù)原處理。當(dāng)圖像的頻率特性和噪聲已知(至少部分已知)時,維納濾波的效果非常好。deconvwnr函數(shù)的調(diào)用格式如下:

J=DECONVWNR(I,PSF,NSR)或

J=DECONVWNR(I,PSF,NCORR,ICORR)其中,I表示輸入圖像,PSF表示點擴(kuò)散函數(shù),NSR(缺省值為0)、NCORR和ICORR都是可選參數(shù),分別表示信噪比、噪聲的自相關(guān)函數(shù)、原始圖像的自相關(guān)函數(shù)。輸出參數(shù)J表示復(fù)原后的圖像。下面以例7.5和7.6來具體說明deconvwnr函數(shù)的實現(xiàn)方法。例7.5使用deconvwnr函數(shù)對圖7.28(b)所示的無噪聲圖像進(jìn)行復(fù)原重建,觀察所得的結(jié)果,并與原始圖像(如圖7.28(a)所示)進(jìn)行比較。圖7.28原始圖像及其無噪聲模糊圖像在對圖7.28(b)所示的無噪聲模糊圖像進(jìn)行復(fù)原時,首先假設(shè)真實的PSF是已知的,讀入圖像后使用以下的程序代碼實現(xiàn)圖像復(fù)原:

I=imread('cameraman.tif');

LEN=21;

LEN=11;

PSF=fspecial('motion',LEN,LEN);

Blurred=imfilter(I,PSF,'circular');

wnr1=deconvwnr(Blurred,PSF);

subplot(1,3,1);imshow(wnr1);復(fù)原結(jié)果如圖7.29(a)所示。然而,在實際應(yīng)用過程中,真實的PSF通常是未知的,需根據(jù)一定的先驗知識對PSF進(jìn)行估計,再將估計值作為參數(shù)進(jìn)行圖像復(fù)原。圖7.29(b)、(c)分別顯示了使用較“長”和較“陡峭”的PSF后所產(chǎn)生的復(fù)原效果,將該結(jié)果與圖7.29(a)進(jìn)行對比可以看出PSF的重要性。其程序代碼如下:

wnr2=deconvwnr(Blurred,fspecial('motion',2*LEN,LEN));%長PSF

subplot(1,3,2);imshow(wnr2);

wnr3=deconvwnr(Blurred,fspecial('motion',LEN,2*LEN));%陡峭PSF

subplot(1,3,3);imshow(wnr3);圖7.29不同PSF產(chǎn)生的復(fù)原效果比較例7.6對圖7.30(a)的有噪聲模糊圖像(原始圖像如圖7.28(a)所示)進(jìn)行復(fù)原并提高恢復(fù)質(zhì)量。如果直接使用以下代碼調(diào)用deconvwnr函數(shù)對一幅有噪聲的圖像進(jìn)行復(fù)原(結(jié)果如圖7.30(b)所示),復(fù)原效果很不理想,這是由維納濾波器自身造成的。圖7.30有噪聲模糊圖像及其直接維納濾波后的顯示效果對比I=imread('cameraman.tif');LEN=21;LEN=11;PSF=fspecial('motion',LEN,LEN);Blurred=imfilter(I,PSF,'circular');noise=0.1*randn(size(I));BlurredNoisy=imadd(Blurred,im2uint8(noise));wnr4=deconvwnr(I,PSF);figure;imshow(wnr4);為了提高復(fù)原圖像的質(zhì)量,MATLAB使用三個可選參數(shù):NSR、NCORR和ICORR,這三個參數(shù)的使用都需要一定的噪聲信息。對于圖7.30(a)中的圖像,以下代碼將分別使用這三個參數(shù)對圖像進(jìn)行復(fù)原,復(fù)原的效果如圖7.31(a)、(b)所示。

I=imread('cameraman.tif');

LEN=21;

LEN=11;

PSF=fspecial('motion',LEN,LEN);

Blurred=imfilter(I,PSF,'circular');

noise=0.1*randn(size(I));BlurredNoisy=imadd(Blurred,im2uint8(noise));NSR=sum(noise(:).^2)/sum(im2double(I(:)).^2);wnr5=deconvwnr(BlurredNoisy,PSF,NSR);subplot(1,2,1);imshow(wnr5);NP=abs(fftn(noise)).^2;NCORR=fftshift(real(ifftn(NP)));IP=abs(fftn(im2double(I))).^2;ICORR=fftshift(real(ifftn(IP)));wnr6=deconvwnr(BlurredNoisy,PSF,NCORR,ICORR);subplot(1,2,2);imshow(wnr6);圖7.31使用可選參數(shù)進(jìn)行圖像復(fù)原后的顯示效果對比顯然,使用這些可選參數(shù)得到的圖像質(zhì)量較圖7.30(b)有了較大的提高,我們可以通過修改這些參數(shù)得到較好的圖像復(fù)原效果。7.2.4約束最小二乘方濾波復(fù)原使用deconvreg函數(shù)可以利用約束最小二乘方濾波對圖像進(jìn)行復(fù)原。約束最小二乘方濾波方法可以在對噪聲信號所知有限的條件下很好地工作。deconvreg函數(shù)的調(diào)用格式為

J=DECONVREG(I,PSF,NP,LRANGE,REGOP)其中,I表示輸入圖像,PSF表示點擴(kuò)散函數(shù),NP、LRANGE和REGOP是可選參數(shù),分別表示圖像的噪聲強(qiáng)度、拉普拉斯算子的搜索范圍(該函數(shù)可以在指定的范圍內(nèi)搜索最優(yōu)的拉普拉斯算子)和約束算子,其缺省值分別為0、[10-9,109]和平滑約束拉氏算子,返回值J表示復(fù)原后的輸出圖像。下面給出一個例子來說明約束最小二乘方復(fù)原方法的實現(xiàn)過程。對圖7.32(b)給出的有噪聲模糊圖像(其原始圖像如圖7.32(a)所示)使用最小二乘方濾波方法進(jìn)行復(fù)原,要求盡量提高復(fù)原圖像的質(zhì)量。圖7.32原始圖像及其有噪聲模糊化圖像以下程序介紹了deconvreg函數(shù)及其各參數(shù)的使用情況。

I=checkerboard(8); %讀入原始圖像

PSF=fspecial(‘gaussian’,7,10);

V=.01;

BlurredNoisy=imnoise(imfilter(I,PSF),‘gaussian’,0,V);

%讀入帶有噪聲的模糊

%圖像

NP=V*prod(size(I)); %計算噪聲強(qiáng)度

[J1LAGRA]=deconvreg(BlurredNoisy,PSF,NP); %小NP(信噪比)subplot(221);imshow(J1);J2=deconvreg(BlurredNoisy,PSF,1.5*NP);%大NP(信噪比)subplot(222);imshow(J2);J3=deconvreg(BlurredNoisy,PSF,[],LAGRA/10);

%小

LAGRA(搜索范圍)subplot(223);imshow(J3);J4=deconvreg(BlurredNoisy,PSF,[],LAGRA*10);

%大LAGRA(搜索范圍)subplot(224);imshow(J4);

REGOP=[1-21];

J5=deconvreg(BlurredNoisy,PSF,[],LAGRA,REGOP); %平滑約束

figure;imshow(J5);以上代碼生成的復(fù)原圖像分布如圖7.33、圖7.34和圖7.35所示,通過這些圖像可以分析各個參數(shù)對圖像復(fù)原質(zhì)量的影響。在實際應(yīng)用中,我們可以根據(jù)經(jīng)驗選擇合適的參數(shù)從而達(dá)到對圖像最佳的復(fù)原效果。圖7.33不同信噪比復(fù)原效果比較圖7.34不同拉普拉斯算子搜索范圍復(fù)原效果比較圖7.35平滑約束復(fù)原效果7.2.5Lucy-Richardson復(fù)原使用deconvlucy函數(shù),利用加速收斂的Lucy-Richardson算子可以對圖像進(jìn)行復(fù)原。Lucy-Richardson算法能夠按照泊松噪聲統(tǒng)計標(biāo)準(zhǔn)求出與給定PSF卷積后最有可能稱為輸入模糊圖像的圖像。當(dāng)PSF已知,但圖像噪聲信息未知時,可以使用這個函數(shù)進(jìn)行有效的工作。deconvlucy函數(shù)能夠?qū)崿F(xiàn)多種復(fù)雜圖像重建算法,這些算法都是基于原始Lucy-Richardson最大化可能性算法的。deconvlucy函數(shù)的調(diào)用格式如下:

J=DECONVLUCY(I,PSF,NUMIT,DAMPAR,WEIGHT,READOUT,SUBSMPL)其中,I表示輸入圖像。PSF表示點擴(kuò)散函數(shù)。其它為可選參數(shù):NUMIT表示算法的重復(fù)次數(shù),缺省值為10;DAMPAR表示偏差閾值,缺省值為0(無偏差);WEIGHT表示像素記錄能力,缺省值為原始圖像的數(shù)值;READOUT表示噪聲矩陣,缺省值為0;SUBSMPL表示子采樣時間,缺省值為1。

deconvlucy函數(shù)的輸出J是一個單元數(shù)組,包含四個元素:output{1},原始輸入圖像;output{2},最后一次反復(fù)產(chǎn)生的圖像;output{3},倒數(shù)第二次產(chǎn)生的圖像;output{4},deconvlucy函數(shù)用來獲知重新起始點的內(nèi)部信息。輸出的單元數(shù)組可以作為輸入?yún)?shù)傳遞給deconvlucy函數(shù),從而重新開始復(fù)原過程。噪聲痕跡是最大化可能性數(shù)據(jù)逼近算法的常見問題。經(jīng)過多次重復(fù)處理后,尤其是在低信噪比條件下,復(fù)原圖像可能會出現(xiàn)一些斑點,這些斑點并不代表圖像的真實結(jié)構(gòu),只不過是輸出圖像過于逼近噪聲所產(chǎn)生的結(jié)果。為了控制這些痕跡,deconvlucy函數(shù)使用了一個收斂參數(shù)DAMPAR,這個參數(shù)指定收斂過程中結(jié)果圖像與原始圖像背離程度的閾值。對于超過閾值的那些數(shù)據(jù),反復(fù)過程將被禁止。圖像復(fù)原的另一個復(fù)雜之處在于那些可能包括壞像素的數(shù)據(jù)可能會隨時間和位置的變化而變化。通過指定deconvlucy函數(shù)的WEIGHT數(shù)組參數(shù),可以忽略圖像中某些指定的像素。需要忽略的像素對應(yīng)的WEIGHT數(shù)組元素值為0。

CCD檢測器中的噪聲有兩個主要成分:一個是呈泊松分布的光子計算噪聲;另一個是鏡頭呈高斯分布讀取噪聲。Lucy-Richardson算法的復(fù)原過程可以從根本上說明第一種類型的噪聲,但是使用者必須自己指明第二種噪聲情況,deconvlucy函數(shù)使用READOUT輸入?yún)?shù)來指定這種噪聲。READOUT參數(shù)的值通常是讀取噪聲變量和背景噪聲變量的總和,其數(shù)值的大小將指定一個能夠確保所有數(shù)值為正數(shù)的偏移量。

如果將采樣不足的數(shù)據(jù)的復(fù)原過程建立在一個好的網(wǎng)格操作基礎(chǔ)上,那么就可以大大提高復(fù)原效果。如果已知PSF具有較高的分辨率,那么deconvlucy函數(shù)將使用SUBSMPL參數(shù)來指定采樣不足的比例。如果數(shù)據(jù)采樣不足是由于圖像獲取過程中的鏡頭像素裝倉問題產(chǎn)生的,那么每個像素觀察到的PSF就是一個好的網(wǎng)格PSF。另外,PSF還可以通過觀察自像素偏移或光學(xué)模型技術(shù)獲得。這種方法對星(高信噪比)圖像尤為有效,因為星可以被有效地限制在像素的中心位置。如果星位于兩個像素之間,那么它將被作為鄰域像素的組合進(jìn)行復(fù)原。一個好的網(wǎng)格將會使星擴(kuò)散流序列重新朝向圖像的中心。下面給出實例說明deconvlucy函數(shù)的具體使用方法。例如,調(diào)用deconvlucy函數(shù)對圖7.32(b)給出的有噪聲模糊圖像(其原始圖像如圖7.32(a)所示)進(jìn)行復(fù)原,要求盡量獲得好的效果。限制算法的重復(fù)次數(shù)為5次,使用以下代碼進(jìn)行圖像復(fù)原:

I=checkerboard(8);

PSF=fspecial('gaussian',7,10);

V=.0001;BlurredNoisy=imnoise(imfilter(I,PSF),'gaussian',0,V);WT=zeros(size(I));WT(5:end-4,5:end-4)=1;J1=deconvlucy(BlurredNoisy,PSF,5);subplot(131);imshow(J1);復(fù)原結(jié)果如圖7.36(a)所示。由于每一次重復(fù)過程得到的輸出圖像都是不同的,因此可以使用交互式的圖像復(fù)原方法,也就是通過觀察指定重復(fù)次數(shù)得到的復(fù)原圖像,修改使用的deconvlucy參數(shù)再進(jìn)行下一步的復(fù)原過程,最終得到較好的重建圖像。例如,本例中將使用以下代碼對以上生成的復(fù)原圖像做進(jìn)一步的復(fù)原操作:

J2=deconvlucy(BlurredNoisy,PSF,15);

subplot(132);imshow(J2);復(fù)原效果如圖7.36(b)所示。從圖中可以看出,進(jìn)一步復(fù)原后的結(jié)果反而出現(xiàn)了更多的噪聲,這是由于復(fù)原過程過于逼近原始圖像而導(dǎo)致原始圖像的噪聲放大而造成的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論