merge with dev
This commit is contained in:
@@ -42,7 +42,7 @@
|
||||
#include "../rtgui/options.h"
|
||||
|
||||
//#define BENCHMARK
|
||||
//#include "StopWatch.h"
|
||||
#include "StopWatch.h"
|
||||
|
||||
#ifdef _OPENMP
|
||||
#include <omp.h>
|
||||
@@ -2408,11 +2408,10 @@ void RawImageSource::HLRecovery_Global(const ToneCurveParams &hrp)
|
||||
*/
|
||||
void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, RawImage *riDark, RawImage *riFlatFile, array2D<float> &rawData)
|
||||
{
|
||||
// TODO: Change type of black[] to float to avoid conversions
|
||||
unsigned short black[4] = {
|
||||
(unsigned short)ri->get_cblack(0), (unsigned short)ri->get_cblack(1),
|
||||
(unsigned short)ri->get_cblack(2), (unsigned short)ri->get_cblack(3)
|
||||
};
|
||||
const float black[4] = {
|
||||
static_cast<float>(ri->get_cblack(0)), static_cast<float>(ri->get_cblack(1)),
|
||||
static_cast<float>(ri->get_cblack(2)), static_cast<float>(ri->get_cblack(3))
|
||||
};
|
||||
|
||||
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS) {
|
||||
if (!rawData) {
|
||||
@@ -2420,11 +2419,22 @@ void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, Raw
|
||||
}
|
||||
|
||||
if (riDark && W == riDark->get_width() && H == riDark->get_height()) { // This works also for xtrans-sensors, because black[0] to black[4] are equal for these
|
||||
StopWatch Stop1("darkframe subtraction");
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
for (int row = 0; row < H; row++) {
|
||||
for (int col = 0; col < W; col++) {
|
||||
int c = FC(row, col);
|
||||
int c4 = (c == 1 && !(row & 1)) ? 3 : c;
|
||||
rawData[row][col] = max(src->data[row][col] + black[c4] - riDark->data[row][col], 0.0f);
|
||||
const int c0 = FC(row, 0);
|
||||
const float black0 = black[(c0 == 1 && !(row & 1) ) ? 3 : c0];
|
||||
const int c1 = FC(row, 1);
|
||||
const float black1 = black[(c1 == 1 && !(row & 1) ) ? 3 : c1];
|
||||
int col;
|
||||
for (col = 0; col < W - 1; col += 2) {
|
||||
rawData[row][col] = max(src->data[row][col] + black0 - riDark->data[row][col], 0.0f);
|
||||
rawData[row][col + 1] = max(src->data[row][col + 1] + black1 - riDark->data[row][col + 1], 0.0f);
|
||||
}
|
||||
if (col < W) {
|
||||
rawData[row][col] = max(src->data[row][col] + black0 - riDark->data[row][col], 0.0f);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user