水平および垂直グラデーションを与える水平および垂直マトリックスで各ピクセルをフィルタリングすることを理解しています。グラデーションは、それぞれの軸に沿った色の違いを表します。私は理解しています。私が理解できないのは、勾配を 2 乗して加算し、その平方根をとることによって、最終的な値がどのように計算されるかということです。なんとなくわかるはずなのですが、よくわかりません。
質問する
441 次
1 に答える
2
X と Y の勾配を合わせて 2D ベクトル を構成し(G_x,G_y)
ます。このベクトルは、原点を基準とする矢印と考えることができます。これは、その点でのイメージ値の導関数の方向と大きさを示します。(より正確には、Sobol フィルターはローカル ピクセル値を使用して導関数の有限差分近似を計算します)。
ベクトルには方向と大きさの両方があります。このベクトルの大きさだけに関心がある場合は、その長さを計算する必要があります。ピタゴラスの定理は、この長さを計算する方法です: G = sqrt(G_x^2 + G_y^2)
.
ベクトルの長さを使用する理由は、それがエッジの方向にスムーズに依存しないためです。
代わりに絶対差を平均化または追加しようとすると、エッジ検出器は垂直または水平のエッジよりも斜めのエッジに敏感になります。代わりに、2 つのベクトル要素の最大絶対値を取得しようとすると、その逆になります。また、どちらの選択肢も入力ベクトルの滑らかな関数ではないため、関数が滑らかでないベクトルの向きで「ねじれ」が発生します。
独自のフィルターを作成している場合は、簡単に試すことができます。滑らかさと向きに依存しないことの欠如は、エッジ検出フィルターの結果に醜いアーティファクトとして現れます。
于 2013-11-04T23:28:21.347 に答える