Interested Article - Алгоритм сбалансированного порогового отсечения гистограммы


- 2020-09-10
- 1
При обработке изображений , алгоритм сбалансированного порогового отсечения гистограммы , используется для бинаризации полутонового изображения . В этом алгоритме предполагается, что изображение содержит пиксели двух классов, принадлежащие фону и переднему плану. Как и метод Оцу и метод итеративного выбора порога , он основан на итеративном нахождении порогового значения, которое разделяет пиксели на данные классы. В этом методе взвешиваются две равные доли гистограммы . Если одна часть перевешивает, то из более тяжелой части удаляется наиболее крайний столбик. Итеративная процедура заканчивается, когда в гистограмме остается только один столбик и соответствующее ему значение интенсивности выбирается в качестве порогового значения.
Учитывая простоту алгоритма, его можно рекомендовать в качестве первого подхода при изучении алгоритмов бинаризации полутоновых изображений.


Алгоритм
Следующая программа на языке Си — это упрощенная версия алгоритма сбалансированного порогового отсечения гистограммы:
int BHThreshold(int[] histogram) {
i_m = (int)((i_s + i_e) / 2.0f); // расчет центра весов I_m
w_l = get_weight(i_s, i_m + 1, histogram); // вес левой части гистограммы W_l
w_r = get_weight(i_m + 1, i_e + 1, histogram); // вес правой части гистограммы W_r
while (i_s <= i_e) {
if (w_r > w_l) { // правая часть тяжелее
w_r -= histogram[i_e--];
if (((i_s + i_e) / 2) < i_m) {
w_r += histogram[i_m];
w_l -= histogram[i_m--];
}
} else if (w_l >= w_r) { // левая часть тяжелее
w_l -= histogram[i_s++];
if (((i_s + i_e) / 2) > i_m) {
w_l += histogram[i_m + 1];
w_r -= histogram[i_m + 1];
i_m++;
}
}
}
return i_m;
}

Иногда алгоритм может давать неоптимальные результаты при обработке сильно зашумленных изображений, поскольку шум может привести к ошибкам при выделении долей гистограммы. Можно значительно ослабить влияние шума, если исключить из рассмотрения непрезентативные столбики гистограммы, расположенные на её концах .
Литература
- A. Anjos and H. Shahbazkia. Bi-Level Image Thresholding — A Fast Method. BIOSIGNALS 2008. Vol:2. P:70-76.
- Nobuyuki Otsu (1979). «A threshold selection method from gray-level histograms». IEEE Trans. Sys., Man., Cyber. 9: 62-66.
- Ridler TW, Calvard S. (1978) Picture thresholding using an iterative selection method, IEEE Trans. System, Man and Cybernetics, SMC-8: 630—632.
- A. Anjos, R. Leite, M. L. Cancela, H. Shahbazkia. MAQ — A Bioinformatics Tool for Automatic Macroarray Analysis. International Journal of Computer Applications. 2010. Number 7 — Article 1.
Ссылки

- 2020-09-10
- 1