Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> MATLAB

MATLAB 2-D Inverse Cosinus-Transformation:Bilder aus Frequenzdaten wiederherstellen

Die inverse Kosinustransformation, oft als ICT oder IDCT bezeichnet, ist eine mathematische Operation, die den Prozess der Kosinustransformation umkehrt. Es ist besonders nützlich in der Signal- und Bildverarbeitung, um Signale oder Bilder aus ihren Frequenzbereichsdarstellungen zu rekonstruieren.

Im Kontext von 2D-Signalen oder Bildern wandelt die 2D-Inverse-Kosinus-Transformation (2D-ICT oder 2D-IDCT) eine Matrix von Kosinuskoeffizienten (die den Frequenzinhalt des Signals oder Bildes darstellt) zurück in den räumlichen Bereich um und ergibt das ursprüngliche Signal oder Bild.

Die 2-D-Inverse-Kosinus-Transformation in MATLAB wird verwendet, um eine Matrix von Kosinuswerten in ein räumliches Domänenbild umzuwandeln. Es handelt sich um die Umkehroperation der 2D-Kosinustransformation und wird häufig in der Bildverarbeitung und -komprimierung verwendet. Die Funktion idct2 wird verwendet, um die zweidimensionale inverse Kosinustransformation in MATLAB durchzuführen.

2-D inverse diskrete Kosinustransformation

In MATLAB wird die Funktion idct2 verwendet, um die zweidimensionale inverse Kosinustransformation durchzuführen. Es verwendet eine Matrix von Kosinuskoeffizienten als Eingabe und gibt die räumliche Domänendarstellung des Signals oder Bildes zurück. Das Ergebnis ist ein rekonstruiertes Bild, das angezeigt oder weiterverarbeitet werden kann.

Die inverse Kosinustransformation ist in verschiedenen Anwendungen von entscheidender Bedeutung, einschließlich der Bildkomprimierung (z. B. bei der JPEG-Komprimierung), der Bildrekonstruktion und Signalverarbeitungsaufgaben, bei denen Signale oder Bilder nach der Frequenzbereichsmanipulation in ihre ursprüngliche Form zurücktransformiert werden müssen.

Syntax

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

Syntaxerklärung

B =idct2(A) − Berechnet die zweidimensionale inverse diskrete Kosinustransformation (IDCT) der Matrix A und gibt das Ergebnis in Matrix B zurück. Diese Operation rekonstruiert effektiv das Raumdomänenbild aus seiner Frequenzdomänendarstellung in A.

B =idct2(A, m,n) − berechnet die zweidimensionale inverse diskrete Kosinustransformation (IDCT) der Matrix A und gibt die Größe der Ausgabematrix B als m-mal-n an. Diese Operation rekonstruiert effektiv das Raumdomänenbild aus seiner Frequenzdomänendarstellung in A und passt seine Größe auf die angegebenen Abmessungen m-mal-n an.

B =idct2(A, [m,n]) − berechnet die zweidimensionale inverse diskrete Kosinustransformation (IDCT) der Matrix A und ändert die Größe der Ausgabematrix B so, dass sie m Zeilen und n Spalten hat. Diese Operation rekonstruiert das Raumdomänenbild aus seiner Frequenzdomänendarstellung in A und passt seine Größe auf die angegebenen Abmessungen [m n] an.

Sehen wir uns einige Beispiele für die inverse diskrete 2D-Kosinustransformation an

Beispiel 1:So entfernen Sie hohe Frequenzen aus einem Bild mithilfe der Funktion idct2()

Der Code, den wir haben, ist −

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

Im Beispiel −

Bei der Ausführung erhalten wir die Ausgabe −

Beispiel 2:Bildgröße ändern mit B =idct2(A, m,n)

Der Code, den wir haben, ist −

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

Im Beispiel haben wir −

Die Ausgabe bei der Ausführung ist −

Beispiel 3:Größenänderung einer Matrix mithilfe der zweidimensionalen inversen diskreten Kosinustransformation (IDCT)

Der Code, den wir haben, ist wie folgt:−

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

In diesem Beispiel erstellen wir eine 4x4-Beispielmatrix A. Anschließend wenden wir die 2D-IDCT auf A an und ändern die Größe des Ergebnisses auf eine 3x2-Matrix [m, n] =[3, 2]. Die geänderte Matrix B wird nach der Transformation angezeigt.

Die Ausgabe, die wir erhalten, ist wie folgt:−

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 - Schleifentypen
  2. MATLAB - Operatoren
  3. MATLAB - Datenausgabe
  4. MATLAB-Leitfaden:Effiziente Berechnung von Polynomableitungen
  5. MATLAB - Überblick
  6. MATLAB - Plotten
  7. Visualisieren Sie mathematische Ausdrücke in MATLAB:Leitfaden zum 2D- und 3D-Plotten
  8. MATLAB - Grundlegende Syntax
  9. MATLAB - Funktionen
  10. MATLAB - Variablen