2016-07-23 36 views
0

私は、xの勾配を見つけるためのsobelフィルタが1/8 * [-1 0 1; -2 0 2; -1 0 1]であることを知っています。matlab normxcorr2を使ったエッジ検出

したがって、imgradientxyを使ってxとyのグラジエントを得る代わりに、ソルベルフィルタをnormxcorr2を使って直接使用してフィルタを画像と相関させようとしました。しかし、結果は以下のように全く異なって見えます。

注:私は最初の範囲に原画像を正規化[-1,1]の代わりに[0,255]

Iはnormxcorr2画像とカーネルを相関していることを理解し、私のようにXにソーベルフィルタを使用する場合imgradientxyを使用した場合と同様の結果が得られるはずです。

私の理解に間違っていますか?

Image 2: Gradient on x using imgradientxy

+0

てみてくださいを使用imgradientxy実装したい場合は、[0、1]。 – Rotem

答えて

1

imgradientxy(I)を使用してXおよびY方向の勾配を計算する:imgradientxyを用いたX上

Image 1: Sobel filter correlated with the image using normxcorr2

勾配:normxcorr2を用いて画像に対応付けられ

ソーベルフィルタカーネルが走っている各位置を正規化せずにSobelフィルタとの畳み込み。

normxcorr2(I、template)は、テンプレートとテンプレートの下の領域を正規化し、相関を計算するだけです。

だから、あなたの自己に画像範囲を正規化するために、次のコードに

sobelX = [-1 0 1;-2 0 2;-1 0 1]; 
gradX = conv2(double(I),sobelX,'same');