OpenCV C++ LibのHOGDescriptorを使用して、画像の特徴ベクトルを計算します。ソース画像の特徴を視覚化したいと思います。誰か助けてもらえますか?
今日もまったく同じ問題がありました。 OpenCVのHOGDescriptor::compute()
関数を使用して64x128画像のHOGDescriptor
ベクトルを計算するのは簡単ですが、それを視覚化するための組み込み機能はありません。
最後に、勾配方向の大きさが3870の長いHOG記述子ベクトルにどのように格納されるかを理解することができました。
HOGDescriptor
を視覚化するための私のC++コードはここにあります:
それが役に立てば幸い!
ユルゲン
HOGgles¹は、ICCV 2013で公開された、HOG視覚化用に開発されたメソッドです。例を次に示します。
この視覚化ツールは、HOGの勾配ベクトルをプロットするよりも便利な場合があります。これは、特定のサンプルでHOGが失敗した理由がよくわかるためです。
詳細については、こちらをご覧ください: http://web.mit.edu/vondrick/ihog/
¹C。 Vondrick、A。Khosla、T。Malisiewicz、A。Torralba 「HOGgles:オブジェクト検出機能の視覚化」コンピュータビジョン国際会議(ICCV)、オーストラリア、シドニー、2013年12月。
This 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
ユルゲン・ブラウアーに基づいたblockSize
とcellSize
のHOGImageを再実装します。 https://github.com/zhouzq-thu/HOGImage を参照してください。