logo

Erosão e dilatação de imagens usando OpenCV em Python

As operações morfológicas modificam as imagens com base na estrutura e disposição dos pixels. Eles aplicam o kernel a uma imagem de entrada para alterar suas características dependendo da disposição dos pixels vizinhos. Operações morfológicas como erosão e dilatação são técnicas de processamento de imagens, especialmente para imagens binárias ou em tons de cinza. Eles ajudam na análise de formas, limpando ruídos e refinando os limites dos objetos.

Erosão

A erosão no processamento de imagens é uma operação morfológica que reduz e afina os limites dos objetos em uma imagem, removendo pixels nas bordas dos objetos, tornando-os efetivamente menores e removendo pequenos ruídos brancos.

Propósito

  • Reduz ou desgasta os limites dos objetos em primeiro plano (geralmente pixels brancos).
  • Remove ruído branco fino e separa objetos que estão em contato.

Como funciona

  • Um kernel (geralmente uma matriz 3×3 5×5 ou 7×7) desliza pela imagem.
  • Um pixel permanece branco (1) somente se todos os pixels abaixo do kernel forem brancos; caso contrário, fica preto (0).
  • Este processo reduz o tamanho do objeto e corrói as bordas.

Dilatação

A dilatação é uma operação morfológica que expande os limites dos objetos em uma imagem adicionando pixels às bordas do objeto, fazendo com que os objetos pareçam maiores e preenchendo pequenas lacunas ou buracos.



contatos bloqueados

Propósito:

  • Expande os limites dos objetos em primeiro plano.
  • Acentua ou amplia recursos e preenche pequenas lacunas.

Como funciona:

  • O kernel é similarmente convolvido sobre a imagem.
  • Um pixel é definido como branco (1) se  pelo menos um  dos pixels correspondentes sob o kernel é branco.
  • Como resultado, as regiões brancas crescem fundindo pequenos buracos ou unindo peças quebradas.

Implementação de Erosão e Dilatação

Vamos implementar erosão e dilatação com OpenCV em Python

Etapa 1: importar bibliotecas

Importaremos as bibliotecas necessárias

  • cv2 : Biblioteca OpenCV para processamento de imagens.
  • entorpecido : Para operações numéricas e para criar kernels.
  • matplotlib.pyplot : Para exibir imagens em cadernos.

Etapa 2: Carregar a imagem de entrada e definir os elementos estruturantes (Kernel)

O kernel define a vizinhança da operação. As escolhas comuns são retângulos ou discos.

A imagem usada pode ser baixada em aqui .

b mais árvore
Python
img = cv2.imread('input.webp' 0) plt.imshow(img cmap='gray') plt.title('Original Image') plt.axis('off') plt.show() kernel = np.ones((5 5) np.uint8) 

Saída:

gato original' title=Original

Passo 3: Aplicar Erosão

A erosão funciona deslizando o kernel pela imagem. Um pixel permanece branco (255) somente se todos os pixels sob o núcleo forem brancos, caso contrário, ele se tornará preto (0). Isto reduz os limites do objeto e remove pequenos ruídos brancos.

Python
img_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show() 

Saída:

erosão' loading='lazy' title=Depois da erosão

Etapa 4: aplicar dilatação

A dilatação desliza o núcleo pela imagem e um pixel torna-se branco se pelo menos um pixel abaixo do núcleo for branco. Isso engrossa regiões ou objetos brancos e preenche pequenos buracos.

Python
img_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show() 

Saída:

dilatação' loading='lazy' title=Após dilatação

Aplicativos

Erosão

  • Removendo ruído branco isolado de uma imagem.
  • Separar objetos unidos ou em contato.
  • Encontrar limites de objetos diminuindo o tamanho do objeto.

Dilatação

  • Preencher pequenos buracos ou lacunas em objetos.
  • Unir partes quebradas ou desconectadas do mesmo objeto.
  • Usado após a erosão (como parte da operação de 'abertura') para restaurar o tamanho do objeto enquanto mantém o ruído removido.

A erosão e a dilatação são operações morfológicas fundamentais no processamento de imagens que nos permitem refinar, limpar e manipular formas dentro das imagens. Ao usar elementos estruturantes simples, essas técnicas ajudam a remover o ruído, separar ou conectar objetos e aprimorar os recursos da imagem, tornando-as ferramentas essenciais para pré-processamento e análise eficazes em tarefas de visão computacional com OpenCV e Python.

Criar questionário