0

このサイトでは、クラス間分散を使用したアプローチの実装を提供しています。ただし、クラス分散内で実行したい(残念ながら式を投稿することはできませんが、サイトで確認できます)。これは遅いと考えられています。これが私のアプローチです:

double varb,varf = 0;
int sum,wB,wF,treshold = 0 
double varMin = Float.MAX_VALUE;
for (int t=0 ; t<256; t++) {
    for(int i =1; i <=t; i++) {
        sum+= i*hist[i];
    }
    for(int i =1; i <=t; i++) {
        wB += hist[i];
    }
    sumB += (float) (t * histo[t]);
    wF = N - wB;
    double mB =(double) N*sumB / wB; // Mean Background
    double mF = (double) N*(sum - sumB) / wF; // sum is the sum of all grey values

    for(int i =1; i <=t; i++) {
        varb += (i-mB)*(i-mB)*(hist[i]/N)/wB;
    }
    for(int i =t+1; i <256; i++) {
        varb += (i-mF)*(i-mF)*(hist[i]/N)/wF;
    }
    double var = wB*varb/N + wF * varf/N;
    if (var < varMin) {  //checks for the smallest variance
        varMin = var;
        threshold = t;
    }
}

私は常にゼロになっています。私に何ができる?

4

1 に答える 1