灰度共生矩陣(GLCM)

http://blog.csdn.net/linxue968/article/details/6034745

共生矩陣用兩個位置的象素的聯合概率密度來定義,它不僅反映亮度的分佈特性,也反映具有同樣亮度或接近亮度的象素之間的位置分佈特性,是有關圖象亮度變化的二階統計特徵。它是定義一組紋理特徵的基礎。

一幅圖象的灰度共生矩陣能反映出圖象灰度關於方向、相鄰間隔、變化幅度的綜合信息,它是分析圖象的局部模式和它們排列規則的基礎。

設f(x,y)爲一幅二維數字圖象,其大小爲M×N,灰度級別爲Ng,則滿足一定空間關係的灰度共生矩陣爲

P(i,j)=#{(x1,y1),(x2,y2)∈M×N|f(x1,y1)=i,f(x2,y2)=j}

其中#(x)表示集合x中的元素個數,顯然P爲Ng×Ng的矩陣,若(x1,y1)與(x2,y2)間距離爲d,兩者與座標橫軸的夾角爲θ,則可以得到各種間距及角度的灰度共生矩陣P(i,j,d,θ)。

紋理特徵提取的一種有效方法是以灰度級的空間相關矩陣即共生矩陣爲基礎的[7],因爲圖像中相距(Δx,Δy)的兩個灰度像素同時出現的聯合頻率分佈可以用灰度共生矩陣來表示。若將圖像的灰度級定爲N級,那麼共生矩陣爲N×N矩陣,可表示爲M(Δx,Δy)(h,k),其中位於(h,k)的元素mhk的值表示一個灰度爲h而另一個灰度爲k的兩個相距爲(Δx,Δy)的像素對出現的次數。
  對粗紋理的區域,其灰度共生矩陣的mhk值較集中於主對角線附近。因爲對於粗紋理,像素對趨於具有相同的灰度。而對於細紋理的區域,其灰度共生矩陣中的mhk值則散佈在各處。

爲了能更直觀地以共生矩陣描述紋理狀況,從共生矩陣導出一些反映矩陣狀況的參數,典型的有以下幾種:

(1)能量: 是灰度共生矩陣元素值的平方和,所以也稱能量,反映了圖像灰度分佈均勻程度和紋理粗細度。如果共生矩陣的所有值均相等,則ASM值小;相反,如果其中一些值大而其它值小,則ASM值大。當共生矩陣中元素集中分佈時,此時ASM值大。ASM值大表明一種較均一和規則變化的紋理模式。

(2)對比度: ,其中 。反映了圖像的清晰度和紋理溝紋深淺的程度。紋理溝紋越深,其對比度越大,視覺效果越清晰;反之,對比度小,則溝紋淺,效果模糊。灰度差即對比度大的象素對越多,這個值越大。灰度公生矩陣中遠離對角線的元素值越大,CON越大。

(3)相關:它度量空間灰度共生矩陣元素在行或列方向上的相似程度,因此,相關值大小反映了圖像中局部灰度相關性。當矩陣元素值均勻相等時,相關值就大;相反,如果矩陣像元值相差很大則相關值小。如果圖像中有水平方向紋理,則水平方向矩陣的COR大於其餘矩陣的COR值。

(4)熵: 是圖像所具有的信息量的度量,紋理信息也屬於圖像的信息,是一個隨機性的度量,當共生矩陣中所有元素有最大的隨機性、空間共生矩陣中所有值幾乎相等時,共生矩陣中元素分散分佈時,熵較大。它表示了圖像中紋理的非均勻程度或複雜程度。

(5)逆差距: 反映圖像紋理的同質性,度量圖像紋理局部變化的多少。其值大則說明圖像紋理的不同區域間缺少變化,局部非常均勻。

其它參數:

中值<Mean>

協方差<Variance>

同質性/逆差距<Homogeneity>

反差<Contrast>

