detecção de defeitos opencv

 

  • Com a popularização dos equipamentos de produção automatizados, os robôs industriais são cada vez mais utilizados em diversas indústrias. Cada vez mais linhas de produção são substituídas por equipamentos automatizados para operações manuais para alcançar a produção automatizada. Durante o processo de classificação do robô, o robô pode não apenas colocar com precisão produtos de diferentes especificações e qualidade em paletes designados, mas também identificar e classificar defeitos superficiais de objetos por meio do sistema de visão. Com o advento da era da Indústria 4.0, a tecnologia tradicional de inspeção visual não pode mais atender aos requisitos da produção industrial moderna, e a tecnologia de inspeção visual tornou-se uma parte indispensável da produção industrial moderna. Em sistemas de visão artificial, a detecção de defeitos é um elo muito importante. Em sistemas de visão artificial, a detecção de defeitos refere-se à extração, segmentação, identificação e rastreamento automático de objetos alvo após o processamento automático das imagens coletadas por meio de um determinado algoritmo durante o processo de coleta de imagens. Após obter as informações do objeto alvo após o processamento por meio desses algoritmos, os defeitos no objeto alvo são automaticamente identificados e marcados. Na produção industrial, a detecção de defeitos é dividida principalmente nas seguintes categorias:

    • 1. Segmentação de imagens

      A segmentação de imagens consiste em separar cada parte da imagem do todo, para que a imagem se torne uma unidade significativa com limites claros. Dependendo dos objetos de segmentação, a imagem pode ser segmentada em diversas regiões. A segmentação de imagens é uma tarefa básica em sistemas de visão artificial e inclui principalmente métodos como morfologia, detecção de bordas, crescimento de região e segmentação de limiar. Os operadores morfológicos podem gerar limites diretamente, o que é conveniente e fácil de operar; a detecção de bordas pode obter informações de bordas, que são adequadas para posicionamento; os métodos de crescimento de região e segmentação de limiar podem obter as informações de diferença entre o alvo e o fundo na mesma imagem, e obter limites de alvo mais precisos. Embora existam muitos métodos de segmentação de imagens, todos esses métodos têm uma característica comum: são insensíveis ao ruído. Para suprimir o ruído, as pessoas costumam usar uma série de algoritmos. Por exemplo: operações de abertura e operações de fechamento comumente usadas em morfologia matemática; métodos baseados na detecção de bordas, como o operador Canny; métodos baseados na seleção de limiares; métodos baseados no crescimento de regiões, etc. Embora esses métodos obtenham bons resultados, eles são computacionalmente intensivos devido à necessidade de selecionar manualmente os limites. As tecnologias de segmentação de imagem atualmente populares incluem: com base na combinação de informações em tons de cinza de pixels e algoritmos de detecção de bordas, com base em algoritmos de crescimento de região, com base em morfologia matemática combinada com algoritmos de crescimento de região, com base na combinação de operadores morfológicos e algoritmos de seleção de limiar, etc.

      • 1. Com base na combinação de informações em tons de cinza de pixels e algoritmo de detecção de bordas

        Este método combina a detecção de bordas com a morfologia da escala de cinza para obter o reconhecimento do alvo sem conhecer o fundo do alvo. A ideia básica é usar operadores de detecção de borda no processamento de imagem digital para processar a imagem original e obter informações de recursos locais relacionadas à borda e, em seguida, usar essas informações de recursos para obter o reconhecimento do alvo. O operador Canny é atualmente o melhor e mais utilizado operador de detecção de bordas. Ele considera pixels como unidade, usa informações de gradiente de cinza e pode detectar informações de borda com mais precisão. A vantagem do operador Canny é que ele pode extrair informações de borda com precisão e é insensível ao ruído. A desvantagem é que ele é computacionalmente intensivo e demorado. A fim de superar as deficiências do operador Canny, os pesquisadores propuseram vários algoritmos aprimorados. Por exemplo: (1) Transformada de Hough (H): H não pode extrair arestas, mas pode obter as informações de diferença entre o alvo e o fundo. (2) Método bimodal: o ruído pode ser removido, mas a informação entre o alvo e o fundo será perdida. (3) Método do gradiente: a análise da amplitude e direção do gradiente pode extrair melhor as bordas. (4) Método multiescala: pode combinar informações de múltiplas escalas para considerar o problema, detectando assim as informações da borda do alvo com mais precisão.

      • 2. Baseado na combinação de morfologia matemática e algoritmo de crescimento de região

        A morfologia matemática é uma ferramenta matemática para análise de imagens, transformando elementos estruturais da imagem, o que pode efetivamente eliminar ruídos e destacar objetos. O algoritmo de crescimento de região é um método de segmentação baseado em região, que é uma forma eficaz de aplicar o método de crescimento de região à segmentação de imagens. Atualmente, existem muitas pesquisas sobre a aplicação de algoritmos de crescimento de região no país e no exterior.Por exemplo, Zhang Junhong e outros combinam morfologia matemática com crescimento de região, usam operações de erosão morfológica para aprimorar o alvo e, em seguida, realizam o crescimento de região no aprimorado image. e finalmente obter o resultado da segmentação. Os resultados obtidos com este método apresentam as vantagens de bordas nítidas, sem interferência de ruído e posicionamento preciso. No entanto, este método também tem algumas deficiências: o algoritmo de crescimento da região requer a determinação manual de pontos iniciais e limiares durante o processo de segmentação da imagem e só pode segmentar elementos estruturais simples, mas não pode segmentar elementos estruturais complexos.

    • 2. Extração de recursos

      A extração de recursos de imagem consiste em extrair os dados de recursos da imagem como dados de entrada para processamento subsequente. Normalmente, os recursos de imagem incluem o seguinte: (1) Recursos em escala de cinza: as informações em escala de cinza são um dos recursos mais importantes na visão mecânica e têm uma ampla gama de aplicações no processamento de imagens. As informações em escala de cinza referem-se às informações de alteração dos valores dos pixels na imagem conforme a posição muda, como brilho e contraste. Como as informações em escala de cinza podem ser descritas independentemente de fatores como formato, tamanho, condições de iluminação e fundo do objeto, elas também são um recurso muito importante na visão mecânica. (2) Recursos de detecção de bordas: A detecção de bordas é um conteúdo de pesquisa muito importante em visão de máquina. Quando um objeto é colocado em uma câmera óptica e fotografado, ele pode armazenar as informações da superfície do objeto no sensor óptico de imagem e, em seguida, extrair as informações da superfície do objeto na imagem por meio de um algoritmo de detecção de borda. Os algoritmos de detecção de borda comumente usados ​​​​incluem: algoritmo de detecção de borda Canny, algoritmo de detecção de borda de transformação Hough, algoritmo de detecção de borda de transformação Hough. (3) Características de textura: Textura é um tipo de informação que descreve a relação entre diferentes objetos em uma imagem, incluindo vários atributos característicos da superfície do objeto, como rugosidade, escala de cinza e distribuição espacial. Para um tipo específico de objeto ou superfície, deve haver um tipo específico de informação de textura. Os recursos de textura comuns incluem: matriz de coocorrência de nível de cinza, histograma, histograma de nível de cinza, etc. (4) As características geométricas referem-se a características relacionadas ou descritas por formas. Com base nessas características, os objetos podem ser divididos em diferentes tipos: linhas, cilindros, cubóides, cubóides, etc. As características geométricas são geralmente usadas para descrever a forma da superfície dos objetos, como circularidade, retilineidade, redondeza, proporção de aspecto, etc. (5) Características da cor: A cor é uma forma de descrever a relação entre as informações de cor na superfície de um objeto e suas características. Por exemplo, para objetos de cores diferentes, eles possuem propriedades diferentes, como refletividade e transmitância. Portanto, podemos usar cores para detecção de defeitos. As características de cores comuns são: RGB (vermelho, verde e azul), CMYK (branco) e YCbCr (amarelo), etc. (6) Recursos de textura: Textura refere-se a tipos específicos ou informações de recursos na superfície de um objeto. Por exemplo, quando um objeto é um círculo, ele pode ter dois tipos ou propriedades características diferentes: circular e não circular. Portanto, ao utilizar recursos de textura para detecção de defeitos, é possível identificar com mais precisão se o objeto alvo possui defeitos.

    • 3. Identificação de defeitos

      O reconhecimento de defeitos é um método de identificação automática de defeitos. A ideia básica é que quando um objeto alvo tem um defeito, ele emitirá um determinado sinal. Quando esse sinal atingir uma certa proporção com o sinal de fundo circundante, o objeto alvo será encontrado para existe. defeito. Durante o processo de produção, os robôs industriais podem identificar e marcar automaticamente defeitos em objetos alvo através de sistemas de inspeção visual. Com a melhoria dos níveis de produção industrial, este método tem sido gradualmente aplicado a outras indústrias. Na indústria de semicondutores, por exemplo, quando existe um defeito num chip, os trabalhadores utilizam dispositivos portáteis ou robôs para separar o chip do substrato.

