BitRollingLeft
1 개요
스칼라 또는 이미지와의 BitRollingLeft 연산을 수행하는 알고리즘입니다. 이미지 픽셀 값을 스칼라 또는 대응되는 이미지 픽셀 값만큼 왼쪽 방향으로 비트를 롤링시킵니다.
2 알고리즘 상세 설명
Source | Scalar Value : (3, 5, 2) |
---|---|
Result | |
![]() |
![]() |
Fig. Scalar 값에 따른 결과 비교
Source | ||
---|---|---|
Operand | Result | |
![]() |
![]() |
![]() |
Fig. Image 값에 따른 결과 비교
BitRollingLeft 알고리즘은 각 채널에 대해 BitRollingLeft 연산을 수행합니다. 스칼라 연산과 이미지 연산을 지원합니다.
3 파라미터 설정 및 사용 방법
-
Term Order 설정
- Term Order를 설정합니다.
- API
SetTermOrder(ETermOrder);
- 기본 값
- ETermOrder_SourceOperand
- ETermOrder_SourceOperand 설정 시 일반적인 동작 ETermOrder_OperandSource 설정 시 Operand가 Source가 되고 Source가 Operand가 된 채로 연산됩니다.
-
스칼라 연산 설정
-
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>);
-
예제 코드
COperationBitRollingLeft BitRollingLeft; CFLImage fliSourceImage; CFLImage fliDestinationImage; // 지정된 경로에서 이미지 로드 if(fliSourceImage.Load(L"../../ExampleImages/OperationBitRolling/wave.flif").IsFail()) break; BitRollingLeft.SetSourceImage(fliSourceImage); BitRollingLeft.SetDestinationImage(fliDestinationImage); // 연산 방식 설정 BitRollingLeft.SetOperationSource(EOperationSource_Scalar); // 스칼라 값 설정 CMultiVar<double> mvScalar(3.000000, 5.000000, 2.000000); BitRollingLeft.SetScalarValue(mvScalar); // 알고리즘 수행 if(BitRollingLeft.Execute().IsFail()) break; // 수행된 결과 이미지를 저장 if(fliDestinationImage.Save(L"../../ExampleImages/OperationBitRolling/Result.flif").IsFail()) break;
-
-
이미지 연산 설정
-
Operand 이미지를 설정합니다.
-
API
SetOperandImage(Base::CFLImage);
-
예제 코드
COperationBitRollingLeft BitRollingLeft; CFLImage fliSourceImage; CFLImage fliOperandImage; CFLImage fliDestinationImage; // 지정된 경로에서 이미지 로드 if(fliSourceImage.Load(L"../../ExampleImages/OperationBitRolling/wave.flif").IsFail()) break; if(fliOperandImage.Load(L"../../ExampleImages/OperationBitRolling/wave.flif").IsFail()) break; BitRollingLeft.SetSourceImage(fliSourceImage); // Operand 이미지 설정 BitRollingLeft.SetOperandImage(fliOperandImage); BitRollingLeft.SetDestinationImage(fliDestinationImage); // Operation 방식 설정 BitRollingLeft.SetOperationSource(EOperationSource_Image); // 알고리즘 수행 if(BitRollingLeft.Execute().IsFail()) break; // 수행된 결과 이미지를 저장 if(fliDestinationImage.Save(L"../../ExampleImages/OperationBitRolling/Result.flif").IsFail()) break;
-