Kuvankäsittelyssä harmaasävykuvan binaarisointiin käytetään histogrammin tasapainoista kynnysalgoritmia [ 1 ] . Tämä algoritmi olettaa, että kuva sisältää kahden luokan pikseleitä , jotka kuuluvat taustalle ja etualaan. Kuten Otsu-menetelmä [2] ja iteratiivinen kynnysmenetelmä [3] , se perustuu iteratiiviseen kynnyksen löytämiseen, joka erottaa pikselit tiettyihin luokkiin. Tässä menetelmässä kaksi yhtä suurta osaa histogrammista painotetaan. Jos yksi osa painaa enemmän, äärimmäisin pylväs poistetaan raskaammasta osasta. Iteratiivinen prosessi päättyy, kun histogrammissa on jäljellä enää yksi pylväs ja vastaava intensiteettiarvo valitaan kynnysarvoksi.
Algoritmin yksinkertaisuuden vuoksi sitä voidaan suositella ensimmäiseksi lähestymistavaksi tutkittaessa harmaasävykuvan binarisointialgoritmeja.
Seuraava C-ohjelma on yksinkertaistettu versio tasapainotetun histogrammin kynnysalgoritmista:
int BHTthreshold ( int [] histogrammi ) { i_m = ( int )(( i_s + i_e ) / 2.0f ); // painokeskuksen laskenta I_m w_l = get_weight ( i_s , i_m + 1 , histogrammi ); // histogrammin vasemman puolen paino W_l w_r = get_weight ( i_m + 1 , i_e + 1 , histogrammi ); // histogrammin oikean puolen paino W_r while ( i_s <= i_e ) { if ( w_r > w_l ) { // oikea puoli on raskaampi w_r -= histogrammi [ i_e -- ]; if ((( i_s + i_e ) / 2 ) < i_m ) { w_r += histogrammi [ i_m ]; w_l -= histogrammi [ i_m -- ]; } } else if ( w_l >= w_r ) { // vasen puoli on raskaampi w_l -= histogrammi [ i_s ++ ]; if ((( i_s + i_e ) / 2 ) > i_m ) { w_l += histogrammi [ i_m + 1 ]; w_r -= histogrammi [ i_m + 1 ]; i_m ++ ; } } } paluu i_m ; }Joskus algoritmi voi antaa epäoptimaalisia tuloksia käsiteltäessä erittäin kohinaisia kuvia, koska kohina voi johtaa virheisiin histogrammiosien poimimisessa. Voit vähentää kohinan vaikutusta merkittävästi, jos jätät huomioimatta sen päissä sijaitsevat histogrammin epäedustamattomat palkit [4] .