-2

我尝试使用来自维基百科的公式来实现 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
4

1 回答 1

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
于 2016-08-30T16:12:49.943 回答