script day.log

大学生がなんとなく始めた、趣味やら生活のことを記録していく。

2値化手法について(P-タイル法)

以前はモード法についてでしたので、今回はP-タイル法です.
makose3p1229.hatenablog.com

P-タイル法の考え方

P-タイル法では,画像の中から切り出したい対象物の面積をS_0,画像全体の面積をSとし,
その比率をp = S_0 / Sとする.そして,濃度ヒストグラムの濃度の低い方(あるいは高い方)からの画素数と,
画像全体の画素数の割合がpとなる濃度値を閾値とする.
この手法は,切り出すべき図形の面積がある程度分かっている場合によく用いられる.

P-タイル法の実装

私が作成したC言語でのP-タイル法の処理部分を以下に示します.
rateが切り出したい面積の割合です.
thが閾値となります.

        double rate = 0.5;
        int sum = 0;
        for (int i = 0; i < HEIGHT; i++){
            for (int j = 0; j < WIDTH; j++){
                histgram[image[i][j]]++;
            }
        }

        for (int i = 0; i < 256; i++){
            sum += histgram[i];
        }
    
        int th = sum * rate;
        sum = 0;
        for (int i = 0; i < 256; i++){
            sum += histgram[i];
            if(sum > th){
                th = i;
                break;
            }
        }

次は判別分析法ですかね.
微分ヒストグラム法や動的閾値法はどうしましょう…