Método de corrección de la inclinación del instrumento puntero basado en el aprendizaje profundo: interpretación del artículo

Título de tesis china: Un método para la corrección de la inclinación de instrumentos de puntero basado en el aprendizaje profundo

Título de tesis en inglés: Método de corrección de inclinación del medidor de puntero basado en aprendizaje profundo

Zhou Dengke, Yang Ying, Zhu Jie, Wang Ku. Un método de corrección de la inclinación del instrumento puntero basado en el aprendizaje profundo [J]. Journal of Computer-Aided Design and Graphics, 2020, 32(12):9.DOI:10.3724/SP. J.1089.2020.18288.

1. Resumen:

       Con el objetivo de corregir los errores de lectura causados ​​por medidores inclinados en el reconocimiento automático de imágenes de medidores, se propone un método rápido de corrección de inclinación para medidores de puntero circular basado en el aprendizaje profundo, que puede realizar la corrección de inclinación y rotación de imágenes de medidores. Red neuronal para extraer El número de escala de dial es el punto clave en el centro y se utiliza el método de mínimos cuadrados para ajustar el punto clave a la elipse .

        Combinado con la teoría de la transformación de elipse, utilice la transformación de perspectiva para realizar la primera corrección de inclinación en la imagen del instrumento y luego calcule el ángulo de rotación del instrumento en relación con la dirección horizontal de acuerdo con un par de puntos clave simétricos con respecto al eje central vertical de el instrumento y utilice el centro geométrico de la elipse de ajuste como rotación. El centro gira la imagen del medidor para una segunda corrección .

        El rendimiento del método se verifica mediante la recopilación de datos de imágenes en el entorno real de la subestación. Los resultados experimentales muestran que el método es más robusto que el método tradicional. El error relativo promedio de las lecturas de imágenes del instrumento se reduce al 3,99%. , y el error de referencia promedio se reduce al 0,91%, lo que muestra plenamente la eficacia del método de corrección. 

        Apuntando a los problemas de que los métodos de corrección de inclinación existentes de los medidores de puntero no pueden realizar la corrección de inclinación y la corrección de rotación del medidor al mismo tiempo, y el proceso de corrección es lento y el efecto es pobre, este artículo propone un método para la corrección de inclinación de Medidores de puntero basados ​​en aprendizaje profundo. .

2. Proceso de detección de algoritmos

El método se divide en 2 partes:

        Extracción de puntos clave del dial y calibración del instrumento En la extracción de puntos clave del instrumento, se utiliza el algoritmo de aprendizaje profundo de extremo a extremo YOLOv3 para extraer las coordenadas de los puntos clave en el dial centrado en el número de escala . (Puede encontrar el diagrama del instrumento en Internet para entrenar usted mismo, y hasta ahora no se han encontrado el código y los datos revelados por el autor)

Hay mucha información en Internet sobre el método de detección de puntos clave, por lo que no explicaré demasiado aquí.

Por ejemplo, el siguiente enlace de referencia proporciona el método de capacitación y el proceso de detección de puntos clave faciales.

También se proporcionan códigos y conjuntos de datos detallados.

Detección de rostros y puntos clave: YOLO5Face combate real

        La corrección del instrumento se divide en corrección de inclinación y corrección de rotación: primero, calcule la matriz de transformación de perspectiva de acuerdo con las coordenadas de puntos clave extraídas y luego realice la transformación de perspectiva para realizar la primera corrección de inclinación del instrumento: luego, de acuerdo con un par en la imagen que es simétrico al eje central vertical del dial Gire la imagen en los puntos clave para realizar la segunda corrección de rotación del instrumento. La figura muestra el diagrama de marco de la corrección de inclinación de la imagen del instrumento en este documento.

3. Efecto de detección y verificación.

         Finalmente, para verificar que el método de calibración en este artículo tiene mejor estabilidad y efectividad en comparación con el método de calibración de instrumentos tradicional [12,13], se seleccionaron 10 imágenes de instrumentos inclinados recopiladas en el entorno real de la subestación para la calibración experimental. El efecto de la imagen corregida es el siguiente: Como se muestra en la Figura 12, la eficiencia y el tiempo de corrección se muestran en la Tabla 3: las estadísticas de la eficiencia consideran que la imagen corregida tiene una mejora a mayor escala en comparación con la imagen original y puede usarse para instrumentos. lectura, y la corrección se considera efectiva. Como se muestra en la Figura 12, si algunas imágenes sufren una transformación de perspectiva y tienen una deformación mayor que la imagen original , la corrección se considera inválida, como las últimas 7 imágenes que se muestran en la Figura 12b y las últimas 5 imágenes que se muestran en la Figura 12c.

