Algoritmia - Algoritmo de compresión de imágenes

 
Vista:

Algoritmo de compresión de imágenes

Publicado por Charlie (1 intervención) el 21/04/2004 12:31:15
Hola!

Estoy intentando implementar mi propia versión del algoritmo DWT (Discrete Wavelet Transform) de compresión de imágenes, pero no lo consigo.

Alguno teneis una versión en C, Java, etc... que me puda servir como referencia?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Implementación simple de DWT para compresión de imágenes en Python

Publicado por Alejandro (307 intervenciones) el 01/03/2024 19:31:18
Charlie, implementar el algoritmo DWT (transformada Wavelet discreta) para la compresión de imágenes es un proyecto interesante. A continuación, te proporcionaré un ejemplo simple en Python, que puedes usar como referencia para tu implementación en el lenguaje de programación que prefieras. Puedes adaptar la lógica principal a C, Java u otro lenguaje.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np
import pywt
import cv2
 
def compress_image(image_path, output_path, wavelet='haar', level=1):
    # Leer la imagen
    original_image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
 
    # Aplicar DWT
    coeffs = pywt.wavedec2(original_image, wavelet, level=level)
 
    # Establecer coeficientes de detalle a cero para la compresión
    compressed_coeffs = [coeff if i == 0 else np.zeros_like(coeff) for i, coeff in enumerate(coeffs)]
 
    # Aplicar la IDWT (Inversa de la DWT)
    compressed_image = pywt.waverec2(compressed_coeffs, wavelet)
 
    # Guardar la imagen comprimida
    cv2.imwrite(output_path, compressed_image)
 
# Ejemplo de uso
compress_image('input_image.jpg', 'compressed_image.jpg', wavelet='haar', level=1)

Este código utiliza la biblioteca PyWavelets para la implementación de la DWT. Puedes instalar esta biblioteca usando:

1
pip install PyWavelets

Asegúrate de tener instalada también la biblioteca OpenCV (`cv2`).

Este es un ejemplo básico, y puedes ajustar los parámetros según tus necesidades. Además, ten en cuenta que si deseas implementar esto en C o Java, necesitarás encontrar bibliotecas o implementar la DWT manualmente, ya que Python proporciona una interfaz fácil con PyWavelets.

Recuerda que la implementación de algoritmos de compresión de imágenes puede ser compleja y depende de tus necesidades específicas. Este ejemplo es una introducción básica, y te recomendaría estudiar más sobre la DWT y considerar el uso de bibliotecas bien establecidas para aplicaciones prácticas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar