2012-04-06 33 views
1

私の講師はをimage retrievalとしてスライドしています。最初に画像を4x4 blocksに分割してからhorizontal, vertical, +45°, and -45° orientationsにエッジをチェックする必要があります。彼はそれが次に14x1 histogramで表されることを述べる。 14x1 histogramを作成する必要があると判断した理由はわかりません。誰もがこの価値を思いついたか、またはedge histogramを作成する方法を知っていますか?画像検索 - エッジヒストグラム

ありがとうございました。

答えて

3

あなたが指しているのは、ヒストグラムオブオリエントグラデーション(HoG)です。しかし、数学はあなたの例ではうまくいかない。通常、空間ビニングパラメータ(4×4ブロック)を選択します。ブロックごとに、いくつかの異なる方向(あなたの場合は2方向)で勾配の大きさを計算します。したがって、各ブロックにはN_{directions}の測定値があります。これにブロック数(あなたの場合は16)を掛け合わせると、合計測定値は16*N_{directions}です。

ヒストグラムを作成するには、これらの測定値を1つの長いベクトルに連結するだけです。ビン/方向コンボを1次元ヒストグラムのスロットにマップする方法を追跡している限り、連結を行う方法は任意です。この連結の長いヒストグラムは、勾配の向きに基づいて画像のある面を認識するように分類器を訓練するなど、機械学習のタスクに最もよく使用されます。

あなたの場合、教授は何か特別なことをしているに違いありません。なぜなら、16の異なるイメージブロック(4x4イメージブロックのグリッド)を持っているならば、ブロックごとに1つ以下の測定値を計算する必要があるからですヒストグラム全体で計14回の測定が行われます。

教授は、[-45、+ 45]の範囲の角度をとり、-45、-45 + 90/14、-45 + 2 * 90/14、...など。

これが教授の意味であれば、その場合、1つのブロック内に14の方向ビンが得られます。すべてが連結されると、画像全体を全体的に表す1つの非常に長い14 * 16 = 224成分ベクトルが得られます。

ちなみに、ヒストグラムのグラデーションのPython実装で多くのテストを行ったので、hereまたはhereにリンクされている作業の一部を見ることができます。このサイトにはいくつかのサンプルコードもありますが、HoGのサポートバージョンがscikits.imageになっています。

+0

なぜ2つの方向が私の中にあるのですか?確かに左から右、上から下、左下から右上、左上から右下があります。ヒストグラムをもっと少し説明してもらえますか?グラデーションの大きさを使ってヒストグラムを作成する方法はかなり混乱しています。私は常にヒストグラムがY軸上に周波数を持つのを見たことがありますが、この場合の周波数は何か分かりません。 – TheBoss

+1

私はちょうど2つの方向があったと言ったとき、私はあなたの最初の投稿に行きました、あなたは+/- 45度しか言っていませんでした。明らかに、実際には、これよりも多くの方向性を持ちたいと思っています。私は、後で、あなたの教授が-45と+45の間のすべての方向を取ってそれらを方向性のグリッドに離散化することを意味するかもしれないと述べた。 2つの異なるアプローチがあります。場合によっては、人々は方向の輪全体を離散化し、他の場合には円の半分だけを離散化する。ほとんどの場合、あなたは絶対的な方向しか気にしません。記号は重要ではありません。 – ely

+2

"周波数"軸に関しては、この場合、新しい「画像」を計算し、各「ピクセル」にはそのピクセルの勾配の大きさが含まれます。(i、j)のピクセルに勾配の大きさMと勾配方向Dがある場合は、方向Dが属する角ビンを(選択した離散角グリッドに基づいて)把握し、ヒストグラムのそのスロットに与えられたピクセルがヒストグラムに寄与する「周波数」は、そのピクセルにおける勾配の大きさです。 – ely

関連する問題