Modulo

1 개요

스칼라 또는 이미지와의 나머지 연산을 수행하는 알고리즘입니다.

2 알고리즘 상세 설명

Source Scalar Value : (3, 5, 2)
Result
Source Result
Fig. Scalar 값(244, 222, 200)에 따른 결과

Source
Operand Result
Source Operand Operand result
Fig. Image 값에 따른 결과

3 파라미터 설정 및 사용 방법

  1. 스칼라 연산 설정
    • 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>);
      
    • 예제 코드

      COperationModulo Modulo;
      CFLImage fliSourceImage;
      CFLImage fliDestinationImage;
      
      // 지정된 경로에서 이미지 로드
      if(fliSourceImage.Load(L"../../ExampleImages/OperationModulo/Sun.flif").IsFail())
          break;
      
      Modulo.SetSourceImage(fliSourceImage);
      Modulo.SetDestinationImage(fliDestinationImage);
      
      // 연산 방식 설정
      Modulo.SetOperationSource(ImageProcessing::EOperationSource_Scalar);
      // 스칼라 값 설정
      CMultiVar<double> mvScalar(30.000000, 50.000000, 20.000000);
      
      Modulo.SetScalarValue(mvScalar);
      
      // 알고리즘 수행
      if(Modulo.Execute().IsFail())
          break;
      
      // 수행된 결과 이미지를 저장
      if(fliDestinationImage.Save(L"../../ExampleImages/OperationModulo/Result.flif").IsFail())
          break;
      
      COperationModulo Modulo = new COperationModulo();
      CFLImage fliSourceImage = new CFLImage();
      CFLImage fliDestinationImage = new CFLImage();
      
      // 지정된 경로에서 이미지 로드
      if(fliSourceImage.Load("../../ExampleImages/OperationModulo/Sun.flif").IsFail())
      	break;
      
      Modulo.SetSourceImage(ref fliSourceImage);
      Modulo.SetDestinationImage(ref fliDestinationImage);
      // 연산 방식 설정
      Modulo.SetOperationSource(EOperationSource.Scalar);
      // 스칼라 값 설정
      CMultiVar<double> mvScalar = new CMultiVar<double>(30.000000, 50.000000, 20.000000);
      Modulo.SetScalarValue(mvScalar);
      
      // 알고리즘 수행
      if(Modulo.Execute().IsFail())
      	break;
      
      // 수행된 결과 이미지를 저장
      if(fliDestinationImage.Save("../../ExampleImages/OperationModulo/Result.flif").IsFail())
      	break;
      
  2. 이미지 연산 설정
    • Operand 이미지를 설정합니다.

    • API

      SetOperandImage(Base::CFLImage);
      
    • 예제 코드

      COperationModulo Modulo;
      CFLImage fliSourceImage;
      CFLImage fliOperandImage;
      CFLImage fliDestinationImage;
      
      // 지정된 경로에서 이미지 로드
      if(fliSourceImage.Load(L"../../ExampleImages/OperationModulo/Sun.flif").IsFail())
      	break;
      if(fliOperandImage.Load(L"../../ExampleImages/OperationModulo/Sunset.flif").IsFail())
      	break;
      
      Modulo.SetSourceImage(fliSourceImage);
      // Operand 이미지 설정
      Modulo.SetOperandImage(fliOperandImage);
      Modulo.SetDestinationImage(fliDestinationImage);
      
      // 연산 방식 설정
      Modulo.SetOperationSource(ImageProcessing::EOperationSource_Image);
      
      // 알고리즘 수행
      if(Modulo.Execute().IsFail())
      	break;
      
      // 수행된 결과 이미지를 저장
      if(fliDestinationImage.Save(L"../../ExampleImages/OperationModulo/Result.flif").IsFail())
      	break;
      
      COperationModulo Modulo = new COperationModulo();
      CFLImage fliSourceImage = new CFLImage();
      CFLImage fliOperandImage = new CFLImage();
      CFLImage fliDestinationImage = new CFLImage();
      
      // 지정된 경로에서 이미지 로드
      if(fliSourceImage.Load("../../ExampleImages/OperationModulo/Sun.flif").IsFail())
      	break;
      if(fliOperandImage.Load("../../ExampleImages/OperationModulo/Sunset.flif").IsFail())
      	break;
      
      Modulo.SetSourceImage(ref fliSourceImage);
      // Operand 이미지 설정
      Modulo.SetOperandImage(ref fliOperandImage);
      Modulo.SetDestinationImage(ref fliDestinationImage);
      
      // 연산 방식 설정
      Modulo.SetOperationSource(EOperationSource.Image);
      
      // 알고리즘 수행
      if(Modulo.Execute().IsFail())
      	break;
      
      // 수행된 결과 이미지를 저장
      if(fliDestinationImage.Save("../../ExampleImages/OperationModulo/Result.flif").IsFail())
      	break;