(1).CalTexture.m文件
function T = CalTexture(Image)
[M,N,O] = size(Image);%% 得到圖像的寬,高和通道
%--------------------------------------------------------------------------
%1.原始圖像灰度化
%--------------------------------------------------------------------------
if O==3Gray = double(0.3*Image(:,:,1)+0.59*Image(:,:,2)+0.11*Image(:,:,3));
elseif O==1Gray =Image;end;
end;
% imshow(Gray);
%--------------------------------------------------------------------------
%2.?灰度共生矩陣分塊,減少計算量
%--------------------------------------------------------------------------
Layer =8;
for i = 1:Mfor j = 1:Nfor n = 1:256/Layerif (n-1)*Layer <= Gray(i,j) && Gray(i,j)<=((n-1)*Layer +Layer-1)Gray(i,j) = n-1;endendend
end
%--------------------------------------------------------------------------
%3.計算四個方向的灰度矩陣0,45,90,135
%--------------------------------------------------------------------------
P = zeros(Layer,Layer,4);
dis = 5;
for m = 1:Layerfor n = 1:Layerfor i = 1:Mfor j = 1:Nif j<N-dis&&Gray(i,j)==m-1&&Gray(i,j+dis)==n-1P(m,n,1) = P(m,n,1)+1;%P(n,m,1) = P(m,n,1)+1;P(n,m,1) = P(n,m,1)+1;endif i<M-dis&&j<N-dis&&Gray(i,j)==m-1&&Gray(i+dis,j+dis)==n-1P(m,n,2) = P(m,n,2)+1;P(n,m,2) = P(n,m,2)+1;endif i<M-dis&&Gray(i,j)==m-1&&Gray(i+dis,j)==n-1P(m,n,3) = P(m,n,3)+1;P(n,m,3) = P(n,m,3)+1;endif i<M-dis&&j>dis&&Gray(i,j)==m-1&&Gray(i+dis,j-dis)==n-1P(m,n,4) = P(m,n,4)+1;P(n,m,4) = P(n,m,4)+1;endendendif m==nP(m,n,:) = P(m,n,:)*2;endend
end%
% for n=1:4
% imshow(p(n));
% end%%---------------------------------------------------------
% ?灰度矩陣歸一化
%%---------------------------------------------------------
for n = 1:4P(:,:,n) = P(:,:,n)/sum(sum(P(:,:,n)));
end
%--------------------------------------------------------------------------
%4.?計算灰度矩陣的特征
%--------------------------------------------------------------------------
H = zeros(1,4);
I = H;
Ux = H; Uy = H;
deltaX= H; deltaY = H;
C =H;
L =H;
for n = 1:4E(n) = sum(sum(P(:,:,n).^2)); %%計算能量for i = 1:Layerfor j = 1:Layerif P(i,j,n)~=0H(n) = -P(i,j,n)*log(P(i,j,n))+H(n); %%計算熵endI(n) = (i-j)^2*P(i,j,n)+I(n); %%計算中心矩L(n) = P(i,j,n)/(1+(i-j).^2)+L(n);%計算慣性Ux(n) = i*P(i,j,n)+Ux(n); %計算X均值Uy(n) = j*P(i,j,n)+Uy(n); %計算Y均值endend
end
for n = 1:4for i = 1:Layerfor j = 1:LayerdeltaX(n) = (i-Ux(n))^2*P(i,j,n)+deltaX(n); %deltaY(n) = (j-Uy(n))^2*P(i,j,n)+deltaY(n); %% C(n) = i*j*P(i,j,n)+C(n);C(n) = (i-Ux(n))*(j-Uy(n))*P(i,j,n)+C(n);%計算相關性endend%C(n) = (C(n)-Ux(n)*Uy(n))/deltaX(n)/deltaY(n); %?à1?D?C(n)= C(n)/deltaX(n)/deltaY(n);
end%--------------------------------------------------------------------------
T(1,1) = mean(E); T(2,1) = sqrt(cov(E));
T(1,2) = mean(H); T(2,2) = sqrt(cov(H));
T(1,3) = mean(I); T(2,3) = sqrt(cov(I));
T(1,4) = mean(C); T(2,4) = sqrt(cov(C));
//輸出結果到數組,有四組結果
for n =1:4;T(3,n)=C(n);T(4,n)=E(n);T(5,n)=H(n);T(6,n)=I(n);T(7,n)=L(n);
end;
總結
以上是生活随笔為你收集整理的纹理特征:灰度共生矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。