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

MATLAB 2 次元逆コサイン変換:周波数データからイメージを復元

逆コサイン変換は、ICT または IDCT と呼ばれることが多く、コサイン変換のプロセスを逆にする数学演算です。これは、信号や画像を周波数領域表現から再構築するための信号および画像処理に特に役立ちます。

2-D 信号または画像のコンテキストでは、2-D 逆コサイン変換 (2-D ICT または 2-D IDCT) は、コサイン係数の行列 (信号または画像の周波数成分を表す) を空間領域に変換し、元の信号または画像を生成します。

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

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

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

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

構文

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

構文の説明

B =idct2(A) − 行列 A の 2 次元逆離散コサイン変換 (IDCT) を計算し、結果を行列 B に返します。この演算により、A の周波数領域表現から空間領域画像が効果的に再構築されます。

B =idct2(A, m,n) − 行列 A の 2 次元逆離散コサイン変換 (IDCT) を計算し、出力行列 B のサイズを m 行 n 列として指定します。この操作は、A の周波数領域表現から空間領域画像を効果的に再構築し、指定された m 行 n 列の次元にサイズ変更します。

B =idct2(A, [m,n]) − 行列 A の 2 次元逆離散コサイン変換 (IDCT) を計算し、出力行列 B のサイズを m 行 n 列に変更します。この操作は、A の周波数領域表現から空間領域画像を再構築し、指定された次元 [m n] にサイズ変更します。

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

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

例では -

実行時に得られる出力は -

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

この例では、-

実行時の出力は -

例 3:2 次元逆離散コサイン変換 (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);

この例では、4x4 サンプル行列 A を作成します。次に、2 次元 IDCT を A に適用し、結果のサイズを 3x2 行列 [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-コマンド
  4. MATLAB-関数
  5. MATLAB-統合
  6. MATLAB OOP をマスターする:クラスとオブジェクトを使用して堅牢で再利用可能なコードを構築する
  7. MATLAB - ベクトル
  8. MATLAB-プロット
  9. MATLAB-微積分
  10. MATLAB - データ型
  11. MATLAB での数式の視覚化:2D および 3D プロット ガイド