public int[] binary_limits_finder(int[] histo, int sum)
{
int[] binary_limits = new int[iloscKlas - 1]; //tablica z limitami --> Limitow powinno byc (iloscKlas-1) - przeciez one powinny podzielic nasz obraz na tyle obszarow, ile wynosi iloscKlas
double percent_part = (double)1 / (double)iloscKlas; //skok procentowy z jakim sie poruszamy (np 12.5)
double percent_part_floating = percent_part; //przesuwajacy sie przedzial procentowy (np 12.5->25>37.5)
//MessageBox.Show("Suma pikseli: " + sum*
double foo = 0;
int curr_index = 0; //nr przedzialu w ktorym jestesmy
for (int i = 0; i < iloscOdcieniSzarosci; i++)
{
foo += histo[i];
if (foo / sum > percent_part_floating) //sprawdzenie w jakim przedziale miesci sie suma prawdopodobienstw
{
percent_part_floating += percent_part; //jezeli juz w nastepnym, to zwieksz przedzial procentowy
binary_limits[curr_index++] = i - 1; //zapisz nr koloru granicznego
}
}
//binary_limits[iloscKlas - 2] = 255; //ostatni i tak zawsze jest bialy, a niestety petla nigdy do niego nie dojdzie TO FIX
return binary_limits; //funkcja zwraca tablice limitow tzn bin_lim[0] = 101 oznacza, ze wszystkie piksele
}