Processamento de imagens na prática

Tutorial ImageJ: como “medir a cor” dos objetos

Este é mais um tutorial ImageJ que fiz com ideias dos leitores. Não, não vou mudar o nome do blog para BlogdoImageJ… tenho alguns artigos teóricos sendo preparados.

A ideia do tutorial de hoje é preparar terreno e colher alguns dados para falar de reconhecimento de padrões. Vamos começar com a mesma imagem sintética da semana passada, mas desta vez o objetivo é determinar a cor de cada bolinha.

Segmentação

O primeiro passo, o com acontece quase sempre, é a segmentação.  A combinação de threshold com watershed funcionou bem para esta imagem, mas chega ao final com uma imagem binária, o que não é suficiente para medir cor. Mesmo assim, o começamos com aquela solução:

Segmentação da imagem: para saber como fazer, siga o link acima para o post sobre segmentação com watersheds.

Segmentação da imagem: para saber como fazer, siga o link acima para o post sobre segmentação com watersheds.

Agora, combinamos o resultado desta segmentação com a imagem colorida, usando um cálculo de máxima. Explico: numa imagem RGB, o preto tem valor zero nos três canais e o branco tem o valor máximo. Qualquer cor, quando comparada ao preto terá o valor maior no pixel em questão. Desta forma, o que permaneceu preto no whatershed, fica com a cor que tinha antes, e o que ficou branco (as linhas divisórias) será branco na imagem resultado. Isto cria uma imagem colorida, com a mesma segmentação da imagem binária.

Como fazer no ImageJ:

Image Calculator

Image Calculator

  1. Transforme a imagem binária em RGB (porque as duas precisam ter os 3 canais para a operação que se segue). Com a imagem binária em foco, vá em Image –> Type –> RGB Color.
  2. Com a imagem que você acabou de converter e a imagem colorida abertas, chame o Image Calculator: Process –> Image Calculator…
  3. Complete como na imagem ao lado, com as duas imagens (não importa a ordem) e a operação de máxima (Max). Clique OK.
As duas imagens e o resultado do cálculo de máxima.

As duas imagens e o resultado do cálculo de máxima.

Agora temos os objetos separados, exceto por aquele caso em que dois círculos estão muito sobrepostos.

Medir cor

No computador, cores são representadas por números, por isso podem ser medidas como qualquer outra grandeza. Neste exemplo, estamos medindo objetos em uma imagem RGB, e cada cor é representada por 3 números, um em cada canal de cor (vermelho, verde e azul).

Para selecionar o que o ImageJ deve medir, use o diálogo Set Measurements, do menu Analyse. Selecione Mean Gray Value e Modal Gray Value.

Agora feche todas as imagens, menos a imagem que resultou do cálculo de máxima (é importante para o próximo passo).

O Analisador de partículas não mede imagens RGB, por isso não vai ser possível medir a imagem diretamente. Mas podemos repartir a informação de cor em seus três canais, gerando 3 imagens em tons de cinza. Use Image –> Color –> Split channels… para obter os canais, e Image –> Stacks –> Images to Stack para unir as 3 imagens em uma pilha.

Agora é preciso indicar ao programa, qual parte das nossas imagens é o fundo, e quais são os objetos. Use o Threshold (Image –> Adjust –> Threshold…). Apenas escolha um nível de threshold que deixe o branco de fora (mínimo 0 e máximo 254). Não aplique, nem clique OK.  Apenas deixe o diálogo aí.

Agora abra o analisador de partículas (Analyse –> Analyse Particles…). Marque  Display results e Show Outlines. No OK, aparecerá um aviso sobre analisar toda a pilha (clique OK) – verá os seguintes resultados:

Os autlines dos três canais analisados (em ordem: vermelho, verde e azul).

Os autlines dos três canais analisados (em ordem: vermelho, verde e azul).

Parte da tabela de resultados da análise.

Parte da tabela de resultados da análise.

E agora?

Bom, antes de mais nada, salve os resultados em um formato mais amigável. Infelizmente, o único disponível é o .xls. Salve assim mesmo – vai funcionar no Excel e no BrOffice, certamente.

Semana que vem vamos olhar estes dados de perto e ver o que podemos fazer com eles. Assine o feed, para ser avisado assim que sair.

Para seguir adiante:

E até mais!

