Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> MATLAB

Transformada inversa de coseno 2-D en MATLAB: Restaurar imágenes desde datos de frecuencia

La Transformada Inversa de Coseno, a menudo denotada como ICT o IDCT, es una operación matemática que invierte el proceso de la Transformada de Coseno. Es particularmente útil en procesamiento de señales e imágenes para reconstruir señales o imágenes desde sus representaciones en el dominio de la frecuencia.

En el contexto de señales o imágenes 2-D, la Transformada Inversa de Coseno 2-D (2-D ICT o 2-D IDCT) convierte una matriz de coeficientes de coseno (representando el contenido de frecuencia de la señal o imagen) de vuelta al dominio espacial, produciendo la señal o imagen original.

La Transformada Inversa de Coseno 2-D en MATLAB se usa para convertir una matriz de valores de coseno en una imagen del dominio espacial. Es la operación inversa de la Transformada de Coseno 2-D y se usa comúnmente en procesamiento y compresión de imágenes. La función idct2 se usa para realizar la Transformada Inversa de Coseno 2-D en MATLAB.

Transformada inversa discreta de coseno 2-D

En MATLAB, la función idct2 se usa para realizar la Transformada Inversa de Coseno 2-D. Toma una matriz de coeficientes de coseno como entrada y devuelve la representación del dominio espacial de la señal o imagen. El resultado es una imagen reconstruida que puede mostrarse o procesarse ulteriormente.

La Transformada Inversa de Coseno es crucial en varias aplicaciones, incluyendo compresión de imágenes (ej., en compresión JPEG), reconstrucción de imágenes y tareas de procesamiento de señales donde las señales o imágenes necesitan transformarse de vuelta a su forma original después de manipulación en el dominio de la frecuencia.

Sintaxis

 B = idct2(A) B = idct2(A,m,n) B = idct2(A,[m n]) 

Explicación de la sintaxis

B = idct2(A) — Calcula la Transformada Inversa Discreta de Coseno Bidimensional (IDCT) de la matriz A, devolviendo el resultado en la matriz B. Esta operación reconstruye efectivamente la imagen del dominio espacial desde su representación en el dominio de la frecuencia en A.

B = idct2(A, m,n) — calcula la Transformada Inversa Discreta de Coseno Bidimensional (IDCT) de la matriz A y especifica el tamaño de la matriz de salida B como m-por-n. Esta operación reconstruye efectivamente la imagen del dominio espacial desde su representación en el dominio de la frecuencia en A, redimensionándola a las dimensiones especificadas m-por-n.

B = idct2(A, [m,n]) — calcula la Transformada Inversa Discreta de Coseno Bidimensional (IDCT) de la matriz A y redimensiona la matriz de salida B para tener m filas y n columnas. Esta operación reconstruye la imagen del dominio espacial desde su representación en el dominio de la frecuencia en A, redimensionándola a las dimensiones especificadas [m n].

Veamos algunos ejemplos para la transformada inversa discreta de coseno 2-D

Ejemplo 1: Eliminar altas frecuencias de imagen usando la función idct2()

El código que tenemos es:

 img = imread('autumn.tif'); % Convertir a escala de grises si es necesario if size(img, 3) == 3 img = rgb2gray(img); end % Calcular 2-D DCT dct_img = dct2(double(img)); % Establecer umbral para eliminar altas frecuencias (ej., mantener solo los primeros 50 coeficientes) threshold = 50; dct_img_thresh = dct_img; dct_img_thresh(threshold+1:end, :) = 0; dct_img_thresh(:, threshold+1:end) = 0; % Calcular la inversa 2-D DCT para obtener la imagen filtrada filtered_img = uint8(idct2(dct_img_thresh)); % Mostrar la imagen original y filtrada figure; subplot(1, 2, 1); imshow(img); title('Imagen Original'); subplot(1, 2, 2); imshow(filtered_img); title('Imagen Filtrada'); 

En el ejemplo:

Al ejecutar, la salida que obtenemos es:

Ejemplo 2: Redimensionar imagen usando B = idct2(A, m,n)

El código que tenemos es:

 % Leer la imagen img = imread('autumn.tif'); % Convertir la imagen a escala de grises if size(img, 3) == 3 img = rgb2gray(img); end % Calcular la 2-D DCT de la imagen dct_img = dct2(double(img)); % Redimensionar la matriz de coeficientes DCT (representación en dominio de frecuencia) a un tamaño menor % Redimensionémosla a la mitad del tamaño original new_size = size(img) / 2; dct_resized = imresize(dct_img, new_size); % Calcular la inversa 2-D DCT para obtener la imagen redimensionada resized_img = uint8(idct2(dct_resized, size(img, 1), size(img, 2))); % Mostrar la imagen original y redimensionada subplot(1, 2, 1); imshow(img); title('Imagen Original'); subplot(1, 2, 2); imshow(resized_img); title('Imagen Redimensionada usando 2-D IDCT'); 

En el ejemplo tenemos:

La salida al ejecutar es:

Ejemplo 3: Redimensionar una matriz usando Transformada Inversa Discreta de Coseno 2-D (IDCT)

El código que tenemos es el siguiente:

 % Crear una matriz de muestra A A = [ 10, 20, 30, 40; 50, 60, 70, 80; 90, 100, 110, 120; 130, 140, 150, 160 ]; % Mostrar la matriz original A disp('Matriz Original A:'); disp(A); % Calcular la 2-D IDCT de A y redimensionarla a una matriz 3x2 B = idct2(A, [3, 2]); % Mostrar la matriz redimensionada B disp('Matriz Redimensionada B (3x2):'); disp(B); 

En este ejemplo, creamos una matriz de muestra 4x4 A. Luego aplicamos la 2-D IDCT a A y redimensionamos el resultado a una matriz 3x2 [m, n] = [3, 2]. La matriz redimensionada B se muestra después de la transformación.

La salida que obtenemos es la siguiente:

 Matriz Original A: 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 Matriz Redimensionada B (3x2): 122.0957 -11.9692 -97.4491 1.6910 12.0957 -1.9692 

MATLAB

  1. Dominando Strings en MATLAB: Creación, Manipulación y Funciones
  2. Archivos M de MATLAB: Scripts y Funciones para Programación Potente
  3. Funciones en MATLAB: Definición, Workspace, Entradas y Salidas
  4. Derivadas Simbólicas en MATLAB con el Comando diff
  5. Gráficos de Funciones en MATLAB: Guía Paso a Paso
  6. Toma de Decisiones en MATLAB: Guía Completa de Estructuras Condicionales
  7. Guía MATLAB: Cálculo eficiente de derivadas de polinomios
  8. Transformadas en MATLAB: Laplace, Fourier y FFT
  9. Matrices en MATLAB: Creación, Referenciación y Manipulación de Datos
  10. Vectores en MATLAB: Conceptos Básicos de Vectores Fila y Columna
  11. Domine la POO en MATLAB: Construyendo código robusto y reutilizable con clases y objetos