Fixed color pixels using HSV equalizer, S/H speedup and fix

see issue 1436
This commit is contained in:
Oliver Duis
2012-06-26 20:34:08 +02:00
parent b1bb0af84e
commit 93dc63f542
2 changed files with 8 additions and 9 deletions

View File

@@ -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;

View File

@@ -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; i<H; i++)
for (int j=0; j<W; j++) {
map[i][j] = fabs(lumi[0]*img->r[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