Divide
1 개요
스칼라 또는 이미지와의 나누기 연산을 수행하는 알고리즘입니다. 결과는 반올림 처리 되어 출력됩니다.
2 알고리즘 상세 설명
Source | Scalar Value : (3, 5, 2) |
---|---|
Result | |
![]() |
![]() |
Fig. Scalar 값(3, 5, 2)에 따른 결과
Source | ||
---|---|---|
Operand | Result | |
![]() |
![]() |
![]() |
Fig. Image 값에 따른 결과
3 파라미터 설정 및 사용 방법
-
오버플로우 처리 방법 설정
- API
const CResult SetOverflowMethod(EOverflowMethod eOverflowMethod = EOverflowMethod_Clamping)
- 오버플로우 처리 방법을 설정합니다. 기본 값 : EOverflowMethod_Clamping
- EOverflowMethod_Clamping
- 자료형의 표현 가능한 범위를 넘어서면 표현 가능한 범위만큼의 값으로 설정됩니다.
- EOverflowMethod_Wrapping
- 표현 가능한 범위를 넘어섰을 때 별도의 처리를 하지 않습니다.
- API
-
스칼라 연산 설정
-
Source 픽셀의 각 채널에 대해 Scalar 연산을 수행할 Scalar 값을 설정합니다.
-
API
SetScalarValue(Base::CMultiVar<double>); SetScalarValue(Base::CMultiVar<float>); SetScalarValue(Base::CMultiVar<int64_t>); SetScalarValue(Base::CMultiVar<int32_t>); SetScalarValue(Base::CMultiVar<uint32_t>); SetScalarValue(Base::CMultiVar<uint64_t>);
-
예제 코드
COperationDivide Divide; CFLImage fliSourceImage; CFLImage fliDestinationImage; // 지정된 경로에서 이미지 로드 if(fliSourceImage.Load(L"../../ExampleImages/OperationDivide/FlowerWall.flif").IsFail()) break; Divide.SetSourceImage(fliSourceImage); Divide.SetDestinationImage(fliDestinationImage); // 스칼라 값 설정 CMultiVar<double> mvScalar(3.000000, 5.000000, 2.000000); // 연산 방식 설정 Divide.SetOperationSource(ImageProcessing::EOperationSource_Scalar); Divide.SetScalarValue(mvScalar); // 오버플로우 방법 설정 Divide.SetOverflowMethod(EOverflowMethod_Clamping); // 알고리즘 수행 if(Divide.Execute().IsFail()) break; // 수행된 결과 이미지를 저장 if(fliDestinationImage.Save(L"../../ExampleImages/OperationDivide/Result.flif").IsFail()) break;
-
-
이미지 연산 설정
-
Operand 이미지를 설정합니다.
-
API
SetOperandImage(Base::CFLImage);
-
예제 코드
COperationDivide Divide; CFLImage fliSourceImage; CFLImage fliOperandImage; CFLImage fliDestinationImage; // 지정된 경로에서 이미지 로드 if(fliSourceImage.Load(L"../../ExampleImages/OperationDivide/FlowerWall.flif").IsFail()) break; if(fliOperandImage.Load(L"../../ExampleImages/OperationDivide/Moon.flif").IsFail()) break; Divide.SetSourceImage(fliSourceImage); // Operand 이미지 설정 Divide.SetOperandImage(fliOperandImage); Divide.SetDestinationImage(fliDestinationImage); // 연산 방식 설정 Divide.SetOperationSource(ImageProcessing::EOperationSource_Image); // 오버플로우 방법 설정 Divide.SetOverflowMethod(EOverflowMethod_Clamping); // 알고리즘 수행 if(Divide.Execute().IsFail()) break; // 수행된 결과 이미지를 저장 if(fliDestinationImage.Save(L"../../ExampleImages/OperationDivide/Result.flif").IsFail()) break;
-