Example #1
0
int main(void){
    int    **R, **G, **B, **Y, **F, **L;
    int    hist[256];
    int    boader;
    int    label_num;

    R = (int **)IAllocImage(640,480);   // 画像領域(赤)を確保
    G = (int **)IAllocImage(640,480);   // 画像領域(緑)を確保
    B = (int **)IAllocImage(640,480);   // 画像領域(青)を確保
    Y = (int **)IAllocImage(640,480);   // 画像領域(グレースケール)を確保
    F = (int **)IAllocImage(640,480);   // 画像領域(二値)を確保
    L = (int **)IAllocImage(640,480);   // 画像領域(ラベル付)を確保

    GInit(640,480);                     // Windowの生成
    ILoadPpmImage("abstmix.ppm",R,G,B); // ppmファイルの読み込み
    TranslateGrayScale(R,G,B,Y);        // グレースケールに変換
    MakeHistogram(Y,hist);              // ヒストグラム作成
    DisplayColorImage(Y,Y,Y);

    boader = Percentile(Y,hist,0.92);
    TranslateBoolScale(Y,F,boader);     // パーセンタイル法で2値化
    remove_noise(F,13);
    label_num=labeling(F,L);
    DisplayColorImage(F,F,F);
    printf("label_num=%d\n",label_num);
    printLabelingData(L,label_num);

    GWaitLoop();                        // 終了処理

    exit(EXIT_SUCCESS);
}
Example #2
0
int main(void){
    int    **R, **G, **B, **Y, **F;
    int    hist[256];
    double per;  // パーセンタイル法におけるpの値
    int    boader;

    R = (int **)IAllocImage(640,480);   // 画像領域(赤)を確保
    G = (int **)IAllocImage(640,480);   // 画像領域(緑)を確保
    B = (int **)IAllocImage(640,480);   // 画像領域(青)を確保
    Y = (int **)IAllocImage(640,480);   // 画像領域(グレースケール)を確保
    F = (int **)IAllocImage(640,480);   // 画像領域(二値)を確保

    GInit(640,480);                     // Windowの生成
    ILoadPpmImage("abstmix.ppm",R,G,B); // ppmファイルの読み込み
    TranslateGrayScale(R,G,B,Y);        // グレースケールに変換
    MakeHistogram(Y,hist);              // ヒストグラム作成
    DisplayColorImage(Y,Y,Y);

    printf("input per\n");
    while(EOF!=scanf("%lf",&per)){                // パーセンタイル法で二値化
       printf("per=%g,black=%g\n",per,IE*JE*per);
       boader = Percentile(Y,hist,per);
       printf("boader=%d\n",boader);
       TranslateBoolScale(Y,F,boader);
       remove_noise(F,0);
       DisplayColorImage(F,F,F);
    }

    GWaitLoop();                        // 終了処理

    exit(EXIT_SUCCESS);
}
Example #3
0
double Histogram::Median() const {
  return Percentile(50.0);
}