Aplicaciones de procesamiento de imágenes digitales | Procesamiento de imágenes en Python

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

Introducción

El procesamiento de imágenes digitales consiste en las diversas técnicas y métodos involucrados en la manipulación de imágenes en una computadora. Se realizan varios tipos de operaciones en las imágenes, que constituyen el procesamiento de imágenes digitales.

¿Comprender qué es una imagen en realidad?

La imagen es básicamente una señal bidimensional. La función de señal es f (x, y), donde el valor de xey en un punto genera el píxel en el punto. La imagen es básicamente una matriz bidimensional que consta de números entre 0 y 255.

Varios factores están involucrados en el procesamiento de imágenes. El procesamiento de imágenes tiene algunos motivos principales.

Ayuda de procesamiento de imágenes en:

1. Mejora de la información digital almacenada por nosotros.

2. Automatización del trabajo con imágenes.

3. Mejor optimización de la imagen que conduce a un almacenamiento y transmisión eficientes.

A lo largo de los años, el procesamiento de imágenes ha mejorado mucho y existen muchas aplicaciones comerciales modernas de procesamiento de imágenes.

Usos del procesamiento de imágenes:

1. Corrección de imagen, nitidez y corrección de resolución

A menudo, deseamos poder mejorar las imágenes antiguas. Y eso es posible hoy en día. El zoom, la nitidez, la detección de bordes y las ediciones de alto rango dinámico se incluyen en esta categoría. Todos estos pasos ayudan a mejorar la imagen. La mayoría de los programas de edición y el código de corrección de imágenes pueden hacer estas cosas fácilmente.

2. Filtros en la edición de aplicaciones y redes sociales

La mayoría de las aplicaciones de edición y las aplicaciones de redes sociales ofrecen filtros en estos días.

53395ip1-6522631

Arriba hay un ejemplo de la imagen original y la imagen filtrada. Los filtros hacen que la imagen se vea más atractiva visualmente. Los filtros suelen ser un conjunto de funciones que cambian los colores y otros aspectos de una imagen que hacen que la imagen se vea diferente. Los filtros son una aplicación interesante del procesamiento de imágenes.

3. Tecnología médica:

En el campo de la medicina, el procesamiento de imágenes se utiliza para diversas tareas, como tomografía por emisión de positrones, imágenes de rayos X, tomografía computarizada médica, imágenes UV, procesamiento de imágenes de células cancerosas y mucho más. La introducción del procesamiento de imágenes en el campo de la tecnología médica ha mejorado enormemente el proceso de diagnóstico.

60463ip2-2232351

