Limiarização por equilíbrio do histograma – Wikipédia, a enciclopédia livre
Em processamento de imagem, o método de limiarização por equilíbrio do histograma [1], é um método muito simples utilizado para fazer a limiarização de uma imagem ou, por outras palavras, transformar uma imagem definida a níveis de cinza numa imagem definida a preto e branco (binária). Na mesma linha de métodos como o método de Otsu [2] e método de Seleção Iterativa [3], este é um método baseado no processamento do histograma da imagem. O algoritmo assume que a imagem se divide em duas classes: o fundo e o objeto propriamente dito. O método procura encontrar o nível de limiarização óptimo que divide o histograma em duas classes.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Lovely_spider.jpeg/200px-Lovely_spider.jpeg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lovely_spider_BHT.jpeg/200px-Lovely_spider_BHT.jpeg)
Este método pesa o histograma, verifica qual dos dois lados é o mais pesado, e remove peso do lado mais pesado até que este se torne o mais leve. Repete a mesma o operação até que os dois extremos da balança se encontrem. Dada a sua simplicidade, este método é uma boa escolha como primeira abordagem ao se discutir a limiarização automática de imagens.
Algoritmo
[editar | editar código-fonte]A listagem abaixo, em notação C, é uma simplificação do algoritmo de Limiarização por Equilíbrio do Histograma:
int BHThreshold(int[] histogram) { i_m = (int)((i_s + i_e) / 2.0f); // Base da balança I_m w_l = get_weight(i_s, i_m + 1, histogram); // peso na esquerda W_l w_r = get_weight(i_m + 1, i_e + 1, histogram); // peso na direita W_r while (i_s <= i_e) { if (w_r > w_l) { // mais peso à direita 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) { // mais peso à esquerda 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; }
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/BhaProgress3.gif/200px-BhaProgress3.gif)
Este algoritmo poderá apresentar problemas em imagens com muito ruído, visto que os limites da balança poderão ser erroneamente definidos. Para minimizar este problema, pode ser definido um valor mínimo de representatividade para eliminar as barras, resultantes de ruído, antes do início e após o fim do histograma [4].
Referências
- ↑ 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.