Processamento de imagens na prática

Histogramas de Imagem

Com este post pretendo criar a explicação de Histogramas de Imagens mais simples de entender da internet. Se você é uma daquelas pessoas que só aprendeu divisão usando os palitinhos de picolé, vá já no quarto do irmão mais novo e pegue a caixa de Lego, que vamos usar…

A imagem

Vamos simular uma imagem usando peças de lego como pixels. A imagem ao lado tem a minha simulação – usei a imagem em tons de cinza para não fazer confusão. Esta imagem tem 4 tons de cinza (numerados de 0 a 3 na segunda imagem), e é composta por 16 blocos de lego (pixels).

O bloco mais escuro tem valor zero (porque representa a ausência de luz), e o mais claro tem o valor mais alto. Esta escala de intensidade é padrão na maioria dos programas que tratam de processamento de imagens.

O histograma

Na estatística, um histograma é uma representação gráfica da distribuição de frequências de uma massa de medições.

A “massa de medições” é o que estamos medindo: a intensidade de cada pixel (ou de cada ploco de lego): o primeiro (de cima para baixo, da esquerda para a direita, mede 3; o segundo mede 3 também, e assim até chegar ao último, que mede 2. Temos 16 medições – uma para cada bloco (pixel).

Distribuição de frequência é a quantidade de vezes (frequência) em que cada valor medido aparece: o zero aparece duas vezes, o um aparece 3 vezes.

Assim, o histograma será uma representação gráfica de quantas vezes cada valor de pixel aparece: e fazer isso com o lego nem exige contas: é só fazer uma pilha de blocos para cada cor (intensidade), em ordem, começando pelo zero.

Agora com 110880 pixels

Para qualquer imagem em tons de cinza o princípio é o mesmo. Em geral, as imagens captadas por câmeras comuns, e aquelas que circulam na internet são coloridas, e vamos falar delas depois. As imagens mais comuns em tons de cinza têm 8 bits por pixel, isto significa que mostram 256 níveis de cinza, ao invés dos 4 com que trabalhamos acima.

Isto produz um histograma com 256 barras, onde são “empilhados” todos os pixels de mesmo valor, em ordem, começando pelo zero, que é o pixel mais escuro.

Repare que o meu cursor está sobre uma das sementes, e a barra de status mostra que este pixel tem valor 35 (procure pelo círculo azul). No histograma, este valor compõem o primeiro pico do histograma. Como temos uma imagem com mais tons de cinza que a primeira, os objetos não têm uma cor única: cada semente possui nuances provocados pela iluminação e por rugosidades na sua superfície. É por isso que o histograma cresce e decresce suavemente para formar cada pico.

O segundo pico (ou moda) do histograma representa a parte mais clara da imagem – neste caso, o fundo.

As imagens coloridas…

As imagens coloridas possuem 3 bandas (vamos considerar apenas imagens RGB para não complicar), cada uma com 256 tons de cinza. A primeira representa o vermelho, a segunda o verde e a terceira o azul.

No Anima, apresentamos os histogramas das 3 bandas sobrepostas – outros programas usam um gráfico para cada e uns poucos somam os histogramas. Coloquei o cursor sobre uma semente, para que a barra de status mostre os valores de cada banda em um pixel.

Agora, no que a intensidade de cada banda contribui para a cor final da imagem? Para responder isso precisamos falar do espectro eletromagnético e do modelo RGB – isso fica para a próxima!

Créditos

As imagens são minhas, mas tive ajuda da Mônica (3 anos) para montar a simulação de blocos de lego ;) .

5 Comentários para Histogramas de Imagem

  1. Paulo Henrique's Gravatar Paulo Henrique - 30 de novembro de 2010 at 13:12 | Permalink

    Muito ditatica sua explicação. Também trabalho com processamento digital de imagens já algum tempo e acabei encontrando um tópico, aqui em seu site, sobre Ferret muito bom. Meus parabéns pelo site!!!

  2. Paulo C.'s Gravatar Paulo C. - 23 de fevereiro de 2011 at 18:45 | Permalink

    Ótima sua explicação, muito didática!
    Parabéns.

  3. Péricles's Gravatar Péricles - 28 de maio de 2011 at 11:35 | Permalink

    Gabriela, é uma benção encontrar suas explicações aqui na net. Trabalho produzindo conteúdo digital para eventos… Videos, flash, projeções etc etc…
    Minha esposa está finzaliizando o TCC (engenharia de pesca) e me oferecí pra ajudar, que luta!
    O TCC dela baseia-se na comparação da linhagem oriunda de cruzamento de tres espécies do peixe ornamental Guppy. Cobra, german e moscow.
    Fiquei responsável pela fotografia dos filhotes (600) e separei as partes para analise, área de 5 x 4 do rabo, corpo e cabeça.
    O material pra analise já está pronto, agora vem O ANALISAR!!! Preciso obter o seguinte resultado, as proporções de cor de cada parte. Estou estudando o imagej, pois o photoshop que seu uso diariamente não sabe somar…rs Vi que o imagej faz esse tipo de análise, mas não consegui me encontrar nele…
    Falando com o orientador dela, ele me falou que o que os alunos fazem é abrir a imagem no Paint, dar um zoom, e contar no olho pixel a pixel.
    É incrível como, dependendo da área, não se tem acesso ou conhecimento técnico para obter resultados por meios automatizados. Mas isso está mudando… tanto é que estou eu aqui a procura de facilitar a vida dos formandos de engenharia de pesca. Desde já agradeço a sua colaboração com seus tutoriais.
    Subi um mateiral para que possa identificar a necessidade do meu pedido com mais clareza.
    http://www.4shared.com/file/GvzaZv4t/Exemplo.html

    Deus te abençôe, e muito obrigado.
    Péricles, Ticiane e Antônio Algusto (nosso filho de 2 anos e meio)

Comente

Você pode usar estas tags e atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>