Main Content

idct2

2차원 이산 코사인 역변환

설명

예제

B = idct2(A)A에 대한 2차원 이산 코사인 역변환을 반환합니다.

B = idct2(A,m,n)

B = idct2(A,[m n])은 행렬 A의 크기가 m×n이 되도록 0으로 채우거나 자른 후에 역변환을 적용합니다.

예제

모두 축소

영상을 작업 공간으로 읽어 들인 후 영상을 회색조 영상으로 변환합니다.

RGB = imread('autumn.tif');
I = im2gray(RGB);

dct2 함수를 사용하여 회색조 영상에 대해 2차원 DCT를 수행합니다.

J = dct2(I);

변환된 영상을 로그 스케일을 사용하여 표시합니다. 대부분의 에너지가 왼쪽 위 코너에 집중된 것을 볼 수 있습니다.

imshow(log(abs(J)),[])
colormap parula
colorbar

Figure contains an axes object. The axes object contains an object of type image.

DCT 행렬에서 크기가 10보다 작은 값을 0으로 설정합니다.

J(abs(J) < 10) = 0;

역 DCT 함수 idct2를 사용하여 영상을 재생성합니다. 이 값을 double 데이터형 영상에서 요구되는 범위인 [0 1]로 다시 스케일링합니다.

K = idct2(J);
K = rescale(K);

원본 회색조 영상 옆에 처리된 영상을 함께 표시합니다. 처리된 영상에서는 나무의 질감에서 볼 수 있듯이 고주파 세부 정보가 줄어들었습니다.

montage({I,K})
title('Original Grayscale Image (Left) and Processed Image (Right)');

Figure contains an axes object. The axes object with title Original Grayscale Image (Left) and Processed Image (Right) contains an object of type image.

입력 인수

모두 축소

입력 행렬로, 2차원 숫자형 행렬로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

영상의 행 개수로, 양의 정수로 지정됩니다. idct2는 영상 Am개의 행을 갖도록 A0으로 채우거나 잘라냅니다. 기본적으로 msize(A,1)과 같습니다.

영상의 열 개수로, 양의 정수로 지정됩니다. idct2는 영상 An개의 열을 갖도록 A0으로 채우거나 잘라냅니다. 기본적으로 nsize(A,2)와 같습니다.

출력 인수

모두 축소

2차원 이산 코사인 변환을 사용하여 변환된 행렬로, m×n 숫자형 행렬로 반환됩니다.

데이터형: double

  • 어떤 행렬 A에서든 idct2(dct2(A))A와 반올림 오차 범위 내에서 같습니다.

알고리즘

idct2는 다음을 사용하여 2차원 역 DCT를 계산합니다.

Amn=p=0M1q=0N1αpαqBpqcosπ(2m+1)p2Mcosπ(2n+1)q2N, 0mM10nN1,

여기서

αp={1M, p=0             2M, 1pM1

αq={1N, q=0            2N, 1qN1.

참고 문헌

[1] Jain, A. K., Fundamentals of Digital Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1989, pp. 150-153.

[2] Pennebaker, W. B., and J. L. Mitchell, JPEG: Still Image Data Compression Standard, New York, Van Nostrand Reinhold, 1993.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

| | |