Подтвердить что ты не робот

HOG показывает визуализацию с помощью OpenCV, HOGDescriptor в С++

Я использую HOGDescriptor OpenCV С++ Lib для вычисления векторов объектов изображений. Я хотел бы визуализировать функции в исходном изображении. Может кто-нибудь мне помочь?

4b9b3361

Ответ 1

Сегодня у меня была такая же проблема. Вычисление вектора HOGDescriptor для изображения 64x128 с использованием функции OpenCV HOGDescriptor::compute() прост, но для его визуализации нет встроенных функций.

Наконец, мне удалось понять, как значения ориентации градиента хранятся в длинном векторе дескриптора HOG 3870.

Вы можете найти мой код на С++ для визуализации HOGDescriptor здесь:

http://www.juergenbrauer.org/old_wiki/doku.php?id=public:hog_descriptor_computation_and_visualization

Надеюсь, что это поможет!

Юрген

Ответ 2

HOGgles¹ - это метод, разработанный для визуализации HOG, опубликованный на ICCV 2013. Вот пример:

What does HOG sees?

Этот инструмент визуализации может быть более полезным, чем построение векторов градиента HOG, потому что лучше понять, почему HOG не сработал для данного образца.

Более подробную информацию можно найти здесь: http://web.mit.edu/vondrick/ihog/


¹C. Вондрик, А. Хосла, Т. Малисевич, А. Торральба. Международная конференция по компьютерному зрению (ICCV), Сидней, Австралия, декабрь 2013 г. "HOGgles: визуализация функций обнаружения объектов".

Ответ 3

Это обсуждение в дискуссионной группе opencv приводит к библиотеке, написанной в Университете Брауна.

В HOGpicture.m вы сможете получить представление о том, как визуализировать дескрипторы. Вот соответствующий (matlab) код. Достаточно ли вам сделать что-то для себя?

(ниже код выпущен под лицензией MIT)

function im = HOGpicture(w, bs)

% HOGpicture(w, bs)
% Make picture of positive HOG weights.

% construct a "glyph" for each orientation
bim1 = zeros(bs, bs);
bim1(:,round(bs/2):round(bs/2)+1) = 1;
bim = zeros([size(bim1) 9]);
bim(:,:,1) = bim1;
for i = 2:9,
  bim(:,:,i) = imrotate(bim1, -(i-1)*20, 'crop');
end

% make pictures of positive weights bs adding up weighted glyphs
s = size(w);    
w(w < 0) = 0;    
im = zeros(bs*s(1), bs*s(2));
for i = 1:s(1),
  iis = (i-1)*bs+1:i*bs;
  for j = 1:s(2),
    jjs = (j-1)*bs+1:j*bs;          
    for k = 1:9,
      im(iis,jjs) = im(iis,jjs) + bim(:,:,k) * w(i,j,k);
    end
  end
end

Ответ 4

Я переопределяю HOGImage для любого blockSize и cellSize, который основан на Юргене Брауэре. Смотрите https://github.com/zhouzq-thu/HOGImage.