(Fuente de la imagen: https://axisimagingnews.com/radiology-products/imaging-equipment/x-ray/image-processing-software-mimics-grid-use-improve-image-quality)

La imagen de la izquierda es la imagen original. La imagen de la derecha es la imagen procesada. Podemos ver que la imagen procesada es mucho mejor y se puede utilizar para un mejor diagnóstico.

4. Visión por computadora / máquina:

Una de las aplicaciones más interesantes y útiles del procesamiento de imágenes es la visión por computadora. La visión por computadora se utiliza para hacer que la computadora vea, identifique cosas y procese todo el entorno como un todo. Un uso importante de la visión por computadora es la conducción de automóviles, drones, etc. CV ayuda a detectar obstáculos, reconocer caminos y comprender el entorno.

27096ip3-3538997

(Fuente: calles de París a los ojos del piloto automático de Tesla https://youtu.be/_1MHGUC_BzQ)

Así es como funciona la visión por computadora típica para los pilotos automáticos de automóviles. La computadora captura imágenes en vivo y analiza otros autos, la carretera y otros obstáculos.

5. Reconocimiento de patrones:

El reconocimiento de patrones es parte del procesamiento de imágenes que involucra inteligencia artificial y aprendizaje automático. El procesamiento de imágenes se utiliza para descubrir varios patrones y aspectos en las imágenes. El reconocimiento de patrones se utiliza para el análisis de escritura a mano, el reconocimiento de imágenes, el diagnóstico médico asistido por computadora y mucho más.

6. Procesamiento de video:

El video es básicamente un movimiento rápido de imágenes. En el procesamiento de video se utilizan varias técnicas de procesamiento de imágenes. Algunos métodos de procesamiento de video son eliminación de ruido, estabilización de imagen, conversión de velocidad de cuadro, mejora de detalles y mucho más.

Comenzando con el procesamiento de imágenes en Python:

Comencemos con algunas tareas básicas relacionadas con la imagen en Python. Haremos uso de PIL.

PIL

La biblioteca de imágenes de Python se utiliza para varias tareas de procesamiento de imágenes.

Instalación:

pip install pillow

Con PIL instalado, ahora podemos pasar al código.

Primero, trabajamos con algunas funciones de matplotlib.

import matplotlib.image as img
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

Se leerá la siguiente imagen. Se llama image1.jpg.

42886image1-7291166
# reading jpg image 
img = img.imread('image1.jpg')
plt.imshow(img)
98055ip4-5854312

Se lee la imagen.

# modifying the shape of the image
lum1 = img[:, :, 0] 
plt.imshow(lum1)

Ahora se modifica la forma de la imagen.

51525ip5-5387815

Ahora lo cambiaremos al mapa de colores «caliente». Para leer más sobre el mapa de colores, visite este Enlace.

plt.imshow(lum1, cmap ='hot') 
plt.colorbar()

La salida de la imagen se ve:

48136ip6-6598254

Ahora probamos con un mapa de colores diferente.

imgplot = plt.imshow(lum1)
imgplot.set_cmap('nipy_spectral')

Salida de imagen:

87772ip7-9911686

La razón para usar mapas de colores es que, a menudo en diversas aplicaciones y usos, es útil tener un mapa de colores uniforme. Leer más sobre Colourmaps: Elegir mapas de colores en Matplotlib.

Ahora echemos un vistazo a por qué llamamos a una imagen una matriz 2D.

#data type of lum1

print(type(lum1))

Salida:

print(lum1)

[[ 92 91 89 … 169 168 169]
[110 110 110 … 168 166 167]
[100 103 108 … 164 163 164]

[ 97 96 95 … 144 147 147]
[ 99 99 98 … 145 139 138]
[102 102 103 … 149 137 137]]

Los puntos están ahí para mostrar que hay muchos más puntos de datos en el medio. Pero una cosa es segura, es que todos son datos numéricos.

Encontremos el tamaño de la matriz.

len(lum1)

Salida: 320

Salida: 658

Esto nos da la cantidad de píxeles y las dimensiones de la imagen: 320 * 658.

También lo verificaremos más adelante.

Ahora trabajamos con PIL.

from PIL import Image

Usaremos este archivo de imagen, llamado: people.jpg.

72542people-3071034
img2 = Image.open('people.jpg')
plt.imshow(img2)
49030ip8-8376315

Se lee la imagen.

Ahora, cambiamos el tamaño de la imagen.

img2.thumbnail((50, 50), Image.ANTIALIAS)  # resizes image in-place
imgplot = plt.imshow(img2)
60029ip9-1215722
imgplot1 = plt.imshow(img2, interpolation="nearest")
94054ip10-6779429
imgplot2 = plt.imshow(img2, interpolation="bicubic")
59943ip11-3882488

Pero, ¿por qué desenfocamos las imágenes a propósito en el procesamiento de imágenes? Bueno, a menudo para los algoritmos de reconocimiento de patrones y visión por computadora, se vuelve difícil procesar las imágenes si son muy nítidas. Por lo tanto, el desenfoque se realiza para suavizar las imágenes. El desenfoque también hace que la transición de color en una imagen, de un lado a otro, sea mucho más suave.

Ahora, verifiquemos las dimensiones de la imagen del automóvil, en lo que trabajamos antes.

#some more interesting stuff
file="image1.jpg"
with Image.open(file) as image: 
    width, height = image.size 
#Image width, height is be obtained
57607ip12-8743302

Estas son las dimensiones que obtuvimos también. Entonces podemos concluir que la imagen es 320 * 658.

Intentemos también rotar y transponer la imagen.

#Relative Path 
img3 = Image.open("image1.jpg")  
#Angle given 
img_rot= img3.rotate(180)  
#Saved in the same relative location 
img_rot.save("rotated_picture.jpg")
13558ip13-9088558

Esta es la imagen rotada.

#transposing image  
transposed_img = img3.transpose(Image.FLIP_LEFT_RIGHT)
#Saved in the same relative location 
transposed_img.save("transposed_img.jpg")
37431ip14-7324078

Esta es la imagen transpuesta.

Ultimas palabras:

El procesamiento de imágenes tiene varias aplicaciones importantes y, con el tiempo, los métodos y procesos también mejorarán.

Sobre mí:

Prateek Majumder

Ciencia de datos y análisis | Especialista en marketing digital | SEO | Creación de contenido

Conéctate conmigo en Linkedin.

Gracias.

Los medios que se muestran en este artículo sobre procesamiento de imágenes digitales no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.