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!

7 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.

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>