18 Comentários para Tutorial ImageJ: como “medir a cor” dos objetos

  1. Wagner's Gravatar Wagner - 9 de agosto de 2009 at 20:43 | Permalink

    Isto poderia ser utilizado para grãos de várias espécies ?

  2. Wagner's Gravatar Wagner - 11 de agosto de 2009 at 17:30 | Permalink

    Eu estou trabalhando na minha dissertação com sementes de mamona, porém a fotografia tirada no laboratório LAQA da UFPB não foi preparada devidamente. Alguns problemas como a aproximadade, brilho intenso do flash da camera entre outros. A idéia é através das cores calcular a porcentagem de grãos das cultavares selecionadas para a pesquisa. O aplicativo ImageJ é muito bom para o processamento entretanto eu estou usando o MatLab aí a coisa muda um pouco de figura e estou com problemas para segmentar a imagem.

  3. Jaqueline's Gravatar Jaqueline - 21 de maio de 2010 at 20:23 | Permalink

    Oi Gabriela, achei teu blog bem legal! Mas estou precisando de um help… Preciso medir a intensidade luminosa de imagens de neurônios… imagino que deve ser da mesma maneira de como medir a cor dos objetos, mas não estou conseguindo reproduzir.

  4. Wanessa's Gravatar Wanessa - 26 de junho de 2010 at 22:20 | Permalink

    Olá Gabriela, estou tentando aplicar o imageJ em fotos tiradas pela técnica da imunohistoquímica, onde eu verifico a marcação de anticorpos específicos no tecido hepático. A marcação é bem difusa, e fica marrom. O núcleo dos hepatócitos fica na cor violeta e a marcação específica fica em marrom geralmente no citoplasma da célula. Teria como eu quantificar essas marcações através desse software? fico no aguardo! grata.

  5. Jenifer's Gravatar Jenifer - 8 de novembro de 2010 at 14:53 | Permalink

    Ola Gabriela,tudo bem?

    Em primeiro lugar parabéns pelo blog, essa sua atitude ajuda muitas pessoas.
    Li um pouco sobre esse programa e achei muito interessante,
    Eu análiso o colágeno e quantifico a coloração verde e vermelha (contando as variações de laranja ate amarelo).
    Abri a minha imagem e Utilizei o Analyse -> Tools -> Color Histogram, e ele gerou um histograma com as cores vermelho, verde e azul. Gostaria de saber se dentro do vermelho esta incluído o amarelo e o laranja; qual é a unidade de medida que ele utiliza para quantificar e se a contagem do azul prejudica minha amostra, sendo que não há tons de azul na imagem. Desculpa por tantas perguntas, mas é que realmente me interessei muito, estou a muito tempo procurando um programa que quantifique essas tonalidades, ja tentei o imagelab mas não serve. Muitissimo Obrigada.

  6. Alex Sandro's Gravatar Alex Sandro - 11 de fevereiro de 2011 at 8:58 | Permalink

    Gabriela, bom dia!

    Faz 24 horas que entrei em contato com o imageJ e estou apanhando com o programa, mas chego lá. Estou gostando bastante. Bom, vamos ao meu problema. Estamos avaliando a pulverização de inseticidas sobre cartões hidrosensíveis comparando dois pulverizadores.

    Basicamente estas avaliações são feitas pulverizando o inseticida (usei água) sobre papel hidrosensível. Este papel é amarelo e a parte que entra em contato com a água fica azul.

    Após as pulverizações, escaneei os cartões em 600 dpi e salvei com a extensão Tiff. Entretanto não consigo efetuar alguns passos do seu tutorial “medir a cor dos objetos”, pois a intenção é relacionar a cor azul (área atingida pela água) com a área amarela (não atingida) e comparar as pulverizações dos dois pulverizadores. Se você puder me ajudar nisto, fico MUITO agradecido.

    Alex

  7. Luciano Duarte's Gravatar Luciano Duarte - 28 de julho de 2011 at 17:00 | Permalink

    Olá Gabriela. Seu comentários são ótimos.
    Trabalho com raspados de células corados com Papanicolaou. Gostaria de saber se é possivel, analisar a cor roxa, de nucleos corados, determinando um padrão normal e pedir ao imagej para marcar tudo o que for roxo mais intenso do que o núcleo que eu nomeei como normal.

  8. alex's Gravatar alex - 18 de outubro de 2011 at 9:28 | Permalink

    Bom dia gabriela, recentemente você me forneceu uma saída para o meu problema. Segue abaixo sua sugestão. Entranto não consigo executa-la. Terial algum tutorial para poder seguir?

    Obrigado

    Alex

    Minha sugestão é a seguinte:
    - Scaneie (esta palavra existe?) também um papel que não foi pulverizado – com um grupo de controle.
    - recorte em todas as imagens somente a área de interesse (a pulverizada)
    - depois separe em canais (não sei se RGB, HSV ou outro sistema) tanto as amostras quanto o controle.
    - então compare cada amostra com a original, usando uma função de subtração ou diferença (tem que testar e ver qual funciona melhor)
    - destas imagens resultado (controle – amostraX) você pode extrair algumas informações estatísticas em cada canal de cor (média, desvio-padrão, por exemplo) dos valores dos pixels. Isto vai ser seu resultado.

  9. Camila's Gravatar Camila - 31 de outubro de 2011 at 19:20 | Permalink

    ola

    gostaria de saber se para quantificar a intensidade da fluorescencia verde olhando pelo histograma a imagem tem que estar em 8 bit ou rgb??? pq os valores ficam bem diferentes quando muda de 8bit para rgb.

    Obrigada

    Camila

  10. Rinaldo's Gravatar Rinaldo - 28 de dezembro de 2011 at 9:46 | Permalink

    Bom dia!!! que legal este blog!!!! Queria saber se é possível trabalhar com esta ferramenta para avaliar imagens de feridas???? Estou pensando em meu trabalho de pós doutorado em Portugal. abraços, Rinaldo.

Trackbacks/Pingbacks

           
  1. [...] Tutorial ImageJ: como “medir a cor” dos objetos [...]

  2. [...] seguiu o tutorial da semana passada, sobre medição da cor dos objetos, salvou uma tabela gerada pelo ImageJ. Eram os resultados da medidas da cores dos objetos em uma [...]

  3.        

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>