O algoritmo watershed é uma técnica poderosa de segmentação. Ele inspira-se na topografia e no fluxo da água. Primeiramente, a imagem é interpretada como um relevo tridimensional. A intensidade de cada pixel representa a altitude. Regiões escuras são vales (mínimos locais). Regiões claras, por outro lado, são montanhas (máximos locais). O algoritmo simula a inundação a partir dos vales. A água sobe gradualmente e preenche as bacias de captação. Barreiras são construídas onde bacias diferentes se encontram. Estas barreiras formam as linhas de watershed (divisores de água). Consequentemente, o algoritmo segmenta a imagem em regiões distintas.
funcionamento do algoritmo de inundação
O algoritmo de inundação ocorre em níveis crescentes de intensidade. Primeiramente, identificam-se todos os mínimos locais da imagem. Cada mínimo local torna-se uma “semente” de uma bacia. Em seguida, a água sobe uniformemente a partir destas sementes. Quando águas de bacias diferentes estão prestes a se encontrar, uma barreira é construída. Este processo continua até que toda a imagem seja inundada. As barreiras finais são as linhas de watershed. Por exemplo, o algoritmo separa objetos que se tocam. Células em uma lâmina de microscopia são um caso clássico. O resultado são contornos fechados de um pixel de espessura.
desafios: oversegmentation e uso de marcadores
O watershed sofre com um problema conhecido: oversegmentation. Ruído e texturas criam muitos mínimos locais falsos. Consequentemente, o algoritmo produz centenas de pequenas regiões indesejadas. Uma solução eficaz é o uso de marcadores (markers). Primeiramente, o usuário ou um pré-processamento identifica os objetos de interesse. Estes objetos tornam-se os únicos mínimos permitidos. Por exemplo, pode-se usar a abertura morfológica para remover ruídos. Em seguida, o algoritmo watershed roda apenas com estes marcadores. O resultado elimina a oversegmentation e segmenta apenas os objetos desejados. Portanto, marcadores são essenciais para aplicações práticas.
quando utilizar o algoritmo watershed
Utilize o watershed quando precisar separar objetos que se tocam. Por exemplo, células em imagens biológicas ou bolhas em líquidos. Outra aplicação é na segmentação de relevos em imagens de satélite. O algoritmo também é útil para extrair contornos de objetos irregulares. Contudo, evite o watershed em imagens muito ruidosas sem pré-processamento. A oversegmentation torna o resultado inútil sem o uso de marcadores. Combine o watershed com operadores morfológicos para melhores resultados. Por exemplo, use a abertura para remover ruídos e o fechamento para conectar regiões. Além disso, o gradiente morfológico da imagem é frequentemente usado como entrada. Em resumo, escolha o watershed quando a topografia da imagem for relevante e os objetos se tocarem.