Main Content

dwt2

단일 레벨 2차원 이산 웨이블릿 변환

설명

dwt2는 단일 레벨 2차원 웨이블릿 분해를 계산합니다. dwt2를 사용 중인 애플리케이션에 더 유용할 수 있는 wavedec2와 비교합니다. 분해는 특정 웨이블릿(자세한 내용은 wfilters 참조) 또는 특정 웨이블릿 분해 필터에 대해 수행됩니다.

예제

[cA,cH,cV,cD] = dwt2(X,wname)wname 웨이블릿을 사용하여 입력값 데이터 X의 단일 레벨 2차원 이산 웨이블릿 변환을 계산합니다. dwt2는 근사 계수 행렬 cA와 세부성분 계수 행렬 cH, cVcD(각각 가로, 세로 및 대각선)을 반환합니다.

예제

[cA,cH,cV,cD] = dwt2(X,LoD,HiD)는 웨이블릿 분해 저역통과 필터 LoD와 고역통과 필터 HiD를 사용하여 단일 레벨 2차원 DWT를 계산합니다. 분해 필터는 길이가 같아야 하고 짝수 개의 샘플을 가져야 합니다.

[cA,cH,cV,cD] = dwt2(___,'mode',extmode)는 확장 모드 extmode를 사용하여 단일 레벨 2차원 DWT를 계산합니다. 이 인수는 다른 모든 인수 뒤에 포함시켜야 합니다.

참고

gpuArray 입력값에 지원되는 모드는 'symh'('sym') 및 'per'입니다. 'per'을 제외한 모든 'mode' 옵션은 'symh'로 변환됩니다. GPU에서 단일 레벨 2차원 이산 웨이블릿 변환 예제를 참조하십시오.

예제

모두 축소

영상을 불러와서 표시합니다.

load woman
imagesc(X)
colormap(map)

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

차수 4 symlet과 주기적 확장을 사용하여 영상의 단일 레벨 2차원 이산 웨이블릿 변환을 구합니다.

[cA,cH,cV,cD] = dwt2(X,'sym4','mode','per');

세로 세부성분 계수와 근사 계수를 표시합니다.

imagesc(cV)
title('Vertical Detail Coefficients')

Figure contains an axes object. The axes object with title Vertical Detail Coefficients contains an object of type image.

imagesc(cA)
title('Approximation Coefficients')

Figure contains an axes object. The axes object with title Approximation Coefficients contains an object of type image.

영상을 불러와서 표시합니다.

load sculpture
imagesc(X)
colormap gray

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

Haar 웨이블릿에 대한 저역통과 및 고역통과 분해 필터를 생성합니다.

[LoD,HiD] = wfilters('haar','d');

필터를 사용하여 단일 레벨 2차원 웨이블릿 분해를 수행합니다. 반점 대칭 확장을 사용합니다. 근사 계수 및 세부성분 계수를 표시합니다.

[cA,cH,cV,cD] = dwt2(X,LoD,HiD,'mode','symh');
subplot(2,2,1)
imagesc(cA)
colormap gray
title('Approximation')
subplot(2,2,2)
imagesc(cH)
colormap gray
title('Horizontal')
subplot(2,2,3)
imagesc(cV)
colormap gray
title('Vertical')
subplot(2,2,4)
imagesc(cD)
colormap gray
title('Diagonal')

Figure contains 4 axes objects. Axes object 1 with title Approximation contains an object of type image. Axes object 2 with title Horizontal contains an object of type image. Axes object 3 with title Vertical contains an object of type image. Axes object 4 with title Diagonal contains an object of type image.

지원되는 GPU를 보려면 GPU 연산 요구 사항 (Parallel Computing Toolbox) 항목을 참조하십시오.

영상을 불러옵니다. gpuArray를 사용하여 GPU에 영상을 놓습니다. 현재 확장 모드를 저장합니다.

load mask
imgg = gpuArray(X);
origMode = dwtmode('status','nodisp');

dwtmode를 사용하여 확장 모드를 0 채우기로 변경합니다. db2 웨이블릿을 사용하여 GPU에서 영상의 단일 레벨 2차원 DWT를 구합니다.

dwtmode('zpd','nodisp')
[cA,cH,cV,cD] = dwt2(imgg,'db2');