差異性<Dissimilarity>

熵<Entropy>

二階距<Angular Second Moment>

自相關<Correlation>

當圖像的局部有較小的方差時,則灰度值佔有支配地位,當圖像的局部有較大的方差時,則紋理佔有支配地位。紋理是和局部灰度及其空間組織相聯繫的,紋理在識別感興趣的目標和地區中有着非常重要的作用。

灰度共生矩陣表示了灰度的空間依賴性,它表示了在一種紋理模式下的像素灰度的空間關係。它的弱點是沒有完全抓住局部灰度的圖形特點,因此對於較大的局部,此方法的效果不太理想。灰度共生矩陣爲方陣,維數等於圖像的灰度級。灰度共生矩陣中的元素(i,j)的值表示了在圖像中其中一個像素的灰度值爲i,另一個像素的灰度值爲j,並且相鄰距離爲d,方向爲A的這樣兩個像素出現的次數。在實際應用中A一般選擇爲0°、45°、90°、135°。一般來說灰度圖像的灰度級爲256,在計算由灰度共生矩陣推導出的紋理特徵時,要求圖像的灰度級遠小於256,主要是因爲矩陣維數較大而窗口的尺寸較小則灰度共生矩陣不能很好表示紋理,如要能夠很好表示紋理則要求窗口尺寸較大,這樣使計算量大大增加,而且當窗口尺寸較大時對於每類的邊界區域誤識率較大。所以在計算灰度共生矩陣之前需要對圖像進行直方圖規定化,以減小圖像的灰度級,一般規定化後的圖像的灰度級爲8或16。由灰度共生矩陣能夠導出許多紋理特徵,本文計算了14種灰度共生矩陣特徵,分別爲紋理二階距、紋理熵、紋理對比度、紋理均勻性、紋理相關、逆差分矩、最大概率、紋理方差、共生和均值、共生和方差、共生和熵、共生差均值、共生差方差、共生差熵。

由灰度共生矩陣能夠導出許多紋理特徵,計算了14種灰度共生矩陣特徵,分別爲紋理二階距、紋理熵、紋理對比度、紋理均勻性、紋理相關、逆差分矩、最大概率、紋理方差、共生和均值、共生和方差、共生和熵、共生差均值、共生差方差、共生差熵。

目前,人們對遙感影像上的紋理特徵的含義理解不盡相同,紋理有時被稱爲結構、影紋和紋形等。Pickett認爲紋理爲保持一定的特徵重複性並且間隔規律可以任意安排的空間結構。HawKins認爲[6]紋理具有三大標誌:某種局部序列性不斷重複、非隨機排列和紋理區域內大致爲均勻的統一體。LiWang和D. C. He認爲[7],紋理是紋理基元組成的,紋理基元被認爲是表現紋理特徵的最小單元,是一個像元在

其周圍8個方向上的特徵反應。紋理特徵有時是明顯的,以某種基本圖形在某一地區有規律的週期性出現,例如:大面積森林覆蓋地區的影像構成的紋理爲斑點狀,沙漠地區的影像構成的紋理爲鏈狀、新月狀等;而有時紋理特徵是不明顯的、隱晦的,具有不穩定性。一般來說,前者紋理比較均一,後者紋理比較複雜[9]。

紋理作爲一種區域特徵,是對於圖像各像元之間空間分佈的一種描述。由於紋理能充分利用圖像信息,無論從理論上或常識出發它都可以成爲描述與識別圖像的重要依據,與其他圖像特徵相比,它能更好地兼顧圖像宏觀性質與細微結構兩個方面,因此紋理成爲目標識別需要提取的重要特徵。提取紋理特徵的方法很多,如基於局部統計特性的特徵、基於隨機場模型的特徵、基於空間頻率的特徵、分形特徵等,其中,應用最廣泛的是基於灰值共生矩陣的特徵[10]。

