Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> MATLAB

MATLAB 2-D Inverse Cosine Transform:Memulihkan Gambar dari Data Frekuensi

Transformasi Kosinus Terbalik, sering dilambangkan sebagai ICT atau IDCT, adalah operasi matematika yang membalikkan proses Transformasi Kosinus. Hal ini sangat berguna dalam pemrosesan sinyal dan gambar untuk merekonstruksi sinyal atau gambar dari representasi domain frekuensinya.

Dalam konteks sinyal atau gambar 2-D, Transformasi Kosinus Terbalik 2-D (TIK 2-D atau IDCT 2-D) mengubah matriks koefisien kosinus (mewakili konten frekuensi sinyal atau gambar) kembali ke domain spasial, sehingga menghasilkan sinyal atau gambar asli.

Transformasi Kosinus Terbalik 2-D pada MATLAB digunakan untuk mengubah matriks nilai kosinus menjadi gambar domain spasial. Ini adalah operasi kebalikan dari Transformasi Kosinus 2-D dan biasanya digunakan dalam pemrosesan dan kompresi gambar. Fungsi idct2 digunakan untuk melakukan Transformasi Kosinus Terbalik 2-D di MATLAB.

Transformasi Kosinus Diskrit Terbalik 2-D

Di MATLAB, fungsi idct2 digunakan untuk melakukan Transformasi Kosinus Terbalik 2-D. Dibutuhkan matriks koefisien kosinus sebagai masukan dan mengembalikan representasi domain spasial dari sinyal atau gambar. Hasilnya adalah gambar hasil rekonstruksi yang dapat ditampilkan atau diproses lebih lanjut.

Transformasi Kosinus Terbalik sangat penting dalam berbagai aplikasi, termasuk kompresi gambar (misalnya, dalam kompresi JPEG), rekonstruksi gambar, dan tugas pemrosesan sinyal yang mengharuskan sinyal atau gambar diubah kembali ke bentuk aslinya setelah manipulasi domain frekuensi.

Sintaks

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

Penjelasan Sintaks

B =idct2(A) − Menghitung Inverse Discrete Cosine Transform (IDCT) dua dimensi dari matriks A, mengembalikan hasilnya dalam matriks B. Operasi ini secara efektif merekonstruksi gambar domain spasial dari representasi domain frekuensinya di A.

B =idct2(A, m,n) − menghitung Inverse Discrete Cosine Transform (IDCT) dua dimensi dari matriks A dan menentukan ukuran matriks keluaran B sebagai m-by-n. Operasi ini secara efektif merekonstruksi gambar domain spasial dari representasi domain frekuensinya di A, mengubah ukurannya ke dimensi yang ditentukan m-by-n.

B =idct2(A, [m,n]) − menghitung Inverse Discrete Cosine Transform (IDCT) dua dimensi dari matriks A dan mengubah ukuran matriks keluaran B menjadi m baris dan n kolom. Operasi ini merekonstruksi gambar domain spasial dari representasi domain frekuensinya di A, mengubah ukurannya ke dimensi yang ditentukan [m n].

Mari kita lihat beberapa contoh transformasi kosinus diskrit terbalik 2-D

Contoh 1:Untuk Menghapus Frekuensi Tinggi Dari Gambar Menggunakan Fungsi idct2()

Kode yang kami miliki adalah −

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

Dalam contoh −

Saat dieksekusi, output yang kita dapatkan adalah −

Contoh 2:Mengubah Ukuran Gambar Menggunakan B =idct2(A, m,n)

Kode yang kami miliki adalah −

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

Dalam contoh kita memiliki −

Output pada eksekusi adalah −

Contoh 3:Mengubah Ukuran Matriks Menggunakan 2-D Inverse Discrete Cosine Transform (IDCT)

Kode yang kami miliki adalah sebagai berikut −

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

Dalam contoh ini, kita membuat matriks sampel A 4x4. Kita kemudian menerapkan IDCT 2-D ke A dan mengubah ukuran hasilnya menjadi matriks 3x2 [m, n] =[3, 2]. Matriks B yang diubah ukurannya ditampilkan setelah transformasi.

Output yang kami dapatkan adalah sebagai berikut −

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 - Ikhtisar
  2. MATLAB - String
  3. MATLAB - Aljabar
  4. MATLAB - Impor Data
  5. Visualisasikan Ekspresi Matematika di MATLAB:Panduan Plotting 2D &3D
  6. MATLAB - Fungsi
  7. MATLAB - Notasi Titik Dua
  8. MATLAB - Matriks
  9. MATLAB - Grafik
  10. MATLAB - Pengaturan Lingkungan