diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index df183a5e3..186dc8827 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -258,10 +258,11 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, bool det } // do not set the motion pixel values. They have already been set by demosaicer or showMotion continue; - } else if(showMotion && showOnlyMask) { - greenDest[j + offsX] = nonGreenDest0[j + offsX] = nonGreenDest1[j + offsX] = 0.f; - continue; } +// } else if(showMotion && showOnlyMask) { +// greenDest[j + offsX] = nonGreenDest0[j + offsX] = nonGreenDest1[j + offsX] = 0.f; +// continue; +// } if(adaptive && checkNonGreenHorizontal) { float ng1 = riFrames[(offset << 1) + offset]->data[i][j + offset]; @@ -278,10 +279,10 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, bool det float blend = gridMax * blendFactor; if(!showOnlyMask) { // if showMotion is enabled make the pixel green - nonGreenDest0[j + offsX] = 1000.f + 25000.f; + nonGreenDest0[j + offsX] = 1000.f + 25000.f * blend; nonGreenDest1[j + offsX] = greenDest[j + offsX] = 0.f; } else { - greenDest[j + offsX] = nonGreenDest0[j + offsX] = nonGreenDest1[j + offsX] = 1000.f + 25000.f; + greenDest[j + offsX] = nonGreenDest0[j + offsX] = nonGreenDest1[j + offsX] = 1000.f + 25000.f * blend; } } continue; @@ -300,15 +301,16 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, bool det if(showMotion) { float blend = gridMax * blendFactor; if(!showOnlyMask) { - nonGreenDest1[j + offsX] = 1000.f + 25000.f; + nonGreenDest1[j + offsX] = 1000.f + 25000.f * blend; nonGreenDest0[j + offsX] = greenDest[j + offsX] = 0.f; } else { - greenDest[j + offsX] = nonGreenDest0[j + offsX] = nonGreenDest1[j + offsX] = 1000.f + 25000.f; + greenDest[j + offsX] = nonGreenDest0[j + offsX] = nonGreenDest1[j + offsX] = 1000.f + 25000.f * blend; } } continue; } } + // float ngDiff = nonGreenDiff(ng0,ng1,ng2); // float korr = log2Lut[((int)(riFrames[(offset << 1) + offset]->data[i][j + offset] * scaleNonGreen0))>>1]; // if(ngDiff > 0.5f - korr) { @@ -422,6 +424,12 @@ void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, bool det // } // } // } + + if(showMotion && showOnlyMask) { + greenDest[j + offsX] = nonGreenDest0[j + offsX] = nonGreenDest1[j + offsX] = 0.f; + continue; + } + // motion correction disabled or no motion detected => combine the values from the four pixelshift frames greenDest[j + offsX] = (riFrames[1 - offset]->data[i - offset + 1][j] + riFrames[3 - offset]->data[i + offset][j + 1]) / 2.f; nonGreenDest0[j + offsX] = riFrames[(offset << 1) + offset]->data[i][j + offset];