Capture Sharpening: avoid hue shift

This commit is contained in:
Ingo Weyrich
2019-08-19 21:17:25 +02:00
parent 5bb207a4f6
commit dab39dae76
6 changed files with 56 additions and 33 deletions

View File

@@ -52,7 +52,7 @@ vfloat calcBlendFactor(vfloat valv, vfloat thresholdv) {
}
#endif
float tileAverage(float **data, size_t tileY, size_t tileX, size_t tilesize) {
float tileAverage(const float * const *data, size_t tileY, size_t tileX, size_t tilesize) {
float avg = 0.f;
#ifdef __SSE2__
@@ -75,7 +75,7 @@ float tileAverage(float **data, size_t tileY, size_t tileX, size_t tilesize) {
return avg / rtengine::SQR(tilesize);
}
float tileVariance(float **data, size_t tileY, size_t tileX, size_t tilesize, float avg) {
float tileVariance(const float * const *data, size_t tileY, size_t tileX, size_t tilesize, float avg) {
float var = 0.f;
#ifdef __SSE2__
@@ -99,7 +99,7 @@ float tileVariance(float **data, size_t tileY, size_t tileX, size_t tilesize, fl
return var / (rtengine::SQR(tilesize) * avg);
}
float calcContrastThreshold(float** luminance, int tileY, int tileX, int tilesize) {
float calcContrastThreshold(const float* const * luminance, int tileY, int tileX, int tilesize) {
constexpr float scale = 0.0625f / 327.68f;
std::vector<std::vector<float>> blend(tilesize - 4, std::vector<float>(tilesize - 4));
@@ -299,7 +299,7 @@ void findMinMaxPercentile(const float* data, size_t size, float minPrct, float&
maxOut = rtengine::LIM(maxOut, minVal, maxVal);
}
void buildBlendMask(float** luminance, float **blend, int W, int H, float &contrastThreshold, float amount, bool autoContrast) {
void buildBlendMask(const float* const * luminance, float **blend, int W, int H, float &contrastThreshold, float amount, bool autoContrast) {
if (autoContrast) {
constexpr float minLuminance = 2000.f;