이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

dct2

2차원 이산 코사인 변환

설명

예제

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

B = dct2(A,m,n)

B = dct2(A,[m n])은 행렬 A의 크기가 mxn이 되도록 0을 채운 후에 변환을 적용합니다. m 또는 nA의 대응되는 차원보다 작은 경우 dct2A를 자른 후에 변환을 수행합니다.

예제

모두 축소

이 예제에서는 2차원 이산 코사인 변환(DCT)을 사용하여 영상에서 고주파를 제거하는 방법을 다룹니다.

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

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

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

J = dct2(I);

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

figure
imshow(log(abs(J)),[])
colormap(gca,jet(64))
colorbar

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

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

역 DCT 함수 idct2를 사용하여 영상을 재생성합니다.

K = idct2(J);

원본 회색조 영상 옆에 처리된 영상을 함께 표시합니다.

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

입력 인수

모두 축소

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

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

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

출력 인수

모두 축소

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

데이터형: 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 이전에 개발됨