我尝试使用维基百科中的公式实现GLCM方法,但由于matlab的索引问题,我在填写GLCM时遇到问题。
我也使用NitdepthQuantisation来减少灰度级别,但是现在我使用完整的8位。
function [C] = GLCM(img, level, theta, delta)
% Quantisation of the input Image to desired value
imgQ = ImageQuantisation(img, level);
[m n] = size(imgQ);
% Get the number of gray levels
maxGV = max(img(:));
% Create GLCM initial Matrix
C = zeros(maxGV, maxGV);
% Positions
delta_x = ceil(delta*cos(theta));
delta_y = ceil(delta*sin(theta));
%% Find Occurences
for i = delta_x+1:m-delta_x
for j = delta_y+1:n-delta_y
if(imgQ(i, j) == imgQ(i+delta_x, j+delta_y))
C(, ) = C(, ) + 1;
end
end
end
end
答案 0 :(得分:0)
通过确保内部嵌套的双for
循环具有访问图像的正确索引,可以找到答案。他们使用最外面的for
个循环来表示索引而不是内部循环。 OP已经评论说,MATLAB在计算GLCM方面有一些细微的差别,但它足以让OP忽视:
for o = 1:maxGV
for p = 1:maxGV
if(imgQ(i, j) == o & imgQ(i+delta_x, j+delta_y) == p)
C(o, p) = C(o, p) + 1;
end
end
end