Cuarto.Conclusión

        La corrección de la inclinación de la imagen del puntero del medidor es una tarea importante en la investigación del reconocimiento de lecturas del medidor. En vista del hecho de que el método tradicional de corrección de imagen es difícil de cumplir con la tarea de calibración del medidor en un entorno complejo, este artículo propone una Método de corrección de inclinación del medidor de puntero basado en aprendizaje profundo. El método utiliza una red neuronal convolucional profunda para extraer los puntos clave en el dial centrado en el número de escala, y luego realiza la corrección de inclinación y rotación de la imagen del instrumento al mismo tiempo de acuerdo con a la información del punto clave. Los resultados experimentales muestran que, en comparación con el método de corrección tradicional, el método de corrección en este artículo puede obtener un mejor efecto de calibración del instrumento y la precisión de las lecturas puede mejorarse identificando la imagen corregida del instrumento. Las imágenes recopiladas en subestaciones y entornos industriales aparecerán en varias inclinaciones y luego identificarán el instrumento después de la corrección de la inclinación mediante el método descrito en este documento. La imagen mejora la precisión de la lectura y tiene valor práctico.

5. Expansión, método de corrección de inclinación del instrumento basado en funciones SIFT (código opencv python)

import numpy as np
import cv2
from matplotlib import pyplot as plt
#参考链接
#https://www.javaroad.cn/questions/347518#toolbar-title

# FIXME: doesn't work
def deskew():
    im_out = cv2.warpPerspective(img1, M, (img2.shape[1], img2.shape[0]))
    plt.imshow(im_out, 'gray')
    plt.show()


# resizing images to improve speed
factor = 0.4
img1 = cv2.resize(cv2.imread("./img/zheng2.png", 0), None, fx=factor, fy=factor, interpolation=cv2.INTER_CUBIC)
img2 = cv2.resize(cv2.imread("./img/xie2.png", 0), None, fx=factor, fy=factor, interpolation=cv2.INTER_CUBIC)

#有专利,SURF_create,SIFT_create可以直接跑
'''
1. 卸载已有安装opencv-python:

      pip uninstall opencv-python

2. 安装opencv-contrib-python  3.2版本以下:

      pip install opencv-contrib-python==3.4.2
也可以不降低版本号,进行编译,详细流程见链接
https://blog.csdn.net/m0_50736744/article/details/129351648

'''
surf = cv2.xfeatures2d.SIFT_create()
kp1, des1 = surf.detectAndCompute(img1, None)
kp2, des2 = surf.detectAndCompute(img2, None)

FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=50)
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(des1, des2, k=2)

# store all the good matches as per Lowe's ratio test.
good = []
for m, n in matches:
    if m.distance < 0.7 * n.distance:
        good.append(m)

MIN_MATCH_COUNT = 10
if len(good) > MIN_MATCH_COUNT:
    src_pts = np.float32([kp1[m.queryIdx].pt for m in good
                          ]).reshape(-1, 1, 2)
    dst_pts = np.float32([kp2[m.trainIdx].pt for m in good
                          ]).reshape(-1, 1, 2)

    M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)
    matchesMask = mask.ravel().tolist()
    h, w = img1.shape
    pts = np.float32([[0, 0], [0, h - 1], [w - 1, h - 1], [w - 1, 0]]).reshape(-1, 1, 2)
    dst = cv2.perspectiveTransform(pts, M)

    deskew()

    img2 = cv2.polylines(img2, [np.int32(dst)], True, 255, 3, cv2.LINE_AA)
else:
    print("Not  enough  matches are found   -   %d/%d" % (len(good), MIN_MATCH_COUNT))
    matchesMask = None

# show matching keypoints
draw_params = dict(matchColor=(0, 255, 0),  # draw  matches in  green   color
                   singlePointColor=None,
                   matchesMask=matchesMask,  # draw only    inliers
                   flags=2)
img3 = cv2.drawMatches(img1, kp1, img2, kp2, good, None, **draw_params)
plt.imshow(img3, 'gray')
plt.show()

Diagrama de efectos del algoritmo anterior.

El código anterior y los datos de la imagen del instrumento se cargaron en el recurso y los descargó usted mismo.

https://download.csdn.net/download/sunnyrainflower/88221223

#Enlace de referencia
#https://www.javaroad.cn/questions/347518#toolbar-title

Nota especial

#SURF_create tiene una patente, puede ejecutarse directamente e informar un error, y SIFT_create puede ejecutarse directamente

El método para usar SURF_create es el siguiente

1.
1. Desinstale la instalación existente de opencv-python:

      pip desinstalar opencv-python

2. Instale opencv-contrib-python versión 3.2 o inferior:

      instalación de pip opencv-contrib-python==3.4.2

2.
También es posible compilar sin reducir el número de versión. Para conocer el proceso detallado, consulte el enlace
https://blog.csdn.net/m0_50736744/article/details/129351648


/*------------------------------------------------ ----------------------------------
// Autor: Tío Barbudo
// Declaración de derechos de autor: Por favor, no esté de acuerdo Hacer No reimprimir, hay algunas imágenes de Internet, si hay alguna infracción, comuníquese para eliminarlas
---------------------------- ------ -------------------------------------------- -------*/ 

Supongo que te gusta

Origin blog.csdn.net/sunnyrainflower/article/details/132298966
Recomendado
Clasificación