Scaled Multiply

1 개요

이미지 혹은 Scalar 값을 사용하여 Scaled Multiply 연산을 수행하는 알고리즘입니다.

2 알고리즘 상세 설명

Scaled Multiply의 연산은 다음 식을 활용합니다.

IDst(x,y)=(ISrc(x,y)IOpr(x,y))/IMaxI_{Dst}(x,y) = (I_{Src}(x,y) * I_{Opr}(x,y)) / I_{Max}

Max값은 이미지 타입의 최댓값을 뜻하며, float 혹은 double인 경우 MAX를 1로 설정하여 일반적인 곱셈 연산을 수행합니다.

Source Image Operand Image Destination Image
Source Image Operation Image Destination Image
Fig. Source, Operand and Destination values of Scaled Multiply

3 예제 코드

Scalar 연산

COperationScaledMultiply scaledMultiply;

CFLImage fliSourceImage;
CFLImage fliDestinationImage;
CMultiVar<double> mulVarScalar;

scaledMultiply.SetSourceImage(fliSourceImage);
scaledMultiply.SetDestinationImage(fliDestinationImage);
scaledMultiply.SetOperationSource(EOperationSource_Scalar);
scaledMultiply.SetScalarValue(mulVarScalar);

scaledMultiply.Execute();
COperationScaledMultiply scaledMultiply = new COperationScaledMultiply();

CFLImage fliSourceImage = new CFLImage();
CFLImage fliDestinationImage = new CFLImage();
CMultiVar<double> mulVarScalar = new CMultiVar<double>();

scaledMultiply.SetSourceImage(ref fliSourceImage);
scaledMultiply.SetDestinationImage(ref fliDestinationImage);
scaledMultiply.SetOperationSource(EOperationSource.Scalar);
scaledMultiply.SetScalarValue(mulVarScalar);

scaledMultiply.Execute();

Image 연산

COperationScaledMultiply scaledMultiply;

CFLImage fliSourceImage;
CFLImage fliOperandImage;
CFLImage fliDestinationImage;

scaledMultiply.SetSourceImage(fliSourceImage);
scaledMultiply.SetOperandImage(fliOperandImage);
scaledMultiply.SetDestinationImage(fliDestinationImage);
scaledMultiply.SetOperationSource(EOperationSource_Image);

scaledMultiply.Execute();
COperationScaledMultiply scaledMultiply = new COperationScaledMultiply();

CFLImage fliSourceImage = new CFLImage();
CFLImage fliOperandImage = new CFLImage();
CFLImage fliDestinationImage = new CFLImage();

scaledMultiply.SetSourceImage(ref fliSourceImage);
scaledMultiply.SetOperandImage(ref fliOperandImage);
scaledMultiply.SetDestinationImage(ref fliDestinationImage);
scaledMultiply.SetOperationSource(EOperationSource.Image);

scaledMultiply.Execute();