pixelshift: Correction for mask-only mode when red/blue detection is enabled

This commit is contained in:
heckflosse 2016-11-27 19:12:03 +01:00
parent ac5bad2de1
commit b9fb8cf292

View File

@ -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];