1. ホーム
  2. algorithm

[解決済み] 平均シフトを用いた画像分割の説明

2022-09-22 01:39:40

質問

Mean Shiftセグメンテーションが実際にどのように機能するのか、どなたか教えていただけませんか?

私が作成した8x8の行列です。

  103  103  103  103  103  103  106  104   
  103  147  147  153  147  156  153  104   
  107  153  153  153  153  153  153  107   
  103  153  147  96   98   153  153  104   
  107  156  153  97   96   147  153  107   
  103  153  153  147  156  153  153  101   
  103  156  153  147  147  153  153  104   
  103  103  107  104  103  106  103  107

上のマトリックスを使って、Mean Shiftセグメンテーションがどのように3つの異なるレベルの数字を分離するかを説明することは可能でしょうか?

どのように解決するのですか?

まず基本的なこと。

平均シフトセグメンテーションは、局所的なオブジェクトのシェーディングまたはトーンの違いを減衰させるために非常に有用な局所的な均質化技術です。 多くの言葉を並べるよりも、例を挙げる方がよいでしょう。

アクション は、各ピクセルを、距離d以内の近傍範囲にあるピクセルの平均値で置き換えます。

Mean Shiftは通常3つの入力を必要とします。

  1. ピクセル間の距離を測定するための距離関数。通常はユークリッド距離ですが、他のよく定義された距離関数も使用できます。また マンハッタン 距離 は、時には別の便利な選択肢です。
  2. 半径を指定します。この半径内のすべてのピクセル(上記の距離に従って測定)が計算に含まれます。
  3. 値の差。半径 r 内のすべてのピクセルから、値がこの差の範囲内にあるものだけを取り出して平均値を計算します。

このアルゴリズムは境界でうまく定義されていないため、実装によって異なる結果が得られることに注意してください。

数学的な詳細については、StackOverflowにない適切な数学的表記法なしでは示すことができないため、ここでは説明しませんし、また、以下のサイトで見つけることができるためです。 の良いソースから見つけることができます。 .

行列の中心を見てみましょう。

153  153  153  153 
147  96   98   153 
153  97   96   147   
153  153  147  156  

半径と距離を適切に選択すると、4つの中心画素は97(平均)の値を取り、隣接する画素とは異なるものになります。

で計算してみましょう。 Mathematica . 実際の数値を表示するのではなく,色分けして表示するので,何が起こっているのかがわかりやすくなります.

あなたの行列の色分けは

次に、合理的なMean Shiftをとります。

MeanShiftFilter[a, 3, 3]

そして、得られます。

すべてのセンターエレメントが等しいところ(ちなみに97まで)。

より均質なカラーリングを得るために、Mean Shiftで数回反復することができます。数回の繰り返しの後、安定した非等方的な構成に到達します。

この時点で、Mean Shift を適用した後に得られる "colors" の数を選択できないことが明らかになったはずです。そこで、質問の2番目の部分である、それを行う方法を示しましょう。

出力クラスタの数をあらかじめ設定できるようにするために必要なのは、次のようなものです。 Kmeansクラスタリング .

行列に対してこのように実行されます。

b = ClusteringComponents[a, 3]

{{1, 1, 1, 1, 1, 1, 1, 1}, 
 {1, 2, 2, 3, 2, 3, 3, 1}, 
 {1, 3, 3, 3, 3, 3, 3, 1}, 
 {1, 3, 2, 1, 1, 3, 3, 1}, 
 {1, 3, 3, 1, 1, 2, 3, 1}, 
 {1, 3, 3, 2, 3, 3, 3, 1}, 
 {1, 3, 3, 2, 2, 3, 3, 1}, 
 {1, 1, 1, 1, 1, 1, 1, 1}}  

または

これは以前の結果と非常によく似ていますが、ご覧の通り、現在は3つの出力レベルしかありません。

HTH!