Processamento de imagens na prática

Tutorial ImageJ – agrupando imagens em pilhas.

Hoje quero trazer uma ferramenta do ImageJ que eu considero muito útil, mas sei que é pouco conhecida e utilizada. É possível reunir imagens em grupos (que o ImageJ chama de Stack, palavra inglesa para pilha), tanto para trabalhar nelas em lote, como para mantê-las juntas e em ordem.

Para mim, este recurso tem se mostrado útil em suas situações:

1. Quando uso várias ferramentas para resolver um problema e quero guardar todos os passos (imagens intermediárias que gerei) para poder documentar o processo depois. Este será o exemplo do post.

2. Para processar um grupo de imagens de uma só vez, economizando tempo e clicks (a tendinite eminente agradece). É o chamado processamento em lote.

O que é uma stack

Uma stack é um conjunto de imagens do mesmo tipo e tamanho. Tipo de imagem significa: RGB, 8-bit Tons de Cinza, 8-bit Paleta de Cor, binária, etc. O exemplo a seguir dá a impressão de que eu misturei os tipos, mas na verdade o que fiz foi me adaptar à regra: transformei tudo em RGB depois do processamento.

Exemplo de uso de stack para documentação de experimento


Imagem de *L*u*z*a*.

Esta imagem original foi obtida no Flickr. E meu objetivo foi identificar os contornos dos lápis, usando algumas ferramentas de detecção de bordas. Para isso, precisei de 8 passos. OK, o resultado não ficou perfeito, mas serve para ilustrar.

1o. passo: Suavização. Suavisar as linhas da imagem com um filtro ajuda a diminuir a influência da textura na detecção de bordas. Fiz isso com o comando Smooth, do menu Process.

2o. passo: Detecção de bordas sobre a imagem colorida suavizada. A função Find Edges do menu Process, aplica um filtro Sobel para a detecção de bordas.

3o. passo: Descartar a informação de cor. Simplesmente converti a imagem em tons de cinza, usando o canal do brilho. Menu Image -> Type -> 8-bit.

4o. passo: Outra suavização. Na imagem do canto superior direito pode-se observar que, além das bordas, aparecem outros pontos e linhas, provenientes da textura que a primeira suavização amenizou, mas não eliminou completamente, por isso passei o filtro mais uma vez.

5o. passo: Realce das bordas. Um filtro de realce pode ser encontrado em Process -> Sharpen. É uma tentativa de melhorar as bordas para o passo seguinte.

6o. passo: Threshold. O link traz os detalhes deste método. Aqui só é necessário dizer que ele segmenta a imagem de acordo com o nível de cinza que eu escolhi, produzindo uma imagem binária que contém o fundo (branco) e as bordas (pretas).

7o. passo: Abertura e Fechamento. Estas duas operações morfológicas são usadas com freqüência para retirar o ruído (pontinhos dispersos) após uma operação de segmentação ou detecção de bordas. Ficam no menu Process -> Binary, e se chamam Open e Close.


Montagem da sequência de imagens produzida no experimento.

A cada passo, dupliquei a imagem para manter o histórico do que fiz. No passo 3 obtive uma imagem em Tons de Cinza que não poderia ser colocada no mesmo stack, com as outras. Resolvi isso convertendo a imagem para RGB (menu Image -> Type -> RGB Color). Isso não altera a aparência da imagem, apenas faz com que o programa gere uma imagem de 3 canais exatamente iguais.

Algumas operações (as dos passos 6 e 7) exigiam uma imagem em tons de cinza. Nestes casos, converti a imagem como no passo 3, fiz a operação e transformei o resultado em RGB, como descrito no parágrafo anterior.

Com isso, terminei com 8 imagens espalhadas pelo meu desktop.

Como criar uma stack

Como todas as imagem que estão abertas têm o mesmo tipo e tamanho, é só ir em Image -> Stacks -> Image to Stacks. Pronto! Imagens empilhadas na ordem em que foram geradas. Se as suas imagens não forem do mesmo tipo e/ou tamanho você receberá uma mensagem de erro. Também não espere que o ImageJ vai adivinhar quais imagens você quer empilhar, ele empilha todas as que estiverem abertas.

Você pode salvar a pilha em TIFF, e manter toda a sua documentação num arquivo só, sem perder nenhuma informação.

Montagem

Para obter a imagem de toda a seqüencia, como fiz para exibir aqui, vá em Image -> Stacks -> Make Montage…. Isto abre uma janela com algumas opções como quantas linhas e colunas, moldura, etc. Usei uma moldura de 2 pixels no exemplo.

Na próxima semana teremos um tutorial sobre processamento em lotes no ImageJ. Para não perder, assine o RSS feed do ImageSurvey!

2 Comentários para Tutorial ImageJ – agrupando imagens em pilhas.

  1. Hugo Torres's Gravatar Hugo Torres - 12 de fevereiro de 2009 at 11:53 | Permalink

    Excelente tutorial! Obrigado!

Trackbacks/Pingbacks

           
  1. [...] etc.), um bom conjunto de filtros, entre muitos outros recursos. Ele também trabalha com layers, stacks e [...]

  2. [...] Agrupando imagens em pilhas [...]

  3. [...] 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. [...]

  4.        

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>