Estás leyendo la publicación: Serie de tutoriales de visión artificial M1C2: hacia la IA
Publicado originalmente en Hacia la IA.
Módulo 1: Representación y clasificación de imágenes
Capítulo 2— Sustitución de fondo de una imagen
¿Empezando aquí? Este artículo es parte de una serie de tutoriales de visión artificial. Aquí es donde puedes comenzar.
Objetivos de aprendizaje:
- Crear una máscara para una imagen
- Eliminar el fondo existente de la imagen
- Reemplazando el fondo con la imagen de nuestra elección
Requisitos previos: Tutoriales anteriores
- Importaciones
importar matplotlib.pyplot como plt
importar numpy como np
importar cv2
2. Cargue la imagen e imprima la forma del objeto.
imagen = cv2.imread(‘tu imagen’)
fondo = cv2.imread(‘imagen de fondo’)
print(‘Tipo:’, tipo(imagen),
‘dimensiones:’, imagen.forma)
3. Función para cambiar el espacio de color.
# Función para convertir el espacio de color de BGR a RGB
def BGR2RGB(BGR_imagen):
devolver cv2.cvtColor(BGR_image,cv2.COLOR_BGR2RGB)
imagen = BGR2RGB(imagen)
fondo = BGR2RGB(fondo)
4. Crea una copia y muestra la imagen.
copia_imagen = np.copia(imagen)
plt.imshow(imagen_copia)
5. Declare los límites de la sección y cree una máscara
# El siguiente paso es declarar los límites
rango_inferior = np.array([0,230,0])
rango_superior = np.array([100,255,100])
# Creando una máscara
enmascarado = cv2.inRange(coche, rango_inferior, rango_superior)
plt.imshow (enmascarado, cmap = ‘gris’)
6. Uso de la máscara sobre la copia de una imagen original
# almacenar la imagen original en una nueva variable
imagen_enmascarada = np.copia(imagen)
# Paso – 1: La región donde el valor de la máscara no es cero, es decir, no es negra (¡máscara! = 0) se volverá negra en la imagen original recién almacenada
imagen_enmascarada[mask!=0] = [0,0,0]
plt.imshow(imagen_enmascarada,cmap=’gris’)
7. Usando una máscara en el fondo
# Recorta la imagen para que tenga las mismas dimensiones que la imagen original
cropped_bg = fondo[:image.shape[0],:imagen.forma[1]]
# # Ahora pasemos al fondo, necesitamos reemplazarlo con
# Paso 2: Eliminar la región del automóvil de la imagen de fondo
cropped_bg[mask==0] = [0,0,0]
plt.imshow(cropped_bg)
8. Salida final
Como se discutió en el tutorial anterior, las imágenes no son más que matrices y, por lo tanto, podemos obtener la imagen de salida final simplemente agregando el fondo recortado y la imagen enmascarada, como un rompecabezas, poniéndolo todo junto.
final = cropped_bg+masked_image
plt.imshow(final)
9. Función de trazado
def Trazado(máscara,imagen_enmascarada,fondo_recortado,imagen_salida):
f,(ax1,ax2,ax3,ax4) = plt.subparcelas(1,4,tamañofig=(30,10))
ax1.set_title(‘Máscara’)
ax1.imshow(máscara)
ax2.set_title(‘Imagen_enmascarada’)
ax2.imshow(imagen_enmascarada)
ax3.set_title(‘Fondo recortado’)
ax3.imshow(cropped_bg)
ax4.set_title(‘Salida’)
ax4.imshow(imagen_de_salida)
Trazado (imagen, enmascarado, cropped_bg, final)
10. Ponlo todo junto
# Combinando todo en una sola función
def BG_replacement(imagen,fondo,rango_inferior,rango_superior):
# Paso1 – Creando una máscara
máscara = cv2.inRange(imagen, rango_inferior, rango_superior)
# Paso 2: uso de máscara en la copia de la imagen original
imagen_enmascarada = np.copia(imagen)
imagen_enmascarada[mask!=0] = [0,0,0]
# Paso 3 – Usar máscara en el fondo
cropped_bg = fondo[:image.shape[0],:imagen.forma[1]]
cropped_bg[mask==0] = [0,0,0]
# Creando una imagen de salida agregando imágenes obtenidas en el paso 2 y el paso
imagen_de_salida = bulbo_enmascarado + fondo_recortado
# Trama final
Trazado (máscara, imagen_enmascarada, fondo_recortado, imagen_salida)
Envolver
Con esto, hemos completado nuestros objetivos de aprendizaje para esta lección.
Declarar los límites de la sección fue bastante fácil para este ejemplo porque el fondo era verde, y el verde se puede representar fácilmente mediante (0,255,0) en el canal RGB, pero ¿y si el fondo no es uno de los colores R/G/B? Para eso, he cubierto un ejemplo más de una bombilla con un fondo de color rosa. Para comprender cómo realizar el mismo procedimiento en el color rosa, puede consultar este computadora portátil.
Enlace a GitHub.
Próximos:
Esto es todo para la Representación y clasificación de imágenes en el próximo módulo, es decir, Módulo 2: Filtros convolucionales y bordes, aprenderemos:
- Transformada de Fourier
- ¿Qué son los filtros y cómo crear uno?
- Núcleo gaussiano
- Transformada de Fourier y filtros
- Detector de borde astuto
- ¿Qué es el espacio Hough y mucho más?
Esto es todo por este artículo. nos vemos en la proxima
Hasta entonces, sígueme para obtener más información y no olvides conectarte conmigo en LinkedIn.❤❤❤
Computer Vision Tutorial Series M1C2 se publicó originalmente en Towards AI en Medium, donde las personas continúan la conversación destacando y respondiendo a esta historia.
Publicado a través de Hacia la IA