Changed STL in contrast_preserve file
authorsiddharth <siddharthkherada27@gmail.com>
Tue, 1 Oct 2013 13:05:53 +0000 (18:35 +0530)
committersiddharth <siddharthkherada27@gmail.com>
Wed, 4 Dec 2013 13:47:59 +0000 (19:17 +0530)
modules/photo/src/contrast_preserve.cpp
modules/photo/src/contrast_preserve.hpp

index 5691219..103322a 100644 (file)
@@ -55,7 +55,7 @@ double norm_m(double);
 
 double norm_m(double E)
 {
-    return sqrt(pow(E,2));
+    return sqroot(power(E,2));
 }
 
 void cv::decolor(InputArray _src, OutputArray _dst, OutputArray _color_boost)
@@ -136,8 +136,8 @@ void cv::decolor(InputArray _src, OutputArray _dst, OutputArray _color_boost)
         double ans1 = 0.0;
         for(unsigned int i =0;i<alf.size();i++)
         {
-            ans = ((1 + alf[i])/2) * exp((-1.0 * 0.5 * pow(temp[i],2))/pow(sigma,2));
-            ans1 =((1 - alf[i])/2) * exp((-1.0 * 0.5 * pow(temp1[i],2))/pow(sigma,2));
+            ans = ((1 + alf[i])/2) * exp((-1.0 * 0.5 * power(temp[i],2))/power(sigma,2));
+            ans1 =((1 - alf[i])/2) * exp((-1.0 * 0.5 * power(temp1[i],2))/power(sigma,2));
             G_pos.push_back(ans);
             G_neg.push_back(ans1);
         }
index 87e33a3..eff1530 100644 (file)
@@ -74,12 +74,42 @@ class Decolor
 };
 
 int rounding(double a);
+double power(double term, int p);
+double sqroot(double m);
 
 int rounding(double a)
 {
     return int(a + 0.5);
 }
 
+double power(double term, int p)
+{
+    double res = 1.0;
+    for(int i=0;i<p;i++)
+    {
+        res *= term;
+    }
+    return res;
+}
+
+double sqroot(double m)
+{
+    double i=0;
+    double x1,x2;
+    while( (i*i) <= m )
+        i+=0.1;
+    x1=i;
+    for(int j=0;j<10;j++)
+    {
+        x2=m;
+        x2/=x1;
+        x2+=x1;
+        x2/=2;
+        x1=x2;
+    }
+    return x2;
+}
+
 float sigma = .02;
 
 double Decolor::energyCalcu(vector <double> &Cg, vector < vector <double> > &polyGrad, vector <double> &wei)
@@ -99,7 +129,7 @@ double Decolor::energyCalcu(vector <double> &Cg, vector < vector <double> > &pol
     }
 
     for(unsigned int i=0;i<polyGrad[0].size();i++)
-        P.push_back(-1.0*log(exp(-1.0*pow(temp[i],2)/sigma) + exp(-1.0*pow(temp1[i],2)/sigma)));
+        P.push_back(-1.0*log(exp(-1.0*power(temp[i],2)/sigma) + exp(-1.0*power(temp1[i],2)/sigma)));
 
     double sum = 0.0;
     for(unsigned int i=0;i<polyGrad[0].size();i++)
@@ -205,7 +235,7 @@ void Decolor::colorGrad(Mat img, vector <double> &Cg)
     double res =0.0;
     for(unsigned int i=0;i<ImL.size();i++)
     {
-        res=sqrt(pow(ImL[i],2) + pow(Ima[i],2) + pow(Imb[i],2))/100;
+        res=sqroot(power(ImL[i],2) + power(Ima[i],2) + power(Imb[i],2))/100;
         Cg.push_back(res);
     }
     lab.release();
@@ -391,8 +421,8 @@ void Decolor::grad_system(Mat img, vector < vector < double > > &polyGrad,
                     for(int i = 0;i<h;i++)
                         for(int j=0;j<w;j++)
                             curIm.at<float>(i,j)=
-                                pow(red.at<float>(i,j),r)*pow(green.at<float>(i,j),g)*
-                                pow(blue.at<float>(i,j),b);
+                                power(red.at<float>(i,j),r)*power(green.at<float>(i,j),g)*
+                                power(blue.at<float>(i,j),b);
                     vector <double> curGrad;
                     gradvector(curIm,curGrad);
                     add_to_vector_poly(polyGrad,curGrad);
@@ -485,8 +515,8 @@ void Decolor::grayImContruct(vector <double> &wei, Mat img, Mat &Gray)
                     for(int i = 0;i<h;i++)
                         for(int j=0;j<w;j++)
                             Gray.at<float>(i,j)=Gray.at<float>(i,j) +
-                                (float) wei[kk]*pow(red.at<float>(i,j),r)*pow(green.at<float>(i,j),g)*
-                                pow(blue.at<float>(i,j),b);
+                                (float) wei[kk]*power(red.at<float>(i,j),r)*power(green.at<float>(i,j),g)*
+                                power(blue.at<float>(i,j),b);
 
                     kk=kk+1;
                 }