トップページ -> 実践知識 -> Octave を用いた画像処理,信号処理 -> Octave での k-means クラスタリングの例
[サイトマップへ], サイト内検索:

Octave での k-means クラスタリングの例

サイト構成 連絡先,業績など 実践知識 データの扱い コンピュータ 教材 サポートページ

statistics パッケージの kmeans() 関数を使い、k-means クラスタリングを行なってみます.

※ statistics パッケージではなくて、 Octave 言語で独自に作成した k-means クラスタリングのソースコードは、別の Web ページに載せています 


前準備


実行方法と実行結果の例

  1. Octave を起動

  2. 次の Octave プログラム実行

    <プログラムの要点>

    function retval = image_quantize (fname, k)
      [rgb, immap, alpha] = imread(fname);
      rvec = reshape( rgb(:,:,1), size(rgb)(1) * size(rgb)(2), 1 );
      gvec = reshape( rgb(:,:,2), size(rgb)(1) * size(rgb)(2), 1 );
      bvec = reshape( rgb(:,:,3), size(rgb)(1) * size(rgb)(2), 1 );
      V = [rvec gvec bvec];
      [idxk, centersk] = kmeans (double(V), k);
      Vk = centersk(idxk,:); 
      rgbk(:,:,1) = reshape( Vk(:,1), size(rgb)(1), size(rgb)(2) );
      rgbk(:,:,2) = reshape( Vk(:,2), size(rgb)(1), size(rgb)(2) );
      rgbk(:,:,3) = reshape( Vk(:,3), size(rgb)(1), size(rgb)(2) );
      retval = zeros(size(rgb)(1), size(rgb)(2), size(rgb)(3));
      retval = uint8(rgbk);  
    endfunction
    
    
    rgb2 = image_quantize("/usr/local/share/OpenCV/samples/c/fruits.jpg", 8);
    imshow(rgb2);
    

    元画像の例

    クラスタリングの結果の例

    次の結果が出る