A seguir estão vários exemplos de código de detecção de defeitos OpenCV comumente usados:

1. Detecção de borda:
```python
import cv2
# Ler imagem
img = cv2.imread('image.jpg')
# Tons de cinza
cinza = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detecção de
borda bordas = cv2. Canny(cinza , 50, 150)
# Exibe os resultados
cv2.imshow('Edges', Edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
````
2. Detecção de contorno:
```python
import cv2
# Leia a imagem
img = cv2.imread('image.jpg')
# Grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detecção de
bordas bordas = cv2.Canny(gray, 50, 150)
# Contornos de detecção de contorno
, hierarquia = cv2.findContours (arestas, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# Desenhar contornos
cv2.drawContours(img, contornos, -1, (0, 0, 255), 2)
# Exibe os resultados
cv2.imshow('Contours', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
````
3. Detecção de linha:
```python
import cv2
import numpy as np
# Ler imagem
img = cv2.imread('image.jpg')
# Escala de cinza
cinza = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detecção de borda
bordas = cv2 .Canny(gray, 50, 150)
#
Linhas de detecção de linha = cv2.HoughLines(edges, 1, np.pi/180, 200)
# Desenha linhas retas
para linha em linhas:
rho, theta = line[0]
a = np .cos(teta)
b = np.sin(teta)
x0 = a * rho
y0 = b * rho
x1 = int(x0 + 1000 * (-b))
y1 = int(y0 + 1000 * (a))
x2 = int(x0 - 1000 * (-b))
y2 = int(y0 - 1000 * (a))
cv2.line(img, (x1, y1), ( x2, y2), (0, 0, 255), 2)
# Exibe os resultados
cv2.imshow('Lines', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
````
Esses exemplos de código podem ser usados para tarefas comuns de detecção de defeitos, mas aplicações específicas precisam ser ajustadas e otimizadas de acordo com as condições reais.

Acho que você gosta

Origin blog.csdn.net/qq_42751978/article/details/130809255
Recomendado
Clasificación