From 93dc63f5421b85993a9ace037468cdb2cc19c004 Mon Sep 17 00:00:00 2001 From: Oliver Duis Date: Tue, 26 Jun 2012 20:34:08 +0200 Subject: [PATCH] Fixed color pixels using HSV equalizer, S/H speedup and fix see issue 1436 --- rtengine/improcfun.cc | 14 ++++++-------- rtengine/shmap.cc | 3 ++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index f0fad5917..5b4d13664 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -359,9 +359,11 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltone } if (vCurveEnabled) { + if (v<0) v=0; // important + //shift value float valparam = vCurve->getVal((double)h)-0.5; - valparam *= (1-SQR(SQR(1-s))); + valparam *= (1-SQR(SQR(1-min(s,1.0f)))); if (valparam > 0.00001) { v = (1-valparam)*v+valparam*(1-SQR(1-min(v,1.0f))); if (v<0) v=0; @@ -374,13 +376,9 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltone hsv2rgb(h,s,v,r,g,b); } - //r=FCLIP(r); - //g=FCLIP(g); - //b=FCLIP(b); - - float x = (toxyz[0][0] * r + toxyz[0][1] * g + toxyz[0][2] * b) ; - float y = (toxyz[1][0] * r + toxyz[1][1] * g + toxyz[1][2] * b) ; - float z = (toxyz[2][0] * r + toxyz[2][1] * g + toxyz[2][2] * b) ; + float x = toxyz[0][0] * r + toxyz[0][1] * g + toxyz[0][2] * b; + float y = toxyz[1][0] * r + toxyz[1][1] * g + toxyz[1][2] * b; + float z = toxyz[2][0] * r + toxyz[2][1] * g + toxyz[2][2] * b; float fx,fy,fz; diff --git a/rtengine/shmap.cc b/rtengine/shmap.cc index d94853c5c..8d60d52e7 100644 --- a/rtengine/shmap.cc +++ b/rtengine/shmap.cc @@ -46,9 +46,10 @@ SHMap::~SHMap () { void SHMap::update (Imagefloat* img, double radius, double lumi[3], bool hq, int skip) { // fill with luminance + #pragma omp parallel for for (int i=0; ir[i][j]) + fabs(lumi[1]*img->g[i][j]) + fabs(lumi[2]*img->b[i][j]); + map[i][j] = lumi[0]*std::max(img->r[i][j],0.f) + lumi[1]*std::max(img->g[i][j],0.f) + lumi[2]*std::max(img->b[i][j],0.f); } #ifdef _OPENMP #pragma omp parallel