Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> MATLAB

Transformation cosinus inverse MATLAB 2D :restaurer des images à partir de données de fréquence

La transformation cosinus inverse, souvent désignée par ICT ou IDCT, est une opération mathématique qui inverse le processus de transformation cosinus. Il est particulièrement utile dans le traitement du signal et de l'image pour reconstruire des signaux ou des images à partir de leurs représentations dans le domaine fréquentiel.

Dans le contexte de signaux ou d'images 2D, la transformation cosinus inverse 2D (TIC 2D ou IDCT 2D) convertit une matrice de coefficients cosinus (représentant le contenu fréquentiel du signal ou de l'image) dans le domaine spatial, produisant le signal ou l'image d'origine.

La transformation cosinus inverse 2D dans MATLAB est utilisée pour convertir une matrice de valeurs cosinus en une image de domaine spatial. Il s’agit de l’opération inverse de la transformation cosinus 2D et est couramment utilisée dans le traitement et la compression d’images. La fonction idct2 est utilisée pour effectuer la transformation cosinus inverse 2D dans MATLAB.

Transformation en cosinus discrète inverse 2D

Dans MATLAB, la fonction idct2 est utilisée pour effectuer la transformation cosinus inverse 2D. Il prend une matrice de coefficients cosinus en entrée et renvoie la représentation du domaine spatial du signal ou de l'image. Le résultat est une image reconstruite qui peut être affichée ou traitée davantage.

La transformation cosinus inverse est cruciale dans diverses applications, notamment la compression d'images (par exemple, dans la compression JPEG), la reconstruction d'images et les tâches de traitement du signal où les signaux ou les images doivent être retransformés à leur forme originale après une manipulation du domaine fréquentiel.

Syntaxe

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

Explication de la syntaxe

B =idct2(A) - Calcule la transformation cosinus discrète inverse (IDCT) bidimensionnelle de la matrice A, renvoyant le résultat dans la matrice B. Cette opération reconstruit efficacement l'image du domaine spatial à partir de sa représentation du domaine fréquentiel dans A.

B =idct2 (A, m, n) - calcule la transformation cosinus discrète inverse (IDCT) bidimensionnelle de la matrice A et spécifie la taille de la matrice de sortie B comme m par n. Cette opération reconstruit efficacement l'image du domaine spatial à partir de sa représentation du domaine fréquentiel dans A, en la redimensionnant aux dimensions spécifiées m-by-n.

B =idct2(A, [m,n]) - calcule la transformation cosinus discrète inverse (IDCT) bidimensionnelle de la matrice A et redimensionne la matrice de sortie B pour avoir m lignes et n colonnes. Cette opération reconstruit l'image du domaine spatial à partir de sa représentation du domaine fréquentiel dans A, en la redimensionnant aux dimensions spécifiées [mn].

Voyons quelques exemples de transformation en cosinus discrète inverse 2D

Exemple 1 :Pour supprimer les hautes fréquences d'une image à l'aide de la fonction idct2()

Le code que nous avons est −

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');

Dans l'exemple −

Lors de l'exécution, le résultat que nous obtenons est −

Exemple 2 :Redimensionner l'image en utilisant B =idct2(A, m,n)

Le code que nous avons est −

% 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');

Dans l'exemple nous avons −

Le résultat lors de l'exécution est −

Exemple 3 :Redimensionnement d'une matrice à l'aide de la transformation en cosinus discrète inverse (IDCT) 2D

Le code que nous avons est le suivant −

% 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);

Dans cet exemple, nous créons une matrice d'échantillon 4x4 A. Nous appliquons ensuite l'IDCT 2D à A et redimensionnons le résultat en une matrice 3x2 [m, n] =[3, 2]. La matrice B redimensionnée s'affiche après la transformation.

Le résultat que nous obtenons est le suivant −

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. Guide MATLAB :Calculer efficacement les dérivées polynomiales
  2. MATLAB - Chiffres
  3. Maîtriser les valeurs propres et les vecteurs propres dans MATLAB :un guide pratique
  4. MATLAB :filtre laplacien de gaussien pour la détection des bords
  5. MATLAB - Chaînes
  6. MATLAB - Vecteurs
  7. MATLAB - M-Files
  8. Visualisez des expressions mathématiques dans MATLAB :guide de traçage 2D et 3D
  9. MATLAB - Importation de données