BitShift
1.1.1 개요
스칼라 또는 이미지와의 BitShift 연산을 수행하는 알고리즘입니다. 이미지 픽셀 값을 스칼라 또는 대응되는 이미지 픽셀 값만큼 정한 방향으로 비트를 이동시킵니다.
1.1.2 알고리즘 상세 설명
Source | Scalar Value : (3, 5, 2) |
---|---|
Result | |
![]() |
![]() |
Fig. Scalar 값(3, 5, 2)에 따른 결과(방향 오른쪽)
Source | ||
---|---|---|
Operand | Result | |
![]() |
![]() |
![]() |
Fig. Image 값에 따른 결과(방향 오른쪽)
3 파라미터 설정 및 사용 방법
-
방향 설정
- API
const CResult SetShiftDirection(EShiftDirection eShiftDirection = EShiftDirection_Left)
- Shift 방향을 설정합니다. 기본 값 : EShiftDirection_Left
- 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>);
-
예제 코드
COperationBitShift BitShift; CFLImage fliSourceImage; CFLImage fliDestinationImage; // 지정된 경로에서 이미지 로드 if(fliSourceImage.Load(L"../../ExampleImages/OperationShift/Flower.flif").IsFail()) break; BitShift.SetSourceImage(fliSourceImage); BitShift.SetDestinationImage(fliDestinationImage); // 연산 방식 설정 BitShift.SetOperationSource(ImageProcessing::EOperationSource_Scalar); // Shift 방향 설정 BitShift.SetShiftDirection(COperationBitShift::EShiftDirection_Right); // 스칼라 값 설정 CMultiVar<double> mvScalar(3.000000, 5.000000, 2.000000); BitShift.SetScalarValue(mvScalar); // 알고리즘 수행 if(BitShift.Execute().IsFail()) break; // 수행된 결과 이미지를 저장 if(fliDestinationImage.Save(L"../../ExampleImages/OperationShift/Result.flif").IsFail()) break;
-
-
이미지 연산 설정
-
Operand 이미지를 설정합니다.
-
API
SetOperandImage(Base::CFLImage);
-
예제 코드
COperationBitShift BitShift; CFLImage fliSourceImage; CFLImage fliOperandImage; CFLImage fliDestinationImage; // 지정된 경로에서 이미지 로드 if(fliSourceImage.Load(L"../../ExampleImages/OperationShift/Flower.flif").IsFail()) break; if(fliOperandImage.Load(L"../../ExampleImages/OperationShift/Moon.flif").IsFail()) break; BitShift.SetSourceImage(fliSourceImage); // Operand 이미지 설정 BitShift.SetOperandImage(fliOperandImage); BitShift.SetDestinationImage(fliDestinationImage); // 연산 방식 설정 BitShift.SetOperationSource(ImageProcessing::EOperationSource_Image); // Shift 방향 설정 BitShift.SetShiftDirection(COperationBitShift::EShiftDirection_Right); // 알고리즘 수행 if(BitShift.Execute().IsFail()) break; // 수행된 결과 이미지를 저장 if(fliDestinationImage.Save(L"../../ExampleImages/OperationShift/Result.flif").IsFail()) break;
-