HOG(ヒストグラムの方向勾配)は、画像の一点でどのように機能しますか?私はComputer Vision ToolboxのHOGディスクリプタバージョンhttps://www.mathworks.com/help/vision/ref/extracthogfeatures.htmlを使用しています。単一点の方向勾配のヒストグラムを計算する
イメージ内の特定の点でHOGを計算したいと思います。単一の点でHOGを計算するために最適なセルサイズとブロックサイズはどれくらいですか?
HOG(ヒストグラムの方向勾配)は、画像の一点でどのように機能しますか?私はComputer Vision ToolboxのHOGディスクリプタバージョンhttps://www.mathworks.com/help/vision/ref/extracthogfeatures.htmlを使用しています。単一点の方向勾配のヒストグラムを計算する
イメージ内の特定の点でHOGを計算したいと思います。単一の点でHOGを計算するために最適なセルサイズとブロックサイズはどれくらいですか?
単一点のHOGディスクリプタはありません。 HOGディスクリプタは、サラウンドの注目点をピクセルのブロックとして取得するような密なディスクリプタです。 extractHOGFeatures
関数は、HOG記述子を計算したい画像と、オプションで入力座標を取り込みます。これらは、(x,y)
、またはHOGディスクリプタを計算したい画像内の列と行の位置です。これはN x 2
行列として指定し、各行はHOG記述子を計算する場所の(x,y)
座標になります。
ピクセルのローカルパッチでHOG記述子を計算することを思い出してください。このローカルパッチのデフォルトサイズまたはセルサイズのは、DalalおよびTriggsの元の歩行者検出アルゴリズムに従って8 x 8
です。ヒストグラム内の向きの符号を無視していると仮定すると、ヒストグラムのビンのデフォルト数は9、または20度単位での角度を考慮して合計180度になります。 8 x 8
パッチごとに、9ビンのヒストグラムがあります。あなたはまた、ブロックであるの細胞の組成をと考えます。各ブロックはセルのグリッドとして構成され、MATLABのデフォルトは2 x
2グリッドで、16 x 16ピクセルのウィンドウになっています。
したがって、指定した場所が中心となり、この中心の周りに16 x 16
のウィンドウが表示されます。次に、4つのHOGヒストグラム(ブロック内の各セルに1つ)を計算します。最後のステップとして、すべてのヒストグラムを連結して1つの長いヒストグラムを作成します(4 x 9 = 36
要素)。さらに、このベクトルを正規化して、その座標を表す最終的な記述子を計算します。
出力はN
行の行列です。各行は、入力位置行列の対応する行で指定された中央の位置の記述子です。具体的には、N x 36
という行列が得られます。特にOpenCVの中で、あなたのアプリケーションではなく、ユースケースの大半を依存し、最適なブロックサイズとセルサイズ、用として
は、デフォルトでは2 x 2
は、このように16 x 16
作成のブロックサイズで8 x 8
セルサイズを仮定することですピクセルパッチ。 DalalとTriggsは異なるサイズの細胞とブロックを実験し、これらの2つのサイズが歩行者検出のユースケースに最適であることを発見しました。
多くの混乱が解消されました。ありがとうございます。 –
大歓迎です。私は、記述子が最初は非常に混乱していることを認めます。それを理解するために多くのチュートリアルを読んでいなければなりませんでした。がんばろう! – rayryeng
あなたが気にしていない場合は、具体的には、MATLAB関数 "extractHOGFeature"に関連するもう1つの質問をすることができます。 –
私は "[features、validPoints] = extractHOGFeatures(I、points)"をmatlabに使用しています。ここで点は[x、y]座標のM行2列の行列になります。ここに参照があります:https://www.mathworks.com/help/vision/ref/extracthogfeatures.html –
私は理解しています。私は答えを書くつもりです。 – rayryeng