Dizem que o ano só começa mesmo depois do carnaval… então vamos começar o ano! Hoje estou mais para tutorial, então vou usar um exemplo e vamos ver como funciona o algoritmo de crescimento de regiões implementado no Fiji, por Johannes Schindelin.
Uma imagem legal…

Se quiser acompanhar o tutorial, obtenha a imagem no tamanho original.
O objetivo será separar as folhas do fundo. Dificultam a segmentação aqui a irregularidade na iluminação do primeiro plano e as cores do fundo. Quem tentar com threshold simples vai descobrir que não é possível manter todas as folhas e retirar todo o fundo ao mesmo tempo.
Vamos tentar com crescimento de regiões.
Já falei do Fiji?
Como eles dizem: “Fiji is just ImageJ, batteries included.”
É como se fosse uma distribuição diferente do ImageJ, que já vem com vários plugins e tem uma documentação própria.
Download em: http://pacific.mpi-cbg.de/wiki/index.php/Downloads
Para quem tem Ubuntu, use um dos links na sessão “Package for Debian/ Ubuntu”. Eu usei o de 64 bits e está funcionando bem.
Crescimento de Regiões
Crescimento de regiões, ou Region Growing, ou ainda Region Merging é um método de segmentação para imagens em tons de cinza (uma banda), que usa a variação da intensidade dos pixels e a proximidade geométrica entre eles para produzir regiões.
Ele começa em um ponto (usualmente no canto superior esquerdo) e vai “expandindo” pixel a pixel. Se unir o próximo aos já computados não modificar a média mais de um certo valor, então ele é incluído na região. Se a média mudas mais que o fixado, ele será o início de uma nova região. Algumas implementações deixam o usuário escolher este valor. A implementação usada no Fiji deixa o usuário escolher um fator de complexidade, que é usado para calcular esta diferença.
Como o projeto é de código aberto, quem tiver curiosidade pode dar uma espiadinha nele neste link.
O exemplo
Primeiro precisamos que a nossa imagem seja de uma só banda. Podemos fazer isso apenas convertendo para 8 bits ou escolhendo a banda de maior contraste. Na minha experiencia a segunda opção sempre traz vantagens, mas vamos ver aqui…

Alternativas para conversão em tons de cinza: convertido para 8bits; banda R; banda G; banda B.
A imagem em que as folhas estão mais escuras e o fundo mais claro é a banda G (verde). É com essa que eu fico.
Agora o Crescimento de Regiões: mantenha apentas a imagem escolhida aberta, para evitar confusão. No menu Plugins –> Segmentation –> Statistical Region Merging. Aparecerá um diálogo que permite escolher o valor “Q” (é o valor de complexidade de que falei antes) e a optar por “Show averages” (mostrar médias) que influencia na maneira que você vai ver o resultado – eu prefiro deixar marcado.
Quanto ao valor de Q, o default é 25, e vou tentar primeiro com este. Ele gerou mais regiões do que eu gostaria, por isso vou tentar alguns mais baixos (mais tarde vamos comparar o resultado final). Minhas outras tentativas foram 15 e 5.

Imagem após crescimento de regiões: Q = 25; Q = 15; Q = 5.
Para o resultado final ainda precisamos de um último passo: o velho threshold:

Comparação dos resultados: mesma ordem da ilustração anterior.

Imagem segmentada diretamente por threshold.
Repare no canto superior esquerdo da primeira imagem: ainda temos um pouco de fundo. Há poucas deferenças entre a segunda (Q = 15) e a terceira (Q = 5), mas a última incluiu um pouco de fundo entre algumas folhas próximas. Mas a tentativa de segmentar diretamente por threshold não chegou nem perto da primeira…
Só para terminar com uma imagem bonita, vou usar o Image Calculator (Operação transparent-zero) entre a imagem segmentada e a original.

Só as folhas...
Créditos
Imagem de Marufish.
O algoritmo de crescimento de regiões implementado no Fiji está descrito em: R. Nock, F. Nielsen: Statistical Region Merging. IEEE Trans. Pattern Anal. Mach. Intell. 26(11): 1452-1458 (2004).



Me corrija se estiver enganado…. Se na foto original tivesse uma medida de referência, como por exemplo uma régua, escala. Seria possível calcular área foliar total, destas folhas que foram enquadradas na foto?
Bom, nem tão simples…
Se as folhas estivessem todas no mesmo plano, e esta régua também, seria possível.
A distância entre a coisa fotografada e a lente da câmera é o que determina a escala. Por isso, sempre que precisar medir algo, tenha a certeza de que a sua escala e o(s) objeto(s) medido(s) estão no mesmo plano.