Матрица сопряженности уровней серого

Я пытаюсь реализовать метод GLCM по формуле из Википедии, но у меня есть проблемы с заполнением моего GLCM из-за проблем с индексами в matlab.

Я также использовал 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 ответ

Ответ можно найти, обеспечив внутренний вложенный двойной for петли имеют правильные индексы для доступа к изображению. Они использовали самую внешнюю пару for петли для индексов, а не для внутренних. ФП прокомментировал, что это имеет небольшие различия между тем, что дает MATLAB для расчета GLCM, но этого достаточно, чтобы ФП упустил из виду:

 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
Другие вопросы по тегам