산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> MATLAB

MATLAB 2차원 역코사인 변환:주파수 데이터에서 이미지 복원

종종 ICT 또는 IDCT로 표시되는 역 코사인 변환은 코사인 변환 프로세스를 역전시키는 수학적 연산입니다. 이는 주파수 영역 표현에서 신호나 이미지를 재구성하기 위한 신호 및 이미지 처리에 특히 유용합니다.

2D 신호 또는 이미지의 맥락에서 2D 역코사인 변환(2-D ICT 또는 2-D IDCT)은 코사인 계수 행렬(신호 또는 이미지의 주파수 성분을 나타냄)을 다시 공간 영역으로 변환하여 원래 신호 또는 이미지를 생성합니다.

MATLAB의 2차원 역코사인 변환은 코사인 값의 행렬을 공간 영역 이미지로 변환하는 데 사용됩니다. 이는 2D 코사인 변환의 역연산이며 일반적으로 이미지 처리 및 압축에 사용됩니다. idct2 함수는 MATLAB에서 2차원 역코사인 변환을 수행하는 데 사용됩니다.

2차원 역이산 코사인 변환

In MATLAB, the idct2 function is used to perform the 2-D Inverse Cosine Transform. 코사인 계수 행렬을 입력으로 사용하고 신호 또는 이미지의 공간 영역 표현을 반환합니다. 그 결과 표시되거나 추가 처리가 가능한 재구성된 이미지가 생성됩니다.

역코사인 변환은 이미지 압축(예: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의 크기를 mxn으로 지정합니다. 이 작업은 A의 주파수 영역 표현에서 공간 영역 이미지를 효과적으로 재구성하여 지정된 차원 mxn으로 크기를 조정합니다.

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

In the example −

실행 시 우리가 얻는 출력은 다음과 같습니다. -

예 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 - 데이터 유형
  7. MATLAB - 플로팅
  8. MATLAB - 미분
  9. MATLAB - 루프 유형
  10. MATLAB - 기본 구문