Convolution FD
1 개요
이미지 Convolution 연산을 수행하는 알고리즘입니다.
원본 이미지와 연산할 이미지를 주파수 도메인에서 Convolution 연산하여 대상 이미지로 출력합니다.
2 알고리즘 상세 설명
주파수 도메인에서 합성곱은 두 이미지 간 곱으로 변환됩니다. 해당 방식을 이용햐여 푸리에 변환을 통해 이미지와 필터를 주파수 도메인으로 변환한 후, 각 주파수 성분을 곱하고 다시 역푸리에 변환하여 결과 이미지를 얻는 방식으로 이루어집니다.
오퍼랜드 이미지로 필터를 입력하거나, 필터 생성기를 이용하여 필터를 생성 후 연산할 수 있습니다.
지원 포맷
Source 이미지와 Operand 이미지가 FFT 이미지가 아닌 경우 (8 Depth 이상)
Source 이미지와 Operand 이미지 중 하나만 FFT 이미지인 경우
Source 이미지와 Operand 이미지가 FFT 이미지이고, Shift 상태가 같은 경우
Operand 이미지가 FFT인 경우, Original Size가 Source Size와 같아야 합니다.
Fig. Convolution FD 예제 결과
3 파라미터 설정 및 사용 방법
멤버함수
파라미터
설 명
SetFilterGenerator
CFilterGeneratorBaseFD
filterGeneratorBaseFD
IN
필터 생성 알고리즘을 설정합니다.
4 예제 코드
Operand 이미지 연산
C++
C#
Python
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 연산
C++
C#
Python
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()