K平均クラスタリングに基づく画像分割法

「『』 関数kmeansは、」 『画像分割を実現するために、』
 インポートのNPとしてnumpyの
 インポートイメージとしてPIL.Imageを
 から sklearn.clusterのインポート関数kmeansは、
 #はloadDatoは私のイメージ解決するために定義する
デフloaddataの(filePathにする):
     F =オープン(filePathに、RB '#のバイナリとの契約 
     データ= [] 
     IMG = image.open(F)#1 画素への復帰(像素值) 
     M、N = img.size 画像のサイズ
     のために I における範囲(M)
          のための J レンジ(N):
             X、Y、Z = img.getpixel((i、j)は)
              #の範囲0-1のピクセルに対処し、データを保存 
             data.append([X / 256.0、Y / 256.0、Z / 256.0 ])
     f.close()
     戻りnp.mat(データ)、M、N 
     
imgData、行、COL = loaddataの(" ./picture/apple.png " 設定clusersは(聚类中心)3であり、 
ラベル=関数kmeans (n_clusters = 3 ).fit_predict(imgData)
各画素のラベルを取得 
ラベル= label.reshape([行、列])
K-手段の結果を保存するための新しいイメージを作成 
pic_new = image.new(" Lを、(行、列))
ピクセルを追加するラベルに従って
ため I 範囲(行)
      のために、J における範囲(COL):
         pic_new.putpixel((i、j)は、INT( 256 /(ラベル[ I] [J] +1 )))
pic_new.save(" ./picture/km.jpg "" JPEG "

K平均アルゴリズム:

私たちはしばしば、K平均アルゴリズムが教師なし分類される(タグ情報のトレーニングサンプルが不明で、目標は固有の性質によるものであり、更なるデータのためのデータを明らかにする研究の非標識学習サンプルの法律は、分析のための基礎を提供する)ことを言いますそれはクラスタ中心が移動したり、差が閾値未満で移動していない場合に繰り返し、クラスタ中心を更新することにより、サンプル間の類似性のある程度の貫通方法の指標である、試料は、異なるカテゴリに分割されます。サンプルデータは、いくつかのサブセットに分割されて設定するクラスタリングの試みは、一般に互いに素である、各サブセットは、各クラスタは、潜在的なクラスの数に対応してもよく、この分割により、「クラスタ」と呼ばれます。

アルゴリズムのステップ:

  • ランダムに選択されたクラスタ中心
  • 全てのサンプル点の現在のクラスタセンターによれば、選択されたメトリックを使用して、分類
  • クラスタ中心として次の反復、サンプル点の種類ごとに平均電流を計算します
  • 現在のクラスタ中心及びクラスタ中心との間の隙間の計算の次の反復、ギャップが閾値反復、反復を終了未満である場合。

アルゴリズムの擬似コード:

 

ここで、Dは、サンプルセットは、クレードCに分割し得

画像分割実験:、画像のグレースケール、色、テクスチャ及び形状特徴を用いて、非重複複数の領域に画像を分割し、同じ領域に提示機能の類似性、異なる領域の間に有意な違い。エリア画像は、異なる研究のためのユニークな特性を抽出するセグメント化することができます。この実験では、我々はリンゴのクラスタ中心がn_clustersを設定します= 3、猫のクラスタ中心が2に設定されています

1、実験手順

  • kms.pyプロジェクトを確立し、必要なパッケージのpythonをインポート
  • ローカルの画像の前処理をロード
  • K平均クラスタリングアルゴリズム
  • クラスタリングと出力ピクセルを保存

2、実験データ

      テスト画像:

 

3.実験結果

3、テストサマリー

この実験では、我々は、異なるクラスタリング結果が得られ、クラスタ中心の異なるセットを採用しました。あなたが希望する結果を得たい場合には、K値の不確実性は、当社の業務を助長されていませんになり、いくつかの試み、でなければなりません。

この実験では、我々は次のような問題が発生した場合:

(1)IndentationError:インデント解除は、任意の外側のインデントレベルと一致しません

(2)とValueError:形状に(500500)をサイズ500のアレイを再構築することができません

問題解決:

この2つの問題がある理由は、そのアライメント形式のPythonの問題は、F開閉fが整列しなければならない、と与えられている理由は、ちょうどここにもあります。その理由は、一般的な(2)のデータ形式まで正しい形式でコードを見てまず、問題であるが、データ形式の問題を考慮してもよい与えられます。

おすすめ

転載: www.cnblogs.com/wzw0625/p/11567500.html