Main Content

dct2

2차원 이산 코사인 변환

설명

예제

B = dct2(A)A에 대한 2차원 이산 코사인 변환을 반환합니다. 행렬 B에 이산 코사인 변환 계수 B(k1,k2)가 있습니다.

B = dct2(A,m,n)

B = dct2(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차원 숫자형 행렬로 지정됩니다.

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

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

출력 인수

모두 축소

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

데이터형: double

세부 정보

모두 축소

이산 코사인 변환

이산 코사인 변환(DCT)은 이산 푸리에 변환과 밀접한 관련이 있습니다. 이 변환은 분리 가능한 선형 변환입니다. 즉, 이 2차원 변환은 하나의 차원에서 1차원 DCT를 수행한 후에 나머지 차원에서 1차원 DCT를 수행한 것과 같습니다. 입력 영상 A와 출력 영상 B에 대한 2차원 DCT는 다음과 같이 정의됩니다.

Bpq=αpαqm=0M1n=0N1Amncosπ(2m+1)p2Mcosπ(2n+1)q2N, 0pM10qN1

여기서

αp={1M, p=0           2M, 1pM-1

αq={1N, q=0          2N, 1qN-1

MN은 각각 A의 행 크기와 열 크기입니다.

  • 실수 데이터에 DCT를 적용하면 결과도 실수가 됩니다. DCT는 정보가 집중되는 경향이 있으므로 영상 압축 응용 분야에서 유용하게 사용됩니다.

  • DCT 변환의 역을 구하려면 idct2를 사용하십시오.

참고 문헌

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

[2] Pennebaker, William B., and Joan L. Mitchell, JPEG: Still Image Data Compression Standard, Van Nostrand Reinhold, 1993.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

| |