Definições de Imagem digital e da cadeia de processamento de imagens
Por: kamys17 • 3/4/2018 • 2.048 Palavras (9 Páginas) • 486 Visualizações
...
Vale ressaltar que cada elemento no histograma é calculado como pr(rk) = nk / n, em que nk é o número de pixels cuja intensidade corresponde a k, n é número total de pixels na imagem e pr(rk) é probabilidade do k-ésimo valor de intensidade na imagem [5]. Em outras palavras, o histograma representa a função de distribuição de probabilidades dos valores de intensidade da imagem [5].
O histograma é utilizado como base para diferentes técnicas de processamento de imagens a fim de obter objetivos como melhoria da qualidade da imagem, compressão, segmentação [1]. O histograma costuma ser representado por um gráfico de barras em que o eixo horizontal corresponde ao níveis de intensidade, enquanto que o eixo vertical corresponde à quantidade ou percentual de pixels na imagem [5]. Na Figura 2, é apresentado um gráfico de barras que representa o histograma de uma imagem de oito níveis de cinza.
[pic 2]
Figura 2: Imagem em tons de cinza e seu respectivo histograma representado por um gráfico de barras
Operações sobre imagens: pontuais, globais e de vizinhança
Os métodos de processamento de imagens podem ser divididos em três principais tipos, descritos
a seguir.
Pontual
Neste tipo de algoritmo, apenas a informação de cada pixel é utilizada. Um exemplo seria a realização de operações aritméticas, como somar ou subtrair, nos pixels da imagem resultando na alteração do brilho da mesma. Outro caso tópico de operações pontuais envolve operações lógicas e aritméticas entre imagens. A soma de duas imagens X e Y de mesmo tamanho implica na soma pixel a pixel dos valores de intensidade das imagens produzindo uma terceira imagem Z. Entretanto, esse tipo de operação deve ter cuidado com os processos de underflow (resultado da operação é menor que valor mínimo possível de nível de intensidade) e overflow (resultado da operação é maior que o valor máximo possível de nível de intensidade).
Vizinhança
Nesse tipo de algoritmo, a vizinhança de um pixel (pixels adjacentes a ele) é utilizada para realizar o processamento. Para tanto, é utilizado o conceito de convolução com máscaras. Na convolução, uma máscara (ou janela) é previamente definida e percorrerá toda a imagem realizando operações de acordo com o nível de intensidade do pixel em análise e dos pesos definidos para a máscara. Por exemplo, na Figura 3 é apresentada uma sub-área de uma imagem enquanto que na 4 é apresentada uma máscara 3x3 cujos pesos correspondem a W1,...,W9. Essa máscara percorrerá toda a imagem e, a cada posição relativa da máscara sobre a imagem, o pixel central dessa imagem será substituído pelo valor Z =
[pic 3].
[pic 4]
Figura 3: Imagem em tons de cinza e seu respectivo histograma representado por um gráfico de barras
[pic 5]
Figura 4: Imagem em tons de cinza e seu respectivo histograma representado por um gráfico de barras
Exemplos clássicos de algoritmos que utilizam informações de vizinhança são filtros como o de média e mediana. Nesse tipo de filtro, o valor de cada pixel é calculado e modificado como sendo uma média ou mediana dos valores dos pixels vizinhos. Nesses casos, em específico, a imagem é borrada e esconde imperfeições como ruídos do tipo sal e pimenta. Na Figura 5 é apresentado um exemplo de aplicação de um filtro de média para redução de ruído.
[pic 6]
Figura 5: Exemplo de aplicação de um filtro de vizinhança para redução de ruído.
Global
Em algoritmos em que são necessárias informações da imagem toda, algoritmos globais podem ser utilizados. Neste tipo de algoritmo, a informação de todos os pixels são utilizados para realizar o processamento.
Um exemplo é a centralização de histogramas. Para realizar esse procedimento, a média de todos os pixels é calculada, subtraída de cada pixel e um valor médio é somado em cada um dos pixels da imagem. Esse processo faz com que o histograma da imagem seja movido para o centro da imagem, tornando-a mais escura ou mais clara, dependendo do valor médio de seus pixels.
Os métodos de equalização do histograma e matching (ou especificação) de histogramas realizam a modificação dos pixels a partir de uma função de transformação baseada na distribuição de intensidade de toda a imagem e, portanto, são chamados de globais. Entretanto, em alguns casos pode ser interessante a realização de processamentos para obtenção de detalhes em locais de interesse específicos da imagem. Para realizar esse tipo de processamento, é necessário utilizar funções de transformação baseados na distribuição de intensidade na vizinhança de cada pixel da imagem [1].
Para tanto, é necessário definir uma vizinhança e mover o seu centro em cada pixel de forma a obter o histograma da vizinhança da “imagem” que compõe a vizinhança. Dessa forma, é possível realizar tanto a equalização quanto a especificação do histograma na região de interesse [1].
Algoritmo de obtenção de histogramas
No algoritmo abaixo, escrito na linguagem C, é apresentado uma maneira de se obter o histograma de uma imagem em tons de cinza na forma de um vetor unidimensional, onde cada valor representa o número de pixels que possuem determinada intensidade. No caso, o algoritmo trata uma imagem como uma matriz de dimensões mxn e que possui intensidades no intervalo (0,256).
// Metodo para criacao de um histograma de 256 niveis ,
// baseado em uma imagem com dimensoes mxn com 256 tons de
cinza .
void createHistogram ( int Image [ ] [ ] , int
histogram [ ] ) {
// Iniciar o histograma com o valor 0 for ( int i = 0; i
histogram [ i ] = 0;
}
// Laco de repeticao que percorre a for ( int i = 0; i
...