工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> MATLAB

MATLAB 2次元逆離散コサイン変換(IDCT):周波数データから画像を復元

逆離散コサイン変換(IDCT、Inverse Cosine Transform)は、コサイン変換のプロセスを逆転させる数学演算です。信号や画像を周波数領域の表現から再構成する際、信号処理や画像処理で特に有用です。

2次元信号や画像の文脈では、2次元逆離散コサイン変換(2-D IDCT)は、コサイン係数の行列(信号や画像の周波数成分を表す)を空間領域に戻し、元の信号や画像を生成します。

MATLABでの2次元逆コサイン変換は、コサイン値の行列を空間領域の画像に変換するために使用されます。これは2次元コサイン変換の逆演算であり、画像処理と圧縮で一般的に用いられます。idct2 関数を使用して2次元逆コサイン変換を実行します。

2次元逆離散コサイン変換

MATLABでは、idct2 関数で2次元逆離散コサイン変換を実行します。コサイン係数の行列を入力として受け取り、信号や画像の空間領域表現を返します。結果は表示やさらなる処理が可能な再構成画像となります。

逆コサイン変換は、画像圧縮(JPEG圧縮など)、画像再構成、周波数領域での操作後に信号や画像を元の形に戻す必要がある信号処理タスクなど、さまざまな用途で重要です。

構文

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

構文の説明

2次元逆離散コサイン変換の例をいくつか見てみましょう。

例1:idct2()関数で画像から高周波成分を除去

 img = imread('autumn.tif'); % グレースケール変換 if size(img, 3) == 3 img = rgb2gray(img); end % 2次元DCT計算 dct_img = dct2(double(img)); % 高周波成分除去の閾値設定(最初の50係数のみ保持) threshold = 50; dct_img_thresh = dct_img; dct_img_thresh(threshold+1:end, :) = 0; dct_img_thresh(:, threshold+1:end) = 0; % 逆2次元DCTでフィルタ済み画像取得 filtered_img = uint8(idct2(dct_img_thresh)); % 元画像とフィルタ済み画像を表示 figure; subplot(1, 2, 1); imshow(img); title('Original Image'); subplot(1, 2, 2); imshow(filtered_img); title('Filtered Image'); 

この例では:

例2:B = idct2(A, m,n) で画像をリサイズ

 % 画像読み込み img = imread('autumn.tif'); % グレースケール変換 if size(img, 3) == 3 img = rgb2gray(img); end % 2次元DCT計算 dct_img = dct2(double(img)); % DCT係数行列をリサイズ(周波数領域表現を縮小) new_size = size(img) / 2; dct_resized = imresize(dct_img, new_size); % 逆2次元DCTでリサイズ済み画像取得 resized_img = uint8(idct2(dct_resized, size(img, 1), size(img, 2))); % 元画像とリサイズ画像を表示 subplot(1, 2, 1); imshow(img); title('Original Image'); subplot(1, 2, 2); imshow(resized_img); title('Resized Image using 2-D IDCT'); 

この例では:

例3:2次元IDCTで行列をリサイズ

 % サンプル行列 A を作成 A = [ 10, 20, 30, 40; 50, 60, 70, 80; 90, 100, 110, 120; 130, 140, 150, 160 ]; % 元行列 A を表示 disp('Original Matrix A:'); disp(A); % Aの2次元IDCTを計算し、3x2行列にリサイズ B = idct2(A, [3, 2]); % リサイズ済み行列 B を表示 disp('Resized Matrix B (3x2):'); disp(B); 

4×4のサンプル行列 A を作成し、2次元IDCTを適用して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 

MATLAB

  1. MATLABベクトル完全マスター:行/列ベクトルの基礎と操作
  2. MATLABコロン演算子をマスター:ベクトル作成と効率的な反復処理
  3. MATLABで数式を可視化:2D/3Dプロッティング完全ガイド
  4. MATLAB 2次元逆離散コサイン変換(IDCT):周波数データから画像を復元
  5. MATLAB積分マスター:不定積分からリーマン和まで
  6. MATLAB基礎マスター:必須構文とコマンド完全ガイド
  7. MATLAB:ラプラシアン・オブ・ガウシアン(LoG)フィルタによるエッジ検出
  8. Simulink:MATLABの高度なシミュレーション&モデルベース設計ツール
  9. MATLAB:多次元配列と特殊配列をマスターする
  10. MATLABガイド:多項式の微分を効率的に計算する
  11. MATLABでの多項式の理解:表現と評価