Signed Square Difference
1 개요
스칼라 또는 이미지와의 Signed Square Difference 연산을 수행하는 알고리즘입니다. 이미지 픽셀값을 스칼라 또는 대응하는 이미지 픽셀값과의 부호 정보를 보존한 차이의 제곱을 구하는 연산입니다.
2 알고리즘 상세 설명
Source | Scalar Value : (120) |
---|---|
Result | |
![]() |
![]() |
Fig. Scalar 값에 따른 결과 비교 (Wrapping Overflow Method)
Source | ||
---|---|---|
Operand | Result | |
![]() |
![]() |
![]() |
Fig. Image 값에 따른 결과 비교 (Clamping Overflow Method)
Signed Square Difference 알고리즘은 각 채널에 대해 Signed Square Difference 연산을 수행합니다. 스칼라 연산과 이미지 연산을 지원합니다.
3 파라미터 설정 및 사용 방법
-
오버플로우 처리 방법 설정
- API
const CResult SetOverflowMethod(EOverflowMethod eOverflowMethod = EOverflowMethod_Clamping)
- 오버플로우 처리 방법을 설정합니다. 기본 값 : EOverflowMethod_Clamping
- EOverflowMethod_Clamping
- 자료형의 표현 가능한 범위를 넘어서면 표현 가능한 범위만큼의 값으로 설정됩니다.
- EOverflowMethod_Wrapping
- 표현 가능한 범위를 넘어섰을 때 별도의 처리를 하지 않습니다.
- API
-
스칼라 연산 설정
- Source 픽셀의 각 채널에 대해 Scalar 연산을 수행할 Scalar 값을 설정합니다.
- API
SetScalarValue(Base::CMultiVar<double>);
-
이미지 연산 설정
- Operand 이미지를 설정합니다.
- API
SetOperandImage(Base::CFLImage);
4 예제 코드
Scalar 연산
COperationSignedSquareDifference operationSignedSquareDifference;
CFLImage fliSourceImage;
CFLImage fliDestinationImage;
CMultiVar<double> mulVarScalar;
fliSourceImage.Load("../../ExampleImages/OperationSignedSquareDifference/Gradation.flif");
operationSignedSquareDifference.SetSourceImage(fliSourceImage);
operationSignedSquareDifference.SetDestinationImage(fliDestinationImage);
operationSignedSquareDifference.SetOperationSource(EOperationSource_Scalar);
operationSignedSquareDifference.SetScalarValue(mulVarScalar);
operationSignedSquareDifference.SetOverflowMethod(EOverflowMethod_Wrapping);
operationSignedSquareDifference.Execute();
Image 연산
COperationSignedSquareDifference operationSignedSquareDifference;
CFLImage fliSourceImage;
CFLImage fliOperandImage;
CFLImage fliDestinationImage;
fliSourceImage.Load("../../ExampleImages/OperationSignedSquareDifference/Valley1.flif");
fliOperandImage.Load("../../ExampleImages/OperationSignedSquareDifference/Valley2.flif");
operationSignedSquareDifference.SetSourceImage(fliSourceImage);
operationSignedSquareDifference.SetOperandImage(fliOperandImage);
operationSignedSquareDifference.SetDestinationImage(fliDestinationImage);
operationSignedSquareDifference.SetOperationSource(EOperationSource_Image);
operationSignedSquareDifference.SetOverflowMethod(EOverflowMethod_Clamping);
operationSignedSquareDifference.Execute();