イメージの向き勾配のヒストグラムを計算するには、すべてのピクセルの勾配ベクトルを計算する必要があります。しかし、エッジ上のピクセルは、グラジエントベクトルのためにいくつかの隣接を欠いている。それに対処する方法?方向勾配のヒストグラムについて、エッジ上のピクセルの勾配ベクトルを計算する方法は?
たとえば、画像の左端にあるピクセルには、左側に近傍がありません。次に、x方向の勾配を計算する方法は?
イメージの向き勾配のヒストグラムを計算するには、すべてのピクセルの勾配ベクトルを計算する必要があります。しかし、エッジ上のピクセルは、グラジエントベクトルのためにいくつかの隣接を欠いている。それに対処する方法?方向勾配のヒストグラムについて、エッジ上のピクセルの勾配ベクトルを計算する方法は?
たとえば、画像の左端にあるピクセルには、左側に近傍がありません。次に、x方向の勾配を計算する方法は?
数値勾配のMATLABのドキュメントを参照してください:http://www.mathworks.com/help/matlab/ref/gradient.html
勾配は、内部のデータポイントの中心差分を算出します。例えば、水平勾配G =勾配(A)を有する単位間隔のデータAを有する行列を考える。内部勾配値G(:、j)は、Nがサイズ(A、2)である場合に、2とN-1との間で変化する。点間隔が指定されている
G(:,1) = A(:,2) - A(:,1);
G(:,N) = A(:,N) - A(:,N-1);
場合、差異が適切にスケーリングされるように、マトリックスの縁に沿って勾配値は、片面違いが計算されます。 2つ以上の出力が指定されている場合、勾配も同様の方法で他の次元に沿った差異を計算します。 diff関数とは異なり、gradientは入力と同じ数の要素を持つ配列を返します。
A = magic(5)
結果:
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
[Gx, Gy] = gradient(A)
結果:
Gx =
7.0000 -8.0000 -8.0000 7.0000 7.0000
-18.0000 -8.0000 4.5000 4.5000 2.0000
2.0000 4.5000 7.0000 4.5000 2.0000
2.0000 4.5000 4.5000 -8.0000 -18.0000
7.0000 7.0000 -8.0000 -8.0000 7.0000
Gy =
ほとんどの左の列:
A(:, 2) - A(:, 1)
結果:
7
-18
2
2
7
あなたが見ることができるように、Gx(:, 1)
はA(:, 2) - A(:, 1)
に等しいです。
GYの同じ結果:
A(2, :) - A(1, :)
結果:
6 -19 6 6 1
複製によって
パディングエッジ:フィルタ勾配フィルタ(サイズ[3,1]及び[1,3])について
パディングは、各側の行と列をレプリケートするだけです。
17 17 24 1 8 15 15
17 17 24 1 8 15 15
23 23 5 7 14 16 16
4 4 6 13 20 22 22
10 10 12 19 21 3 3
11 11 18 25 2 9 9
11 11 18 25 2 9 9
例o画像の境界内部のF式:
のGx(:、2)= 0.5 *(A(:、3) - A(:、1))
例:
0.5*(A(:, 3) - A(:, 1))
結果:
-8.0000
-8.0000
4.5000
4.5000
7.0000