灰度共生矩阵

时间:2016-08-30 11:49:30

标签: matlab textures classification glcm

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

1 个答案:

答案 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