- Matlab 教程
- MATLAB - 首頁
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 環境設定
- MATLAB - 編輯器
- MATLAB - 線上
- MATLAB - 工作區
- MATLAB - 語法
- MATLAB - 變數
- MATLAB - 命令
- MATLAB - 資料型別
- MATLAB - 運算子
- MATLAB - 日期和時間
- MATLAB - 數字
- MATLAB - 隨機數
- MATLAB - 字串和字元
- MATLAB - 文字格式化
- MATLAB - 時間表
- MATLAB - M 檔案
- MATLAB - 冒號表示法
- MATLAB - 資料匯入
- MATLAB - 資料輸出
- MATLAB - 資料歸一化
- MATLAB - 預定義變數
- MATLAB - 決策
- MATLAB - 決策語句
- MATLAB - If End 語句
- MATLAB - If Else 語句
- MATLAB - If…Elseif Else 語句
- MATLAB - 巢狀 If 語句
- MATLAB - Switch 語句
- MATLAB - 巢狀 Switch
- MATLAB - 迴圈
- MATLAB - 迴圈
- MATLAB - For 迴圈
- MATLAB - While 迴圈
- MATLAB - 巢狀迴圈
- MATLAB - Break 語句
- MATLAB - Continue 語句
- MATLAB - End 語句
- MATLAB - 陣列
- MATLAB - 陣列
- MATLAB - 向量
- MATLAB - 轉置運算子
- MATLAB - 陣列索引
- MATLAB - 多維陣列
- MATLAB - 相容陣列
- MATLAB - 分類陣列
- MATLAB - 元胞陣列
- MATLAB - 矩陣
- MATLAB - 稀疏矩陣
- MATLAB - 表格
- MATLAB - 結構體
- MATLAB - 陣列乘法
- MATLAB - 陣列除法
- MATLAB - 陣列函式
- MATLAB - 函式
- MATLAB - 函式
- MATLAB - 函式引數
- MATLAB - 匿名函式
- MATLAB - 巢狀函式
- MATLAB - 返回語句
- MATLAB - 空函式
- MATLAB - 區域性函式
- MATLAB - 全域性變數
- MATLAB - 函式控制代碼
- MATLAB - 濾波函式
- MATLAB - 階乘
- MATLAB - 私有函式
- MATLAB - 子函式
- MATLAB - 遞迴函式
- MATLAB - 函式優先順序順序
- MATLAB - Map 函式
- MATLAB - 均值函式
- MATLAB - End 函式
- MATLAB - 錯誤處理
- MATLAB - 錯誤處理
- MATLAB - Try...Catch 語句
- MATLAB - 除錯
- MATLAB - 繪圖
- MATLAB - 繪圖
- MATLAB - 繪製陣列
- MATLAB - 繪製向量
- MATLAB - 條形圖
- MATLAB - 直方圖
- MATLAB - 圖形
- MATLAB - 二維線圖
- MATLAB - 三維圖
- MATLAB - 格式化繪圖
- MATLAB - 對數座標軸繪圖
- MATLAB - 繪製誤差條
- MATLAB - 繪製三維等值線圖
- MATLAB - 極座標圖
- MATLAB - 散點圖
- MATLAB - 繪製表示式或函式
- MATLAB - 繪製矩形
- MATLAB - 繪製頻譜圖
- MATLAB - 繪製網格曲面
- MATLAB - 繪製正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 線性插值
- MATLAB - 二維陣列插值
- MATLAB - 三維陣列插值
- MATLAB - 多項式
- MATLAB - 多項式
- MATLAB - 多項式加法
- MATLAB - 多項式乘法
- MATLAB - 多項式除法
- MATLAB - 多項式的導數
- MATLAB - 變換
- MATLAB - 變換
- MATLAB - 拉普拉斯變換
- MATLAB - 拉普拉斯濾波器
- MATLAB - 高斯-拉普拉斯濾波器
- MATLAB - 逆傅立葉變換
- MATLAB - 傅立葉變換
- MATLAB - 快速傅立葉變換
- MATLAB - 二維逆餘弦變換
- MATLAB - 向座標軸新增圖例
- MATLAB - 面向物件
- MATLAB - 面向物件程式設計
- MATLAB - 類和物件
- MATLAB - 函式過載
- MATLAB - 運算子過載
- MATLAB - 使用者定義類
- MATLAB - 複製物件
- MATLAB - 代數
- MATLAB - 線性代數
- MATLAB - 高斯消元法
- MATLAB - 高斯-約旦消元法
- MATLAB - 簡化行階梯形式
- MATLAB - 特徵值和特徵向量
- MATLAB - 積分
- MATLAB - 積分
- MATLAB - 二重積分
- MATLAB - 梯形法則
- MATLAB - 辛普森法則
- MATLAB - 其他
- MATLAB - 微積分
- MATLAB - 微分
- MATLAB - 矩陣的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用資源
- MATLAB - 快速指南
- MATLAB - 有用資源
- MATLAB - 討論
MATLAB - 二維逆餘弦變換
逆餘弦變換,通常表示為 ICT 或 IDCT,是一種數學運算,它反轉餘弦變換的過程。它在訊號和影像處理中特別有用,用於從其頻域表示中重建訊號或影像。
在二維訊號或影像的上下文中,二維逆餘弦變換(二維 ICT 或二維 IDCT)將餘弦係數矩陣(表示訊號或影像的頻率內容)轉換回空間域,從而產生原始訊號或影像。
MATLAB 中的二維逆餘弦變換用於將餘弦值矩陣轉換為空間域影像。它是二維餘弦變換的逆運算,通常用於影像處理和壓縮。idct2 函式用於在 MATLAB 中執行二維逆餘弦變換。
二維逆離散餘弦變換
在 MATLAB 中,idct2 函式用於執行二維逆餘弦變換。它以餘弦係數矩陣作為輸入,並返回訊號或影像的空間域表示。結果是可顯示或進一步處理的重建影像。
逆餘弦變換在各種應用中至關重要,包括影像壓縮(例如,在 JPEG 壓縮中)、影像重建和訊號處理任務,在這些任務中,需要在頻域操作後將訊號或影像轉換回其原始形式。
語法
B = idct2(A) B = idct2(A,m,n) B = idct2(A,[m n])
語法說明
B = idct2(A) - 計算矩陣 A 的二維逆離散餘弦變換 (IDCT),並將結果返回到矩陣 B 中。此操作有效地從其頻域表示 A 中重建空間域影像。
B = idct2(A, m,n) - 計算矩陣 A 的二維逆離散餘弦變換 (IDCT),並將輸出矩陣 B 的大小指定為 m×n。此操作有效地從其頻域表示 A 中重建空間域影像,並將其調整為指定尺寸 m×n。
B = idct2(A, [m,n]) - 計算矩陣 A 的二維逆離散餘弦變換 (IDCT),並將輸出矩陣 B 調整為具有 m 行和 n 列。此操作從其頻域表示 A 中重建空間域影像,並將其調整為指定的尺寸 [m n]。
讓我們看看二維逆離散餘弦變換的一些示例
示例 1:使用 idct2() 函式從影像中去除高頻
我們的程式碼如下:
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');
在示例中:
- imread 函式用於從檔案(在本例中為“autumn.tif”)讀取影像並將其儲存在變數 img 中。
- 如果影像為彩色影像(即,它具有紅色、綠色和藍色的三個通道),則使用 rgb2gray 函式將其轉換為灰度影像。這樣做是因為二維 DCT 通常應用於灰度影像。
- dct2 函式計算影像的二維 DCT。結果儲存在變數 dct_img 中。DCT 以頻域表示影像,其中高頻分量對應於畫素值的快速變化。
- 選擇一個閾值來確定要保留哪些 DCT 係數以及要丟棄哪些係數。在本例中,我們選擇僅保留前 50 個係數(在 256×256 的影像中,這些係數表示最低頻率)。高頻係數(超過閾值的係數)設定為零。
- idct2 函式計算修改後的 DCT 係數 (dct_img_thresh) 的逆二維 DCT。此操作有效地從其頻域表示中重建空間域影像。結果儲存在 filtered_img 中。
- 最後,使用 imshow 函式並排顯示原始影像和過濾後的影像。原始影像顯示在左側,過濾後的影像(已去除高頻)顯示在右側。
執行後,我們得到以下輸出:
示例 2:使用 B = idct2(A, m,n) 調整影像大小
我們的程式碼如下:
% 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');
在示例中,我們有:
- imread 函式用於從檔案(在本例中為“autumn.tif”)讀取影像並將其儲存在變數 img 中。
- 如果影像為彩色影像(即,它具有紅色、綠色和藍色的三個通道),則使用 rgb2gray 函式將其轉換為灰度影像。此步驟很重要,因為二維 DCT 通常應用於灰度影像。
- dct2 函式計算影像的二維 DCT。結果儲存在變數 dct_img 中。DCT 以頻域表示影像,其中影像的不同頻率由不同的係數表示。
- 為了調整影像大小,我們將 DCT 係數矩陣 (dct_img) 調整為更小的尺寸。這是使用 imresize 函式完成的,指定新尺寸為原始尺寸的一半 (new_size = size(img) / 2)。這有效地減少了影像的頻域表示。
- idct2 函式計算調整大小後的 DCT 係數 (dct_resized) 的逆二維 DCT。此操作有效地從其調整大小後的頻域表示中重建調整大小後的空間域影像。
- 最後,使用 imshow 函式並排顯示原始影像和調整大小後的影像。原始影像顯示在左側,調整大小後的影像(使用二維 IDCT 獲得)顯示在右側。
執行後的輸出為:
示例 3:使用二維逆離散餘弦變換 (IDCT) 調整矩陣大小
我們的程式碼如下:
% 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);
在此示例中,我們建立了一個 4×4 的示例矩陣 A。然後,我們將二維 IDCT 應用於 A 並將結果調整為 3×2 矩陣 [m, n] = [3, 2]。變換後的調整大小後的矩陣 B 將被顯示。
我們得到的輸出如下:
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