현재 확장 모드 zpdgpuArray 입력값에서 지원되지 않습니다. 따라서 DWT는 대신 sym 확장 모드를 사용하여 수행됩니다. 확장 모드를 sym으로 설정하고 imgg의 DWT를 수행하여 이를 확인한 다음 이전 결과와 비교합니다.

[cAsym,cHsym,cVsym,cDsym] = dwt2(imgg,'db2','mode','sym');
[max(abs(cA(:)-cAsym(:))) max(abs(cH(:)-cHsym(:))) ...
    max(abs(cV(:)-cVsym(:))) max(abs(cD(:)-cDsym(:)))]
ans =

     0     0     0     0

지원되지 않는 확장 모드가 입력 인수로 지정된 경우 'sym'으로 변환됩니다. 'mode'를 지원되지 않는 모드로 설정한 상태로 imgg의 DWT를 수행할 경우에도 기본적으로 sym 확장 모드로 설정되는지 확인합니다.

[cA,cH,cV,cD] = dwt2(imgg,'db2','mode','spd');
[max(abs(cA(:)-cAsym(:))) max(abs(cH(:)-cHsym(:))) ...
    max(abs(cV(:)-cVsym(:))) max(abs(cD(:)-cDsym(:)))]
ans =

     0     0     0     0

현재 확장 모드를 주기적 확장으로 변경합니다. db2 웨이블릿을 사용하여 GPU에서 영상의 단일 레벨 DWT를 구합니다.

dwtmode('per','nodisp')
[cA,cH,cV,cD] = dwt2(imgg,'db2');

현재 확장 모드 pergpuArray 입력값에서 지원되는지 확인합니다.

[cAper,cHper,cVper,cDper] = dwt2(imgg,'db2','mode','per');
[max(abs(cA(:)-cAper(:))) max(abs(cH(:)-cHper(:))) ...
    max(abs(cV(:)-cVper(:))) max(abs(cD(:)-cDper(:)))]
ans =

     0     0     0     0

확장 모드를 원래 설정으로 복원합니다.

dwtmode(origMode,'nodisp')

입력 인수

모두 축소

입력 데이터로, 숫자형 배열 또는 논리형 배열로 지정됩니다. X는 인덱스 영상을 나타내는 m×n 배열 또는 트루컬러 영상을 나타내는 m×n×3 배열일 수 있습니다. 트루컬러 영상에 대한 자세한 내용은 이미지 유형 항목을 참조하십시오.

데이터형: double | single | uint8

2차원 DWT를 계산하는 데 사용되는 분석 웨이블릿으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 분석 웨이블릿은 다음 웨이블릿 패밀리 중 하나에 속해 있습니다: 최선 국소화 Daubechies, Beylkin, Coiflets, Daubechies, Fejér-Korovkin, Haar, Han 선형 위상 모멘트, Morris 최소 대역폭, Symlets, Vaidyanathan, 이산 Meyer, 쌍직교 및 역 쌍직교. 각 패밀리에서 사용 가능한 웨이블릿을 보려면 wfilters 항목을 참조하십시오.

데이터형: char | string

웨이블릿 분해 저역통과 필터로, 짝수 길이 실수 값 벡터로 지정됩니다. LoDHiD와 길이가 동일해야 합니다.

데이터형: double | single

웨이블릿 분해 고역통과 필터로, 짝수 길이 실수 값 벡터로 지정됩니다. HiDLoD와 길이가 동일해야 합니다.

데이터형: double | single

DWT를 수행할 때 사용되는 확장 모드로, 다음 중 하나로 지정됩니다.

mode

DWT 확장 모드

'zpd'

0 확장

'sp0'

차수 0 평활화 확장

'spd'(또는 'sp1')

차수 1 평활화 확장

'sym' 또는 'symh'

대칭 확장(반점): 경계값 대칭 복제

'symw'

대칭 확장(온점): 경계값 대칭 복제

'asym' 또는 'asymh'

반대칭 확장(반점): 경계값 반대칭 복제

'asymw'

반대칭 확장(온점): 경계값 반대칭 복제

'ppd'

주기적 확장 (1)

'per'

주기적 확장 (2)

