MATLAB 2-D Inverse Kosinustransformation: Bilder aus Frequenzdaten rekonstruieren
Die Inverse Kosinustransformation (oft ICT oder IDCT bezeichnet) ist eine mathematische Operation, die den Prozess der Kosinustransformation umkehrt. Sie ist besonders nützlich in Signal- und Bildverarbeitung zur Rekonstruktion von Signalen oder Bildern aus ihren Frequenzbereichsrepräsentationen.
Im Kontext 2-D-Signalen oder Bildern wandelt die 2-D Inverse Kosinustransformation (2-D ICT bzw. 2-D IDCT) eine Matrix von Kosinuskoeffizienten (die den Frequenzinhalt des Signals/Bildes repräsentieren) zurück in den Ortsbereich und liefert das ursprüngliche Signal oder Bild.
In MATLAB wird die 2-D Inverse Kosinustransformation verwendet, um eine Matrix von Kosinuswerten in ein Ortsbereichsbild umzuwandeln. Sie ist die inverse Operation der 2-D Kosinustransformation und wird häufig in Bildverarbeitung und -kompression eingesetzt. Die Funktion idct2 führt die 2-D Inverse Kosinustransformation in MATLAB aus.
2-D Inverse Diskrete Kosinustransformation
In MATLAB berechnet idct2 die 2-D IDCT. Sie nimmt eine Matrix von Kosinuskoeffizienten als Eingabe und gibt die Ortsbereichsrepräsentation zurück. Das Ergebnis ist ein rekonstruiertes Bild, das angezeigt oder weiterverarbeitet werden kann.
Die IDCT ist entscheidend in Anwendungen wie Bildkompression (z. B. JPEG), Bildrekonstruktion und Signalverarbeitung, wo Signale/Bilder nach 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])
Syntax-Erklärung
- B = idct2(A) – Berechnet die 2-D IDCT von Matrix A, Ergebnis in Matrix B. Rekonstruiert das Ortsbereichsbild aus Frequenzrepräsentation A.
- B = idct2(A, m, n) – Berechnet 2-D IDCT von A und spezifiziert Ausgabematrixgröße m×n. Rekonstruiert und skaliert auf m×n.
- B = idct2(A, [m n]) – Berechnet 2-D IDCT von A und skaliert Ausgabe auf m Zeilen, n Spalten.
Beispiel 1: Hochfrequenzen aus Bild entfernen mit idct2()
img = imread('autumn.tif'); % In Graustufen konvertieren falls nötig if size(img, 3) == 3 img = rgb2gray(img); end % 2-D DCT berechnen dct_img = dct2(double(img)); % Schwellenwert zum Entfernen hoher Frequenzen (z. B. nur erste 50 Koeffizienten behalten) threshold = 50; dct_img_thresh = dct_img; dct_img_thresh(threshold+1:end, :) = 0; dct_img_thresh(:, threshold+1:end) = 0; % Inverse 2-D DCT für gefiltertes Bild filtered_img = uint8(idct2(dct_img_thresh)); % Original und gefiltertes Bild anzeigen figure; subplot(1, 2, 1); imshow(img); title('Originalbild'); subplot(1, 2, 2); imshow(filtered_img); title('Gefiltertes Bild');
Erklärung: Bild einlesen, ggf. Graustufen, 2-D DCT via dct2. Schwellenwert setzt hohe Frequenzen (ab Koeffizient 51) auf Null. idct2 rekonstruiert gefiltertes Bild. Anzeige nebeneinander.
Beispiel 2: Bildskalierung mit B = idct2(A, m, n)
% Bild einlesen img = imread('autumn.tif'); % Graustufen konvertieren if size(img, 3) == 3 img = rgb2gray(img); end % 2-D DCT berechnen dct_img = dct2(double(img)); % DCT-Koeffizientenmatrix verkleinern (Frequenzbereich) auf halbe Größe new_size = size(img) / 2; dct_resized = imresize(dct_img, new_size); % Inverse 2-D DCT für skaliertes Bild resized_img = uint8(idct2(dct_resized, size(img, 1), size(img, 2))); % Original und skaliertes Bild anzeigen subplot(1, 2, 1); imshow(img); title('Originalbild'); subplot(1, 2, 2); imshow(resized_img); title('Skaliertes Bild via 2-D IDCT');
Erklärung: DCT-Koeffizientenmatrix via imresize verkleinern, dann idct2 mit Originalgröße als Ziel für Rekonstruktion.
Beispiel 3: Matrix-Skalierung mit 2-D IDCT
% Beispielmatrix A erstellen A = [ 10, 20, 30, 40; 50, 60, 70, 80; 90, 100, 110, 120; 130, 140, 150, 160 ]; % Originalmatrix anzeigen disp('Originalmatrix A:'); disp(A); % 2-D IDCT von A berechnen und auf 3x2 skalieren B = idct2(A, [3, 2]); % Skalierte Matrix anzeigen disp('Skalierte Matrix B (3x2):'); disp(B);
Ausgabe:
Originalmatrix A: 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 Skalierte Matrix B (3x2): 122.0957 -11.9692 -97.4491 1.6910 12.0957 -1.9692
MATLAB
- Algebraische Gleichungen in MATLAB meistern: Lösen, Vereinfachen & Faktorisieren
- MATLAB Datentypen: Umfassender Leitfaden
- MATLAB 2-D Inverse Kosinustransformation: Bilder aus Frequenzdaten rekonstruieren
- MATLAB Schleifentypen: Wiederholte Codeausführung meistern
- MATLAB Transformationen: Laplace, Fourier und FFT erklärt
- MATLAB: Umfassender Überblick über die führende numerische Computing-Umgebung
- MATLAB Strings meistern: Einfache Erstellung & Verwendung
- MATLAB Datenimport: Effiziente Wege zum Laden externer Dateien
- MATLAB-Colon-Notation meistern: Vektoren erstellen & effizient iterieren
- MATLAB-Funktionen: Definition, Workspace, Ein- & Ausgaben