0

「最適なグローバルおよび適応しきい値処理」アルゴリズムを実装する方法を知っている人はいますか?

知っていれば、私と共有してください。

ありがとう。

4

2 に答える 2

0

画像ヒストグラムに基づいてグローバルしきい値を選択する大津の方法を見てください。

于 2010-07-27T15:40:41.657 に答える
0
public int OtsuThreshold(double[] histogram)
{
    double pr1, pr2, pr;
    int t = 0;
    double[] vet = new double[255];

    double major = -1;
    //int idx;
    for (int k = 1; k < Util.GrayLevels-1; k++)
    {                
        pr1 = HistogramProbability(0, k, histogram);
        pr2 = HistogramProbability(k + 1, Util.MaxGrayLevel, histogram);
        pr=pr1*pr2;
        if(pr==0) pr=1;

        double result = Math.Pow((ImageMean(0, k, histogram) * pr2) - (ImageMean(k + 1, Util.MaxGrayLevel, histogram) * pr1), 2) / pr;
        if (result > major)
        {
            major = result;
            t = k;
        }
    }

    //t = IMaior(vet,Util.GrayLevels);
    return t;
}        


public double HistogramProbability(int start, int end, double[] histogram)
{
    if (start < 0 || end > histogram.Length)
        return 0;

    double p = 0;
    for (int i = start; i < end; ++i)
        p += histogram[i];

    return p;
}


public double ImageMean(int start, int end, double[] histogram)
{
    double mean = 0;

    if (start < 0 || end > histogram.Length) return 0;

    for (int i = start; i < end; i++)
    {
        mean += i * histogram[i];
    }

    return mean;
}

申し訳ありませんが、ここには多くのソース コードがあり、一部のメソッドが欠落している可能性があることはわかっていますが、それに従えば、それほど難しいことではないことがわかります。残念ながら、私は車輪を再発明しています (ライブラリを使用していません) が、ここのソースが、選択した言語でそれを書くのに役立つことを願っています.

このリンクは役に立ちます

また、近くに図書館(工学系・CS系)があれば、こちらの本をオススメします。大津メソッドの仕組みを分かりやすく解説。

よろしく

于 2010-07-27T20:30:57.053 に答える