/ / Como faço para detectar e remover o fundo desfocado de imagem - opencv, processamento de imagem, desfoque, subtração de fundo

Como faço para detectar e remover o fundo desfocado de imagem - opencv, processamento de imagem, desfoque, subtração de fundo

Eu tenho uma imagem com o fundo desfocado. O que eu preciso fazer é remover o fundo desfocado e manter apenas os objetos pontiagudos em primeiro plano. É a sua maneira de fazer isso usando openCV? A imagem será algo parecido com o abaixo. Eu preciso detectar e subtrair o fundo desfocado.

insira a descrição da imagem aqui

Respostas:

3 para resposta № 1

Isto é a priori uma tarefa difícil, porqueáreas (como a camisa) têm a mesma aparência que as borradas (ou seja, baixa atividade gradiente). Pode-se tentar algum método de segmentação e avaliar a força da borda em torno de cada região, mas isso não é simples.

Para a solução de um homem pobre, aqui está o que eu tentei:

  • use um detector de borda e binarize de forma que as áreas de interesse estejam fechadas;

  • realizar análise de componentes conectados e selecionar o maior blob (a área desfocada);

  • Preencha o buraco para obter uma máscara sólida.

insira a descrição da imagem aqui


1 para resposta № 2

Desde que você mencionou nos comentários que você não tem idéia de por onde começar, você poderia começar com um detector de borda simples, que já lhe daria sugestões sobre como resolver o problema:

Canny no limite 100, 200

A partir daí, você deve procurar uma iteração adequada para mapear os pixels dentro as bordas para uma nova imagem.