raw ca correction: fix blob artifacts when avoid colourshift is enabled, #4777
This commit is contained in:
@@ -1252,6 +1252,12 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
array2D<float> blueFactor((W+1)/2, (H+1)/2);
|
array2D<float> blueFactor((W+1)/2, (H+1)/2);
|
||||||
array2D<float>* nonGreen;
|
array2D<float>* nonGreen;
|
||||||
|
|
||||||
|
for(int i = 0; i < (H+1)/2; ++i) {
|
||||||
|
for(int j = 0; j < (W+1)/2; ++j) {
|
||||||
|
redFactor[i][j] = blueFactor[i][j] = 1.f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
{
|
{
|
||||||
#pragma omp for
|
#pragma omp for
|
||||||
@@ -1261,10 +1267,10 @@ float* RawImageSource::CA_correct_RT(
|
|||||||
nonGreen = colour == 0 ? &redFactor : &blueFactor;
|
nonGreen = colour == 0 ? &redFactor : &blueFactor;
|
||||||
int j = firstCol;
|
int j = firstCol;
|
||||||
for(; j < W - 1; j += 2) {
|
for(; j < W - 1; j += 2) {
|
||||||
(*nonGreen)[i/2][j/2] = (rawData[i][j] * (*oldraw)[i][j / 2] == 0.0 ? 1.0 : (*oldraw)[i][j / 2] / rawData[i][j]);
|
(*nonGreen)[i/2][j/2] = rtengine::LIM((rawData[i][j] <= 1.f || (*oldraw)[i][j / 2] <= 1.f) ? 1.f : (*oldraw)[i][j / 2] / rawData[i][j], 0.5f, 1.5f);
|
||||||
}
|
}
|
||||||
if (j < W) {
|
if (j < W) {
|
||||||
(*nonGreen)[i/2][j/2] = (rawData[i][j] * (*oldraw)[i][j / 2] == 0.0 ? 1.0 : (*oldraw)[i][j / 2] / rawData[i][j]);
|
(*nonGreen)[i/2][j/2] = rtengine::LIM((rawData[i][j] <= 1.f || (*oldraw)[i][j / 2] <= 1.f) ? 1.f : (*oldraw)[i][j / 2] / rawData[i][j], 0.5f, 1.5f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user