Saltar al contenido principal

🚀 Transformaciones de intensidad y filtrado espacial

Al trabajar con procesamiento de imágenes, utilizamos dos enfoques principales: dominio espacial y dominio de la frecuencia. Para hacerlo, contamos con bibliotecas clave en Python: Numpy, Matplotlib y OpenCV (cv).

Las técnicas de dominio espacial operan directamente sobre los píxeles, mientras que las de dominio de la frecuencia trabajan en la transformada de Fourier en lugar de la imagen real.

🎋 Función de Umbralización---Tresholding

La técnica de umbralización de una imagen busca obtener un valor, denominado umbral, que permita binarizar una imagen en escala de grises modificando el valor de todos los pixeles disminuyendo a cero los pixeles con un valor inferior al del umbral y aumentandoa al valor seleccionado los pixeles que superen el valor del umbral, separando de esta manera el fondo y el objeto que se desea observar.

Ejemplo de cómo aplicar la umbralizacion en una imagen en python
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('img/transformaciones/imagen.jpg', 0)
img = cv.threshold(img, 128, 255, cv.THRESH_BINARY_INV)[1]

plt.imshow(img, cmap='gray')
plt.show()

Transumb

🔳 Negativo de una Imagen

El negativo de una imagen con niveles de intensidad en el rango [0, L - 1] se obtiene utilizando la función de transformación del negativo que tiene la forma:

s = L - 1 - r

L (número máximo de combinaciones) - 1 = 256 - 1

r: píxel que estamos visitando

Invertir los niveles de intensidad de una imagen digital de esta manera produce el equivalente a un negativo fotográfico.

Ejemplo de cómo obtener el negativo de una imagen en Python
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('img/transformaciones/imagen.jpg', 0)
plt.imshow(255 - img, cmap='gray')
plt.show()

Transneg

🪵 Transformación Logarítmica

La transformación logarítmica es una técnica de procesamiento de imágenes que mejora el contraste en áreas oscuras. Esto se logra aplicando una función logarítmica a los valores de intensidad de los píxeles, estirando los valores bajos y comprimiendo los altos. Esto hace que los detalles en las áreas oscuras sean más visibles. La constante de escala se ajusta para obtener el mejor resultado visual.

Se usa la formula que se muestra a continuacion:

S = c log(1 + r)

Donde ‘c’ es una constante calculada por: 255/(log(1 + m)), donde ‘m’ es el píxel más grande en la imagen.

Translog

Ejemplo de cómo se ve la transformación logarítmica en Python
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img=cv.imread('../images/apple.jpg',0)
c = 255 / np.log(1 + np.max(img))
log_transformed = c * (np.log(img + 1))
log_transformed = np.array(log_transformed, dtype=np.uint8)

plt.imshow(log_transformed, cmap='gray')
plt.show()

Aqui se muestra la aplicación de la transformación logarítmica en una imagen.

Transgamma

👾 Transformación Gamma---ley de potencia

La transformación gamma es una técnica de procesamiento de imágenes que ajusta el contraste y la luminosidad de la imagen. Utiliza una función no lineal para asignar nuevos valores de intensidad a los píxeles. A menudo se usa para corregir imágenes subexpuestas o sobreexpuestas y para mejorar el contraste en diferentes partes de la imagen. Ajustando el parámetro gamma, se puede controlar la cantidad de mejora del contraste.

Transgamma

Cuando se tiene una baja potencia (0 < y < 1), los valores de salida son más bajos generando una mayor intensidad. Mientras que con una alta potencia (1 < y < 25), los valores de salida son más altos generando una menor intensidad.

Ejemplo de cómo se ve la transformación gamma en Python
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img=cv.imread('../images/lena.jpg',0)
gamma = 2
plt.imshow(np.power(img3.astype(np.float64),gamma),cmap='gray')
plt.show()

A continuacion se muestra el antes y despues de la aplicación de la transformación gamma.

Transgamma

Transformación Gamma 1/t

La transformación gamma 1/t es una técnica de procesamiento de imágenes que ajusta el contraste y la luminosidad de la imagen. Utiliza una función no lineal para asignar nuevos valores de intensidad a los píxeles. A menudo se usa para corregir imágenes subexpuestas o sobreexpuestas y para mejorar el contraste en diferentes partes de la imagen. Ajustando el parámetro gamma, se puede controlar la cantidad de mejora del contraste.

Se usa la siguiente formula para la transformación:

Formula de la transformación gamma 1/t
S = f(x,y)1/t

donde:
t = Factor de corrección de Gamma, su valor oscila entre 0 y 2
t < 1 (oscurece la imagen)
t > 1 (aclara la imagen)
Ejemplo de cómo se ve la transformación gamma en Python
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img=cv.imread('../images/lena.jpg',0)
plt.imshow(np.power(img4.astype(np.float64),(1/.5)),cmap='gray')
plt.show()

Transgamma