, , d=1 a=0. d=1, 8- . a=0, , , , .
:
- NGLDM . / . 1.
d=1, 8- 8 + 1 = 9. 4 (0,1,2,3), , 4 × 9. M. - .
Ng. - , .
- , , # 1.
Nr. - # 1 2, 1.
: . , , , . , , 8- . d=1. , d=1. d=2, , 25- ..
, . :
Ng = 1, 1.- . , :
1, 1, 2, 0, 1, 0, 2, 2. 1? . Nr = 3M(Ng,Nr) += 1. Ng = 1 Nr = 3, 1.
, , ? . 0, Ng = 0. , , Ng = 0, Nr = 1, ... ! , , , ... . . , Ng = 1 Nr = 1, .
. M(Ng,Nr) = 4, Ng = 2, Nr = 4? , 2. , 8- , row=2, col=4, row=3, col=3, row=3, col=4, row=4, col=3 row=4, col=4. , , , Nr = 4. , Ng = 2, Nr = 4 , 4. row=3, col=4 Nr = 5, 2s . Ng = 2, Nr = 5, M(Ng,Nr) = 1.
. 2 smack dab (row=3, col=3):
Ng = 2- ?
1, 1, 2, 0, 2, 3, 2, 2 ( ) - , 2. ,
Nr = 4 M(Ng,Nr) += 1. Ng = 2, Nr = 4 1.
2, , Nr = 4 , , Nr = 5.
, MATLAB? im2col, . , , - . . , , , Nr. Ng . , , . , :
%
A = [1 1 2 3 1; 0 1 1 2 2; 0 0 2 2 1; 3 3 2 2 1; 0 0 2 0 1];
B = im2col(A, [3 3]); %
C = bsxfun(@eq, B, B(5,:)); %
%
D = sum(C, 1) - 1; %
Ng = B(5,:).' + 1; %
%
%
Nr = D.' + 1; %
%
%
Q = accumarray([Ng Nr], 1, [4 9]); %
... :
Q =
0 0 1 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0
0 0 0 0 4 1 0 0 0
0 1 0 0 0 0 0 0 0
, , Q.
Bonus
, , d a, . . , <= a d. , 2*d + 1 x 2*d + 1, . . :
%
%
function [Q] = calculateGrayDepMatrix(A, a, d)
neigh = 2*d + 1; %
numTotalNeigh = neigh*neigh; %
middleRow = ceil(numTotalNeigh / 2); %
B = im2col(A, [neigh neigh]); %
Cdiff = abs(bsxfun(@minus, B, B(middleRow,:))); %
C = Cdiff <= a; %
D = sum(C, 1) - 1; %
Ng = B(middleRow,:).' + 1; %
Nr = D.' + 1;
Q = accumarray([Ng Nr], 1, [max(Ng) numTotalNeigh]);
end
, , :
A = [1 1 2 3 1; 0 1 1 2 2; 0 0 2 2 1; 3 3 2 2 1; 0 0 2 0 1];
Q = calculateGrayDepMatrix(A, 0, 1);
Q:
Q =
0 0 1 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0
0 0 0 0 4 1 0 0 0
0 1 0 0 0 0 0 0 0
, !