/**
 * Validation Metric for the Spatial Similarity Effect.
 *
 * @param aImageEffectDisable           [TAlgoImage] The image with Effect Disable.
 * @param aImageEffectEnable            [TAlgoImage] The image with Effect Enable.
 * @param aMetricParams                 [TAlgoMetricParams] The metric parameters to be applied.
 *
 * @return                              [TAlgoError] EErrorNone if the validation is passed.
 */
TAlgoError ValidationMetricRotationEffect( const TAlgoImage* aImageEffectDisable,
        const TAlgoImage* aImageEffectEnable,
        const TAlgoMetricParams* aMetricParams )
{
    TAlgoError errorCode = EErrorNone ;
    ALGO_Log_1("entering %s\n", __FUNCTION__);
    ALGO_Log_3("ToleranceR = %f, ToleranceG = %f, ToleranceB = %f\n", aMetricParams->iErrorTolerance.iErrorToleranceR, aMetricParams->iErrorTolerance.iErrorToleranceG, aMetricParams->iErrorTolerance.iErrorToleranceB);
    errorCode = GetLumaOn_R_Channel_And_Normalize(aImageEffectDisable, aImageEffectEnable);
    if(errorCode!= EErrorNone)
    {
        return EErrorNotValidated;
    }

    if (EType0degreesRotation == aMetricParams->iType)		 //For 0 degrees Rotation Image Metrices.
        return ValidationMetric0degreesRotationEffect(aImageEffectDisable,aImageEffectEnable,aMetricParams);
    else if (EType90degreesRotation == aMetricParams->iType)		 //For 90 degrees Rotation Image Metrices.
        return ValidationMetric90degreesRotationEffect(aImageEffectDisable,aImageEffectEnable,aMetricParams);
    else if (EType180degreesRotation == aMetricParams->iType) 		 //For 180 degrees Rotation Image Metrices.
        return ValidationMetric180degreesRotationEffect(aImageEffectDisable,aImageEffectEnable,aMetricParams);
    else if (EType270degreesRotation == aMetricParams->iType) 		 //For 270 degrees Rotation Image Metrices.
        return ValidationMetric270degreesRotationEffect(aImageEffectDisable,aImageEffectEnable,aMetricParams);
    return EErrorNone;
}
示例#2
0
/**
 * Validation Metric for the Auto Focus Effect.
 *
 * @param aImageEffectDisable           [TAlgoImage] The image with Effect Disable.
 * @param aImageEffectEnable            [TAlgoImage] The image with Effect Enable.
 * @param aMetricParams                 [TAlgoMetricParams] The metric parameters to be applied.
 *
 * @return                              [TAlgoError] EErrorNone if the validation is passed.
 */