%**************************************************************************
% 圖像檢索——紋理特徵
%基於共生矩陣紋理特徵提取,d=1,θ=0°,45°,90°,135°共四個矩陣
%所用圖像灰度級均爲256
%參考《基於顏色空間和紋理特徵的圖像檢索》
%function : T=Texture(Image)
%Image : 輸入圖像數據
%T : 返回八維紋理特徵行向量
%**************************************************************************
function T = Texture(path)
Image = imread(path);

% [M,N,O] = size(Image);
M = 256;
N = 256;
if isrgb(Image)%判斷是否是RGB
Gray=rgb2gray(Image);
end
%————————————————————————–
%1.將各顏色分量轉化爲灰度
%————————————————————————–
%Gray = double(0.3*Image(:,:,1)+0.59*Image(:,:,2)+0.11*Image(:,:,3))

%————————————————————————–
%2.爲了減少計算量,對原始圖像灰度級壓縮,將Gray量化成16級
%————————————————————————–
for i = 1:M
for j = 1:N
for n = 1:256/16
if (n-1)*16<=Gray(i,j)&Gray(i,j)<=(n-1)*16+15
Gray(i,j) = n-1;
end
end
end
end

%--------------------------------------------------------------------------
%3.計算四個共生矩陣P,取距離爲1,角度分別爲0,45,90,135
%--------------------------------------------------------------------------
P = zeros(16,16,4);
for m = 1:16
for n = 1:16
for i = 1:M
for j = 1:N
if j P(m,n,1) = P(m,n,1)+1;
P(n,m,1) = P(m,n,1);
end
if i>1&j P(m,n,2) = P(m,n,2)+1;
P(n,m,2) = P(m,n,2);
end
if i P(m,n,3) = P(m,n,3)+1;
P(n,m,3) = P(m,n,3);
end
if i P(m,n,4) = P(m,n,4)+1;
P(n,m,4) = P(m,n,4);
end
end
end
if m==n
P(m,n,:) = P(m,n,:)*2;
end
end
end

%%---------------------------------------------------------
% 對共生矩陣歸一化
%%---------------------------------------------------------
for n = 1:4
P(:,:,n) = P(:,:,n)/sum(sum(P(:,:,n)));
end

%--------------------------------------------------------------------------
%4.對共生矩陣計算能量、熵、慣性矩、相關4個紋理參數
%--------------------------------------------------------------------------
H = zeros(1,4);
I = H;
Ux = H; Uy = H;
deltaX= H; deltaY = H;
C =H;
for n = 1:4
E(n) = sum(sum(P(:,:,n).^2)); %%能量
for i = 1:16
for j = 1:16
if P(i,j,n)~=0
H(n) = -P(i,j,n)*log(P(i,j,n))+H(n); %%熵
end
I(n) = (i-j)^2*P(i,j,n)+I(n); %%慣性矩

Ux(n) = i*P(i,j,n)+Ux(n); %相關性中μx
Uy(n) = j*P(i,j,n)+Uy(n); %相關性中μy
end
end
end
for n = 1:4
for i = 1:16
for j = 1:16
deltaX(n) = (i-Ux(n))^2*P(i,j,n)+deltaX(n); %相關性中σx
deltaY(n) = (j-Uy(n))^2*P(i,j,n)+deltaY(n); %相關性中σy
C(n) = i*j*P(i,j,n)+C(n);
end
end
C(n) = (C(n)-Ux(n)*Uy(n))/deltaX(n)/deltaY(n); %相關性
end

%--------------------------------------------------------------------------
%求能量、熵、慣性矩、相關的均值和標準差作爲最終8維紋理特徵
%--------------------------------------------------------------------------
T(1) = mean(E); T(2) = sqrt(cov(E));
T(3) = mean(H); T(4) = sqrt(cov(H));
T(5) = mean(I); T(6) = sqrt(cov(I));
T(7) = mean(C); T(8) = sqrt(cov(C));


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章