신호 길이가 홀수인 경우 wextend는 마지막 값과 같은 추가 샘플을 오른쪽에 추가하고 'ppd' 모드를 사용하여 확장을 수행합니다. 그렇지 않으면 'per''ppd'로 축소됩니다. 이 규칙은 영상에도 적용됩니다.

dwtmode에 의해 관리되는 전역 변수는 디폴트 확장 모드를 지정합니다.

예: [cA,cH,cV,cD] = dwt2(x,'db4','mode','symw');

출력 인수

모두 축소

근사 계수로, 배열로 반환되며 배열의 크기는 X를 따릅니다. sx = size(X)라고 하고, lf = 분해 필터의 길이라고 하겠습니다.

  • DWT 확장 모드가 주기화로 설정된 경우 이 출력값의 크기는 ceil(sx/2)입니다.

  • 다른 확장 모드의 경우 이 출력값의 크기는 floor((sx+lf-1)/2)입니다.

데이터형: double

가로 세부성분 계수로, 배열로 반환되며 배열의 크기는 X를 따릅니다. sx = size(X)라고 하고, lf = 분해 필터의 길이라고 하겠습니다.

  • DWT 확장 모드가 주기화로 설정된 경우 이 출력값의 크기는 ceil(sx/2)입니다.

  • 다른 확장 모드의 경우 이 출력값의 크기는 floor((sx+lf-1)/2)입니다.

데이터형: double

세로 세부성분 계수로, 배열로 반환되며 배열의 크기는 X를 따릅니다. sx = size(X)라고 하고, lf = 분해 필터의 길이라고 하겠습니다.

  • DWT 확장 모드가 주기화로 설정된 경우 이 출력값의 크기는 ceil(sx/2)입니다.

  • 다른 확장 모드의 경우 이 출력값의 크기는 floor((sx+lf-1)/2)입니다.

데이터형: double

대각 세부성분 계수로, 배열로 반환되며 배열의 크기는 X를 따릅니다. sx = size(X)라고 하고, lf =분해 필터의 길이라고 하겠습니다.

  • DWT 확장 모드가 주기화로 설정된 경우 이 출력값의 크기는 ceil(sx/2)입니다.

  • 다른 확장 모드의 경우 이 출력값의 크기는 floor((sx+lf-1)/2)입니다.

데이터형: double

알고리즘

영상에 대한 2차원 웨이블릿 분해 알고리즘은 1차원의 경우와 유사합니다. 2차원 웨이블릿과 스케일링 함수는 1차원 웨이블릿과 스케일링 함수의 텐서 곱을 수행하여 구합니다. 이 종류의 2차원 DWT는 레벨 j에서 근사 계수를 네 성분으로 분해합니다. 즉, 레벨 j + 1에서의 근사와 세 방향(가로, 세로 및 대각선)의 세부성분으로 분해합니다. 다음 차트는 영상에 대한 기본적인 분해 단계를 설명합니다.

여기서

  • — 열 다운샘플링: 짝수 인덱스 열 유지

  • — 행 다운샘플링: 짝수 인덱스 행 유지

  • — 필터 X로 항목의 행 컨벌루션

  • — 필터 X로 항목의 열 컨벌루션

근사 계수를 영상 s와 같도록 설정하면(cA0 = s) 분해가 초기화됩니다.

참고

컨벌루션 기반 알고리즘에서 발생하는 신호쪽 영향을 처리하기 위해, 1차원 및 2차원 DWT는 dwtmode에 의해 관리되는 전역 변수를 사용합니다. 이 변수는 사용되는 신호 확장 모드의 종류를 정의합니다. 가능한 옵션에는 0 채우기 및 대칭 확장(디폴트 모드)이 포함됩니다.

참고 문헌

[1] Daubechies, Ingrid. Ten Lectures on Wavelets. CBMS-NSF Regional Conference Series in Applied Mathematics 61. Philadelphia, Pa: Society for Industrial and Applied Mathematics, 1992.

[2] Mallat, S.G. “A Theory for Multiresolution Signal Decomposition: The Wavelet Representation.” IEEE Transactions on Pattern Analysis and Machine Intelligence 11, no. 7 (July 1989): 674–93. https://doi.org/10.1109/34.192463.

[3] Meyer, Y. Wavelets and Operators. Translated by D. H. Salinger. Cambridge, UK: Cambridge University Press, 1995.

확장 기능

버전 내역

R2006a 이전에 개발됨