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.
PythonA imagem usada pode ser baixada em aqui .
b mais árvore
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:
OriginalPasso 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.
Pythonimg_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show()
Saída:
Depois da erosãoEtapa 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.
Pythonimg_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show()
Saída:
Após dilataçãoAplicativos
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