TAlgoError ValidationMetricAutoFocusEffect( const TAlgoImage* aImageEffectDisable, 
					                        const TAlgoImage* aImageEffectEnable,
					                        const TAlgoMetricParams* aMetricParams )
    {
    TReal64 HorizPixelDiffEffectEnableR = 0;
	//TReal64 HorizPixelDiffEffectEnableG = 0;
	//TReal64 HorizPixelDiffEffectEnableB = 0;

    TReal64 VertPixelDiffEffectEnableR = 0;
	//TReal64 VertPixelDiffEffectEnableG = 0;
	//TReal64 VertPixelDiffEffectEnableB = 0;
 
    TReal64 HorizPixelDiffEffectDisableR = 0;
	//TReal64 HorizPixelDiffEffectDisableG = 0;
	//TReal64 HorizPixelDiffEffectDisableB = 0;

    TReal64 VertPixelDiffEffectDisableR = 0;
	//TReal64 VertPixelDiffEffectDisableG = 0;
	//TReal64 VertPixelDiffEffectDisableB = 0;

    //TReal64 HorizPixelDiffEffectEnableLuminance = 0;
	//TReal64 VertPixelDiffEffectEnableLuminance = 0;
    //TReal64 HorizPixelDiffEffectDisableLuminance = 0;
	//TReal64 VertPixelDiffEffectDisableLuminance = 0;

    //TReal64 HorizPixelDiffEffectEnableLuminanceFullImage = 0;
	//TReal64 VertPixelDiffEffectEnableLuminanceFullImage = 0;
    //TReal64 HorizPixelDiffEffectDisableLuminanceFullImage = 0;
	//TReal64 VertPixelDiffEffectDisableLuminanceFullImage = 0;


    TReal64 tolerance = 0;
    TReal64 threshold = 0;

	ALGO_Log_1("entering %s\n", __FUNCTION__);
	ALGO_Log_3("ToleranceR = %f, ToleranceG = %f, ToleranceB = %f\n", aMetricParams->iErrorTolerance.iErrorToleranceR, aMetricParams->iErrorTolerance.iErrorToleranceG, aMetricParams->iErrorTolerance.iErrorToleranceB);
	ALGO_Log_2("iPixelsToGrabX = %d, iPixelsToGrabY = %d\n", aMetricParams->iTestCoordinates.iPixelsToGrabX, aMetricParams->iTestCoordinates.iPixelsToGrabY);
	
/*
    CalculateImageHorizontalDiff( aImageEffectEnable,  
                                  &HorizPixelDiffEffectEnableR, 
                                  &HorizPixelDiffEffectEnableG, 
                                  &HorizPixelDiffEffectEnableB,
                                  &HorizPixelDiffEffectEnableLuminance,
								  &aMetricParams->iTestCoordinates );

    CalculateImageVerticalDiff( aImageEffectEnable,  
                                &VertPixelDiffEffectEnableR, 
                                &VertPixelDiffEffectEnableG, 
                                &VertPixelDiffEffectEnableB,
                                &VertPixelDiffEffectEnableLuminance,
								&aMetricParams->iTestCoordinates );

    CalculateImageHorizontalDiff( aImageEffectDisable,  
                                  &HorizPixelDiffEffectDisableR, 
                                  &HorizPixelDiffEffectDisableG, 
                                  &HorizPixelDiffEffectDisableB,
                                  &HorizPixelDiffEffectDisableLuminance,
								  &aMetricParams->iTestCoordinates );

    CalculateImageVerticalDiff( aImageEffectDisable,  
                                &VertPixelDiffEffectDisableR, 
                                &VertPixelDiffEffectDisableG, 
                                &VertPixelDiffEffectDisableB,
                                &VertPixelDiffEffectDisableLuminance,
								&aMetricParams->iTestCoordinates );

    ALGO_Log_1("HorizPixelDiffEffectEnableLuminance/HorizPixelDiffEffectDisableLuminance = %1.2lf\n\n", (double)(HorizPixelDiffEffectEnableLuminance/HorizPixelDiffEffectDisableLuminance));
    ALGO_Log_1("VertPixelDiffEffectEnableLuminance/VertPixelDiffEffectDisableLuminance = %1.2lf\n\n", (double)(VertPixelDiffEffectEnableLuminance/VertPixelDiffEffectDisableLuminance));

    tolerance = ((aMetricParams->iErrorTolerance.iErrorToleranceR) * (AUTO_FOCUS_THRESHOLD - 1))/100;
    threshold = AUTO_FOCUS_THRESHOLD - tolerance;
	ALGO_Log_1("threshold = %f\n", threshold);

    if(((HorizPixelDiffEffectEnableLuminance/HorizPixelDiffEffectDisableLuminance) > threshold) &&
       ((VertPixelDiffEffectEnableLuminance/VertPixelDiffEffectDisableLuminance) > threshold))
	    {
	    return EErrorNone;
        }
    else
        {
        return EErrorNotValidated;
        }
*/

	{
		TAlgoError errorCode = EErrorNone ;
		errorCode = GetLumaOn_R_Channel_And_Normalize(aImageEffectDisable, aImageEffectEnable);
		if(errorCode!= EErrorNone)
		{
			return EErrorNotValidated;
		}
	}
    CalculateImageHorizontalDiff_R( aImageEffectEnable,  
                                  &HorizPixelDiffEffectEnableR, 
								  &aMetricParams->iTestCoordinates );

    CalculateImageVerticalDiff_R( aImageEffectEnable,  
                                &VertPixelDiffEffectEnableR, 
								&aMetricParams->iTestCoordinates );

    CalculateImageHorizontalDiff_R( aImageEffectDisable,  
                                  &HorizPixelDiffEffectDisableR, 
								  &aMetricParams->iTestCoordinates );

    CalculateImageVerticalDiff_R( aImageEffectDisable,  
                                &VertPixelDiffEffectDisableR, 
								&aMetricParams->iTestCoordinates );

    ALGO_Log_1("HorizPixelDiffEffectDisableR = %1.2lf\n\n", (double)(HorizPixelDiffEffectDisableR));
    ALGO_Log_1("VertPixelDiffEffectDisableR = %1.2lf\n\n", (double)(VertPixelDiffEffectDisableR));
    ALGO_Log_1("HorizPixelDiffEffectEnableR = %1.2lf\n\n", (double)(HorizPixelDiffEffectEnableR));
    ALGO_Log_1("VertPixelDiffEffectEnableR = %1.2lf\n\n", (double)(VertPixelDiffEffectEnableR));

    ALGO_Log_1("HorizPixelDiffEffectEnableR/HorizPixelDiffEffectDisableR = %1.2lf\n\n", (double)(HorizPixelDiffEffectEnableR/HorizPixelDiffEffectDisableR));
    ALGO_Log_1("VertPixelDiffEffectEnableR/VertPixelDiffEffectDisableR = %1.2lf\n\n", (double)(VertPixelDiffEffectEnableR/VertPixelDiffEffectDisableR));

    tolerance = ((aMetricParams->iErrorTolerance.iErrorToleranceR) * (AUTO_FOCUS_THRESHOLD - 1))/100;
    threshold = AUTO_FOCUS_THRESHOLD - tolerance;
	ALGO_Log_1("AUTO_FOCUS_THRESHOLD = %f\n", AUTO_FOCUS_THRESHOLD);
	ALGO_Log_1("tolerance_param in percent = %d\n", aMetricParams->iErrorTolerance.iErrorToleranceR);
	ALGO_Log_1("threshold = %f\n", threshold);

    if(((HorizPixelDiffEffectEnableR/HorizPixelDiffEffectDisableR) > threshold) &&
       ((VertPixelDiffEffectEnableR/VertPixelDiffEffectDisableR) > threshold))
	    {
	    return EErrorNone;
        }
    else
        {
        return EErrorNotValidated;
        }

	}