Estou tentando criar um programa que pode contar o número de núcleos em uma imagem:
O que eu já fiz é o seguinte, passo a passo:
- Aplique um filtro sequencial alternado (fechando e abrindo a imagem com elementos estruturantes gradualmente maiores)
- Aplicar uma transformação de distância
- Aplique a segmentação de bacias hidrográficas usando a imagem transformada à distância para detectar mínimos
Que produz o seguinte resultado (em que cada cor representa um novo núcleo contado):
Como podemos ver, existem muitas imperfeições, especificamente, núcleos supercontados. Eu diria que a razão para esse problema é a maneira como impus mínimos para a Watershed Transform (usando a transformação de distância), mas realmente não tenho outras idéias para impor mínimos nesse caso.
Como a transformação de distância gera mínimos com base na redondeza dos objetos, eu gostaria de saber uma alternativa melhor para arredondar os núcleos do que o filtro sequencial alternado (olhando a imagem acima, podemos inferir que a maioria das "sobrecontas" veio de núcleos menos arredondados). Eu também gostaria de conhecer maneiras melhores de impor mínimos para a Watershed Transform.