2012-02-22 14 views
2

私はそれは私が使用していると私はそれを理解したいコードの部分でのコードのこの行は画像操作コード(コーナー検出)

corners = (m==n)&(n>threshold); 

の作品正確にどのように知っているように思います。基本的に、mとnは両方とも等しいサイズの画像であり、「しきい値」は小数値です。

コンテキストを理解するには、コードのセグメントを以下に示します。

% compute the m cornerness measure 
m = (ix2s.*iy2s - ixys.^2) - 0.04*(ix2s+iy2s).^2; 

% perform non-maximal suppression using ordfilt2 
n = ordfilt2(m, radius^2, ones([radius radius])); 

% display corner spots 
corners = (m==n)&(n>threshold); 

% superimpose corners 
Q = corners+im; 
Q(Q>1) = 1; 
C = repmat(im,[1 1 3]); 
C(:,:,1) = Q; 

答えて

3

Iが正しく理解、N近傍ためのM(「コーナネス尺度」)の最大値であるので、ライン手段場合 - その後、「mが極大と(閾値より大きい)十分に大きい場合

corners = (m==n)&(m>threshold); 
+0

ので、それを破壊する、 M == N チェックが真の場合は1をマーキング、すべてのスロットm(:, :)およびN(:,配列で:)でnに等価ためmです。そして、これはmに対するnの定義なので、極大値でのみ起こります。 次に、同等の値がしきい値よりも大きいかどうかを確認し、それでも同じ場合は、1をコーナーに戻します。 上記は正しいですか?コーナーの寸法に関して、MATLABは自動的にmとnの両方の寸法を自動的に与えます。 mとnが異なる値をとった場合はどうなりますか?私はその陳述が無効になると思っていますか? – mathjacks

+0

私が正しく理解していれば、説明は正しいです。プログラムは最初の行でmを計算し、2番目の行でnを計算します。外側のパラメータは半径(ローカルエリアのサイズ)としきい値です(多かれ少なかれ - 偽陽性と偽陰性の間の嗜好レベル)。 – Ofir

1

あなたはHarris corner detectorについての詳細を読んでください:これはおそらくコーナー」で、それは間違いなく、より読みやすいようだったかもしれません。ウィキペディアから撮影:

enter image description here

この行は、前述した機能の実装です。コーナーを検出するために使用されます。