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

Transformación de coseno inversa 2-D de MATLAB:restauración de imágenes a partir de datos de frecuencia

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

En el contexto de señales o imágenes 2D, la transformada de coseno inversa 2D (TIC 2D o IDCT 2D) convierte una matriz de coeficientes de coseno (que representan el contenido de frecuencia de la señal o imagen) al dominio espacial, produciendo la señal o imagen original.

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

Transformada de coseno discreta inversa 2-D

En MATLAB, la función idct2 se utiliza para realizar la transformada de coseno inversa 2-D. Toma una matriz de coeficientes cosenos como entrada y devuelve la representación en el dominio espacial de la señal o imagen. El resultado es una imagen reconstruida que se puede mostrar o procesar más.

La transformada del coseno inverso es crucial en diversas aplicaciones, incluida la compresión de imágenes (por ejemplo, en la compresión JPEG), la reconstrucción de imágenes y las tareas de procesamiento de señales en las que las señales o imágenes deben transformarse nuevamente a su forma original después de la 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 sintaxis

B =idct2(A) - Calcula la transformada de coseno discreta inversa (IDCT) bidimensional de la matriz A, devolviendo el resultado en la matriz B. Esta operación reconstruye efectivamente la imagen del dominio espacial a partir de su representación en el dominio de frecuencia en A.

B =idct2(A, m,n) - calcula la transformada de coseno discreta inversa (IDCT) bidimensional 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 a partir de su representación en el dominio de frecuencia en A, redimensionándola a las dimensiones especificadas m por n.

B =idct2(A, [m,n]) - calcula la transformada de coseno discreta inversa (IDCT) bidimensional de la matriz A y cambia el tamaño de la matriz de salida B para que tenga m filas yn columnas. Esta operación reconstruye la imagen en el dominio espacial a partir de su representación en el dominio de frecuencia en A, redimensionándola a las dimensiones especificadas [m n].

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

Ejemplo 1:Para eliminar frecuencias altas de una imagen usando la función idct2()

El código que tenemos es −

img = imread('autumn.tif');
% Convert to grayscale if necessary
if size(img, 3) == 3
 img = rgb2gray(img);
end
% Compute 2-D DCT
dct_img = dct2(double(img));
% Set a threshold to remove high frequencies (e.g., keep only the first 50 coefficients)
threshold = 50;
dct_img_thresh = dct_img;
dct_img_thresh(threshold+1:end, :) = 0;
dct_img_thresh(:, threshold+1:end) = 0;
% Compute the inverse 2-D DCT to get the filtered image
filtered_img = uint8(idct2(dct_img_thresh));
% Display the original and filtered images
figure;
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(filtered_img);
title('Filtered Image');

En el ejemplo −

Al ejecutar, el resultado que obtenemos es −

Ejemplo 2:Cambiar el tamaño de la imagen usando B =idct2(A, m,n)

El código que tenemos es −

% Read the image
img = imread('autumn.tif');
% Convert the image to grayscale
if size(img, 3) == 3
 img = rgb2gray(img);
end
% Compute the 2-D DCT of the image
dct_img = dct2(double(img));
% Resize the DCT coefficients matrix (frequency domain representation) to a smaller size
% Let's resize it to half the original size
new_size = size(img) / 2;
dct_resized = imresize(dct_img, new_size);
% Compute the inverse 2-D DCT to get the resized image
resized_img = uint8(idct2(dct_resized, size(img, 1), size(img, 2)));
% Display the original and resized images
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(resized_img);
title('Resized Image using 2-D IDCT');

En el ejemplo tenemos −

El resultado de la ejecución es −

Ejemplo 3:cambiar el tamaño de una matriz utilizando la transformada de coseno discreta inversa (IDCT) 2-D

El código que tenemos es el siguiente:

% Create a sample matrix A
A = [
 10, 20, 30, 40;
 50, 60, 70, 80;
 90, 100, 110, 120;
 130, 140, 150, 160
];
% Display the original matrix A
disp('Original Matrix A:');
disp(A);
% Compute the 2-D IDCT of A and resize it to a 3x2 matrix
B = idct2(A, [3, 2]);
% Display the resized matrix B
disp('Resized Matrix B (3x2):');
disp(B);

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

El resultado que obtenemos es el siguiente:

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

MATLAB

  1. MATLAB - Comandos
  2. Guía MATLAB:Calcular derivadas polinómicas de forma eficiente
  3. MATLAB - Diferencial
  4. MATLAB-Números
  5. MATLAB - Toma de decisiones
  6. MATLAB - Transformaciones
  7. MATLAB:filtro laplaciano de gaussiano para detección de bordes
  8. MATLAB - Configuración del entorno
  9. MATLAB-Gráficos
  10. MATLAB - Integración
  11. MATLAB - Polinomios