xtransborder_interpolate: Use same weights as in fast_xtrans_interpolate, #5198

This commit is contained in:
heckflosse 2019-03-01 14:36:13 +01:00
parent 917cc49278
commit f78f17ae6f

View File

@ -120,6 +120,11 @@ void RawImageSource::xtransborder_interpolate (int border, array2D<float> &red,
int xtrans[6][6]; int xtrans[6][6];
ri->getXtransMatrix(xtrans); ri->getXtransMatrix(xtrans);
const float weight[3][3] = {
{0.25f, 0.5f, 0.25f},
{0.5f, 0.f, 0.5f},
{0.25f, 0.5f, 0.25f}
};
for (int row = 0; row < height; row++) for (int row = 0; row < height; row++)
for (int col = 0; col < width; col++) { for (int col = 0; col < width; col++) {
@ -129,11 +134,11 @@ void RawImageSource::xtransborder_interpolate (int border, array2D<float> &red,
float sum[6] = {0.f}; float sum[6] = {0.f};
for (int y = MAX(0, row - 1); y <= MIN(row + 1, height - 1); y++) for (int y = MAX(0, row - 1), v = row == 0 ? 0 : -1; y <= MIN(row + 1, height - 1); y++, v++)
for (int x = MAX(0, col - 1); x <= MIN(col + 1, width - 1); x++) { for (int x = MAX(0, col - 1), h = col == 0 ? 0 : -1; x <= MIN(col + 1, width - 1); x++, h++) {
int f = fcol(y, x); int f = fcol(y, x);
sum[f] += rawData[y][x]; sum[f] += rawData[y][x] * weight[v + 1][h + 1];
sum[f + 3]++; sum[f + 3] += weight[v + 1][h + 1];
} }
switch(fcol(row, col)) { switch(fcol(row, col)) {