Discrete Cosine Transform

1 개요

이미지의 이산 웨이블릿 변환을 연산하는 알고리즘입니다.

2 알고리즘 상세 설명

DWT(이산 웨이블릿 변환)은 웨이블릿이 이산적으로 샘플링되는 모든 웨이블릿 변환입니다.
푸리에 변환에 비해 시간적 해상도가 있는 것이 주요 장점입니다.
주파수와 위치 정보(시간 내 위치)를 모두 포착합니다.
각 단계 별 Approximation, Horizontal Detail, Vertical Detail, Diagonal Detail 을 별도의 페이지로 출력합니다.
이미지 크기와 기저 함수의 길이에 따라 여러 단계의 분해 단계 연산을 지원합니다.
FLImaging® View 에서 출력 시 Normalize 한 형태로 출력됩니다.
N채널 8비트 이상 이미지 연산만 지원합니다.
해당 알고리즘은 NVIDIA Cuda 연산을 지원하기 때문에, NVIDIA Cuda 가 사용 가능한 환경에서 더 빠른 연산을 수행할 수 있습니다.

Source Image Approximation Image Horizontal Detail Image Vertical Detail Image Diagonal Detail Image
Source Image Approximation Image Horizontal Detail Image Vertical Detail Image Diagonal Detail Image
Fig. Discrete Wavelet Transform 동작 실행

3 파라미터 설정 및 사용 방법

멤버함수 파라미터 설 명
SetResultType EFloatingPointAccuracy eResultType IN 이미지 결과 타입

이미지 결과 타입을 설정합니다. EFloatingPointAccuracy_Bit32 로 설정 시 결과 이미지는 float 이미지로 생성되고, EFloatingPointAccuracy_Bit64 로 설정 시 결과 이미지는 double 이미지로 생성됩니다.
eResultType - Default Value: EFloatingPointAccuracy_Bit32

멤버함수 파라미터 설 명
EnableReconstructionMode bool bReconstructionMode IN 복원 모드

복원 모드를 설정합니다. Discrete Wavelet Transform 으로 분해한 이미지를 복원합니다.
bReconstruction - Default Value: false

멤버함수 파라미터 설 명
SetBasisFunction EBasisFunction eBasisFunction IN 기저 함수

Discrete Wavelet Transform 에 사용할 기저 함수를 설정합니다.
eBasisFunction - Default Value: EBasisFunction_Haar

멤버함수 파라미터 설 명
SetDecompositionLevel int64_t i64DecompositionLevel IN 분해 단계

분해 단계를 설정합니다. 이미지 크기와 기저 함수의 길이에 따라 최대 분해 단계가 제한됩니다.
i64DecompositionLevel - Default Value: 1

4 예제 코드

CDiscreteWaveletTransform DiscreteWaveletTransform;

CFLImage fliSourceImage;
DiscreteWaveletTransform.SetSourceImage(fliSourceImage);

CFLImage fliDestinationImage;
DiscreteWaveletTransform.SetDestinationImage(fliDestinationImage);

DiscreteWaveletTransform.SetResultType(EFloatingPointAccuracy::EFloatingPointAccuracy_Bit32);

DiscreteWaveletTransform.SetBasisFunction(CDiscreteWaveletTransform::EBasisFunction_Haar);

DiscreteWaveletTransform.SetDecompositionLevel(1);

DiscreteWaveletTransform.Execute();
CDiscreteWaveletTransform DiscreteWaveletTransform = new CDiscreteWaveletTransform();

CFLImage fliSourceImage = new CFLImage();
DiscreteWaveletTransform.SetSourceImage(ref fliSourceImage);

CFLImage fliDestinationImage = new CFLImage();
DiscreteWaveletTransform.SetDestinationImage(ref fliDestinationImage);

DiscreteWaveletTransform.SetResultType(EFloatingPointAccuracy.Bit32);

DiscreteWaveletTransform.SetBasisFunction(CDiscreteWaveletTransform.EBasisFunction.Haar);

DiscreteWaveletTransform.SetDecompositionLevel(1);

DiscreteWaveletTransform.Execute();