構造化要素が次のようになっている場合(原点はSEの中心にあります):
0 0 0
0 0 0
0 0 0
バイナリイメージで侵食/膨張を実行すると、結果はすべて0または1になります。誰かがこれを説明してもらえますか?(matlabで確認)
ありがとうございます。
構造化要素が次のようになっている場合(原点はSEの中心にあります):
0 0 0
0 0 0
0 0 0
バイナリイメージで侵食/膨張を実行すると、結果はすべて0または1になります。誰かがこれを説明してもらえますか?(matlabで確認)
ありがとうございます。
あなたは完全に有効なSEを持っています。これは平らな正方形で、一般的に受け入れられており、すべての画像処理ライブラリで利用できます。
ここで、フラット構造要素と非フラット構造要素(または構造化関数)の違いと類似性を理解することが重要です。類似点は、それらが特定の近隣で動作することです。要素の正方形要素の場合、近傍は3x3行列で表すことができ、すべての要素が要素の近傍にあります(たとえば、ひし形SEの場合、これも3x3行列になりますが、コーナーは近所)。ones(3, 3)
Matlabでは、この特定の近傍関係は、または単にで表されます[1 1 1; 1 1 1; 1 1 1]
。フラットSEと非フラットSEの違いは、strel
Matlabでの機能はそのままです。非フラットSEは、ネイバーを異なる方法で処理できることを意味するため、値0のみに依存するわけではありません(この状況を処理するために、侵食と膨張の定義がわずかに変更されています)。例として、正方形のSEはMatlabで正しく定義されていますstrel('arbitrary', ones(3, 3), zeros(3, 3))
(2番目のパラメーターとして指定するzeros(3, 3)
と、隣接するパラメーターがないと言っているため、基本的にエラーになります)。一方、非平坦な正方形は無限の方法で定義でき、そのうちの1つはである可能性がありますstrel('arbitrary', ones(3, 3), [-1 -1 -1; -1 0 -1; -1 -1 -1])
。
要約すると、あなたはおそらくstrel
間違って使用しています。