Convolution FD

1 개요

이미지 Convolution 연산을 수행하는 알고리즘입니다. 원본 이미지와 연산할 이미지를 주파수 도메인에서 Convolution 연산하여 대상 이미지로 출력합니다.

2 알고리즘 상세 설명

주파수 도메인에서 합성곱은 두 이미지 간 곱으로 변환됩니다. 해당 방식을 이용햐여 푸리에 변환을 통해 이미지와 필터를 주파수 도메인으로 변환한 후, 각 주파수 성분을 곱하고 다시 역푸리에 변환하여 결과 이미지를 얻는 방식으로 이루어집니다.
오퍼랜드 이미지로 필터를 입력하거나, 필터 생성기를 이용하여 필터를 생성 후 연산할 수 있습니다.

Source Operand Result
Source Operand Result
Fig. Convolution FD 예제 결과

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

멤버함수 파라미터 설 명
SetFilterGenerator CFilterGeneratorBaseFD filterGeneratorBaseFD IN 필터 생성 알고리즘을 설정합니다.

4 예제 코드

Operand 이미지 연산

CConvolutionFD convolutionFD;

CFLImage fliSourceImage;
CFLImage fliOperandImage;
CFLImage fliDestinationImage;

convolutionFD.SetSourceImage(fliSourceImage);
convolutionFD.SetOperandImage(fliOperandImage);
convolutionFD.SetDestinationImage(fliDestinationImage);

convolutionFD.Execute();
CConvolutionFD convolutionFD = new CConvolutionFD();

CFLImage fliSourceImage = new CFLImage();
CFLImage fliOperandImage = new CFLImage();
CFLImage fliDestinationImage = new CFLImage();

convolutionFD.SetSourceImage(ref fliSourceImage);
convolutionFD.SetOperandImage(ref fliOperandImage);
convolutionFD.SetDestinationImage(ref fliDestinationImage);

convolutionFD.Execute();
convolutionFD = CConvolutionFD()

fliSourceImage = CFLImage()
fliOperandImage = CFLImage()
fliDestinationImage = CFLImage()

convolutionFD.SetSourceImage(fliSourceImage)
convolutionFD.SetOperandImage(fliOperandImage)
convolutionFD.SetDestinationImage(fliDestinationImage)

convolutionFD.Execute()

Filter Generator 연산

CConvolutionFD convolutionFD;

CFLImage fliSourceImage;
CFLImage fliDestinationImage;

convolutionFD.SetSourceImage(fliSourceImage);
convolutionFD.SetDestinationImage(fliDestinationImage);

CFilterGeneratorGaussFD filterGeneratorGaussFD;
convolutionFD.SetFilterGenerator(filterGeneratorGaussFD);

convolutionFD.Execute();
CConvolutionFD convolutionFD = new CConvolutionFD();

CFLImage fliSourceImage = new CFLImage();
CFLImage fliDestinationImage = new CFLImage();

convolutionFD.SetSourceImage(ref fliSourceImage);
convolutionFD.SetDestinationImage(ref fliDestinationImage);

CFilterGeneratorGaussFD filterGeneratorGaussFD = new CFilterGeneratorGaussFD();
CFilterGeneratorBaseFD filterGeneratorBaseFD = filterGeneratorGaussFD;
convolutionFD.SetFilterGenerator(filterGeneratorBaseFD);

convolutionFD.Execute();
convolutionFD = CConvolutionFD()

fliSourceImage = CFLImage()
fliDestinationImage = CFLImage()

convolutionFD.SetSourceImage(fliSourceImage)
convolutionFD.SetDestinationImage(fliDestinationImage)

filterGeneratorGaussFD = CFilterGeneratorGaussFD()
filterGeneratorBaseFD = filterGeneratorGaussFD
convolutionFD.SetFilterGenerator(filterGeneratorBaseFD)

convolutionFD.Execute()