Histograma

10 07 2006
Um professor da Unifesp (Escola Paulista de Medicina), o Augusto Paranhos, que está orientando um trabalho no qual eu participo lá, me mandou um e-mail perguntando se eu conhecia um programa para calcular uma área em uma imagem em escala de cinza. Provavelmente ele está analisando imagens de diagnóstico médico. Bom, como eu disse a ele, não conheço nenhum programa que faça especificamente isto, mas respondi a ele falando de um jeito de fazer isto usando histogramas de imagens, e acho que pode ser interessante para alguém, então vou postar aqui. Um histograma (representação gráfica em barras), em análise de imagens é um gráfico de intensidade da cor no x, e proporção em que ela aparece no y. Ele te dá uma tabela do tipo:
Cor 0 (preto)              10 %
Cor 1 (quase preto)        15 %
...
Cor 255 (branco)            6 %
Muitas máquinas digitais hoje em dia mostram histogramas em tempo real para ajudar a tirar boas fotos. Aqui há uma boa página sobre isso. Existe um pacote de ferramentas de linha de comando que pode ser usado para gerar um histograma de imagens. Chama-se ImageMagick pode ser encontrado aqui: http://www.imagemagick.org/script/binary-releases.php O ImageMagick na verdade faz muito mais coisas, mas vou mostrar só isto por hoje, talvez outro dia eu escreva sobre como usá-lo para redimensionar imagens ou fazer coisas mais legais.
Nosso exemplo Uma imagem médica para servir de exemplo
Bom, mão na massa, em um diretório com uma figura chamada xra1.jpg, faça:
convert xra1.jpg histogram:xra1.hist
Este comando vai fazer aparecer no seu diretório um arquivo .hist que pode ser visualizado com o comando display FIGURA.hist, ou imdisplay FIGURA.hist. Você vai poder ver um histograma da sua imagem ali. O chato disso é quando alguma figura tem muitos pixels de uma cor só, como é o caso da nossa figura de exemplo (toda a borda preta). Felizamente, como cabeçalho do arquivo .hist existe um pedaço de texto com informações numéricas. Abra-o com um editor de texto (bloco de notas, por exemplo) e identifique a parte com várias linhas com o seguinte formato:
quantidade de pixels: ( R, G, B) nome da cor
Por exemplo:
     31101: (  0,  0,  0)       black
        16: (  1,  1,  1)       #010101
        16: (  2,  2,  2)       #020202
        12: (  3,  3,  3)       grey1
Copie esta parte em um novo arquivo de texto, e salve-o com a extensão .csv. Importe-o com o seu programa de planilha favorito - o Excel permite fazer isto, e o Open Office SpreadSheet também. Com os dados tabelados, vira mamão com açucar fazer algo como isto (note que o eixo y está com escala logarítmica para o gráfico ficar mais legível):
Nosso Histograma! Nosso histograma
Reparem como existe uma barra bem alta do lado esquerdo: esta é a orda preta. A escala logarítmica faz com que o resto do gráfico não fique tão achatado, e mostra que temos mais tons de cinza intermediários do que cinzas claros. Se tivessemos marcado uma área de branco e pintado o resto de vermelho, poderiamos usar a informação do número de pixels brancos sobre o número de pixels total para saber a proporção da área marcada sobre a área total da foto, e desta forma, talvez, medir a área de um tumor, ou algo do tipo!


Trackbacks


Nenhum Trackbacks

Comentários

Exibir comentários como (Seqüencial | Discussão)
Nenhum cmentários

Adicionar Comentários


Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

BBCode format allowed
Standard emoticons like :-) and ;-) are converted to images.




Page delivered in 0.243874 seconds, 94 files included