//----------------------------------------------------------------- // ip_clstr.cpp: // パターン分類: クラスタリング手法 // Last Update: <2004/12/22 22:19:09 A.Murakami> //----------------------------------------------------------------- #include #include #include "wingui.h" #include "ipcommon.h" #include "clustering.h" //----------------------------------------------------------------- #define CLSTR_R 20 // クラスタ半径 //----------------------------------------------------------------- void toOrg(); void NNmethod(); void Tree(); void Kmean(); //----------------------------------------------------------------- // メニューへの追加内容 //----------------------------------------------------------------- MenuInfo MI[] = { {"元画像",toOrg}, {"Clustering(NN)",NNmethod}, {"Clustering(Tree)",Tree}, {"Clustering(K-mean)",Kmean}, {NULL,NULL} }; //----------------------------------------------------------------- // 初期化 //----------------------------------------------------------------- void IP_init(){} //----------------------------------------------------------------- // 元画像の表示 //----------------------------------------------------------------- void toOrg() { CopyMemory(lpBMP,lpOrgBMP,iLength*iHeight); } //----------------------------------------------------------------- // NN法によるクラスタリング //----------------------------------------------------------------- void NNmethod() { // 濃淡画像の取得 LPBYTE iGray=GetGray(COLOR_G); //GetGray(); clustering_NNmethod(iGray,CLSTR_R,CLUT_DALL); //-------------------------------------------------- // iGray: 入力/表示画像 // CLSTR_R: 初期クラスタ半径, // 表示オプション: // CLUT_DALL: クラスタ中心, 全パターン, // クラスタ-パターン間の距離の表示 // CLUT_DCENT: クラスタ中心のみ表示 // CLUT_DALLPOINT: クラスタ中心, 全パターンの表示 //-------------------------------------------------- // 表示用 GrayToColor(iGray,lpBMP); // 後片付け GlobalFree(iGray); } //----------------------------------------------------------------- // 階層的クラスタリング //----------------------------------------------------------------- void Tree() { // 濃淡画像の取得 LPBYTE iGray=GetGray(COLOR_G); clustering_Tree(iGray,CLSTR_R,CLUT_DCENT); //-------------------------------------------------- // iGray: 入力/表示画像 // CLSTR_R: 最小クラスタ間距離 //-------------------------------------------------- // 表示用 GrayToColor(iGray,lpBMP); // 後片付け GlobalFree(iGray); } //----------------------------------------------------------------- // K-平均法によるクラスタリング //----------------------------------------------------------------- void Kmean() { // 濃淡画像の取得 LPBYTE iGray=GetGray(COLOR_G); clustering_Kmean(iGray,CLSTR_R,50,CLUT_DCENT); //-------------------------------------------------- // iGray: 入力/表示画像 // CLSTR_R: 初期クラスタ半径 // 50: K-number(K個の初期クラスタを与える) //-------------------------------------------------- // 表示用 GrayToColor(iGray,lpBMP); // 後片付け GlobalFree(iGray); }