Histograma de imagem e operações baseadas em histograma
Histograma representa a probabilidade ou a distribuição dos valores de intensidade presentes nos pixels de uma imagem. Pode ser representado de quatro formas:
- Histograma básico
- Histograma normalizado
- Histograma acumulado
- Histograma acumulado normalizado
O histograma também é conhecido com PDF (Função de Densidade de Probabilidade). Estatisticamente, o histograma representa a probabilidade de ocorrer um valor de intensidade na imagem.
Histograma básico
O histograma básico é uma função que gera a distribuição dos valores de intensidade presentes em uma imagem. Em termos matemáticos, tem-se:
A função resulta em um vetor de elementos onde:
- representa a profundidade de bits da imagem
- corresponde a um valor de intensidade no intervalo
A função deve ser aplicada para cada nível de intensidade presente na imagem. Por exemplo, para calcular a quantidade de pixels com intensidade usa-se . Para uma imagem com bit de cores, seria necessário calcular o conjunto:
De um modo geral deseja-se encontrar o conjunto:
Algoritmo para encontrar o histograma de imagem em tom de cinza, com 8 bits de cores:
Algoritmo Histograma
I = imagem() # matriz linha x coluna representando a imagem
h = vetor(256) # define um vetor com 256 elementos
h[] = 0 # atribui o valor 0 para cada elemento do vetor
para i de 1 até linhas(I) faça # percorre as linhas
para j de 1 até colunas(I) faça # percorre as colunas
h[ I[i][j] ]++ # incrementa h no índice correspondente
# ao valor de intensidade
A figura a seguir ilustra histogramas de quatro tipos básicos de imagens: escura, clara, baixo contraste e alto contraste.
Histograma normalizado
O histograma normalizado é baseado no histograma básico (não normalizado). Em termos matemáticos, tem-se:
Onde é o número total de pixels na imagem. O valor da função está no intervalo .
Histograma acumulado
O histograma acumulado assemelha-se ao histograma não normalizado. A diferença é que aplica-se a equação:
ou
Histograma acumulado normalizado
O histograma acumulado normalizado reúne os conceitos dos histogramas normalizado e acumulado. Sua representação matemática é a seguinte:
ou
Histogramas de imagens coloridas (multibandas)
As funções de histogramas apresentadas anteriormente consideram imagens em tons de cinza (uma única banda). No caso de imagens coloridas, como sistemas de cores as representam utilizando mais de uma banda, é necessário encontrar o histograma para cada banda de cor. Por exemplo, no caso de uma imagem com cores representadas em RGB, seria necessário encontrar o histograma para as bandas R (vermelho), G (verde) e B (azul).
Equalização de histograma
A equalização de histograma é uma operação de processamento de imagem que tem como objetivo realçar a imagem, aproximando o histograma da imagem de um histograma uniforme. Para isso, usa-se a função da seguinte forma:
A figura a seguir ilustra os efeitos da equalização de histograma em quatro tipos de imagens: escura, clara, baixo contraste e alto contraste.
O algoritmo para a equalização de histograma é apresentado a seguir.
Algoritmo EqualizacaoDeHistograma
I = imagem() # matriz linha x coluna representando a imagem
h = HistogramaNormalizadoAcumulado() # encontra o histograma normalizado acumulado
para i de 1 até linhas(I) faça # percorre as linhas
para j de 1 até colunas(I) faça # percorre as colunas
I[i][j] = h[ I[i][j] ] # equaliza o pixel na posicao (i, j)
Exercício
1) Implemente as funções de histograma (básico, normalizado, acumulado e acumulado normalizado), aplique-as sobre uma imagem (de sua escolha) e apresente seus gráficos.
2) Implemente a operação de equalização de histograma sobre uma imagem (de sua escolha) e apresente a imagem resultante. Comente os resultados obtidos.