0

Я знаю, что это выглядит как-то не связанным с ошибками кода и развитием, но Я хочу знать, могут ли кто-то понять эти коды интегрального изображения и локального двоичного кода и расскажите, как они влияют на полученные гистограммы.Как интегральное изображение влияет на результат локального двоичного шаблона или центрального симметричного локального двоичного шаблона

Перед использованием интегрального изображения выходная гистограмма является нормальной, но после применения метода интегрального изображения я обнаружил, что большая часть гистограммы изменилась на нули. Чтобы прояснить ситуацию, ожидаемая польза от использования интегрального изображения заключается в ускорении процесса lbp. На самом деле, я этого раньше не видел, потому что я пытаюсь это сделать в первый раз. Кто-нибудь, кто знает об этом, может мне помочь?

Эти коды каждого метода:

Интегральные изображения

function [outimg] = integral(image) 
[y,x] = size(image); 
outimg = zeros(y+1,x+1); 
disp(y); 
for a = 1:y+1 
    for b = 1:x+1 
     rx = b-1; 
     ry = a-1; 
     while ry>=1 
      while rx>=1 
       outimg(a,b) = outimg(a,b)+image(ry,rx); 
       rx = rx-1; 
      end 
      rx = b-1; 
      ry = ry-1; 
     end 
     % outimg(a,b) = outimg(a,b)-image(a,b); 
    end 
end 
% outimg(1,1) = image(1,1); 
disp('end loop'); 
end 

CS-LBP

function h = CSLBP(I) 
%% this function takes patch or image as input and return Histogram of 
%% CSLBP operator. 
h = zeros(1,16); 
[y,x] = size(I); 
T = 0.1; % threshold given by authors in their paper 
for i = 2:y-1 
    for j = 2:x-1 
     % keeping I(j,i) as center we compute CSLBP 
     % N0 - N4 
     a = ((I(i,j+1) - I(i, j-1) > T) * 2^0);   
     b = ((I(i+1,j+1) - I(i-1, j-1) > T) * 2^1); 
     c = ((I(i+1,j) - I(i-1, j) > T) * 2^2); 
     d = ((I(i+1,j-1) - I(i - 1, j + 1) > T) * 2^3); 
     e = a+b+c+d; 
     h(e+1) = h(e+1) + 1; 
    end 
end 
end 

ответ

1

Matlab имеет встроенную функцию для создания интегральных изображений, integralimage() , Если вы не хотите использовать системный набор инструментов компьютерного зрения вы можете достичь того же результата с помощью вызова:

IntIm = cumsum(cumsum(double(I)),2); 

Возможно добавление отступы при необходимости. Вы должны проверить, что изображение не насыщено, иногда это происходит. Вычисление суммарной суммы идет на целые числа выше диапазона uint8 и uint16 быстро, даже если это произошло с двойным раз!

 Смежные вопросы

  • Нет связанных вопросов^_^