void texture_flatten(Mat &I, Mat &mask, Mat &wmask, double low_threshold, double high_threhold, int kernel_size, Mat &final);
};
+double power(double term, int p);
+
+double power(double term, int p)
+{
+ double res = 1.0;
+ for(int i=0;i<p;i++)
+ {
+ res *= term;
+ }
+ return res;
+}
+
void Cloning::getGradientx( const Mat &img, Mat &gx)
{
int w = img.size().width;
{
mag.at<float>(i,j*channel+c) =
- sqrt(pow(srx32.at<float>(i,j*channel+c),2) + pow(sry32.at<float>(i,j*channel+c),2));
+ sqrt(power(srx32.at<float>(i,j*channel+c),2) + power(sry32.at<float>(i,j*channel+c),2));
}
for(int i=0;i < h; i++)
if(srx32.at<float>(i,j*channel+c) != 0)
{
srx32.at<float>(i,j*channel+c) =
- pow(alpha,beta)*srx32.at<float>(i,j*channel+c)*pow(mag.at<float>(i,j*channel+c),-1*beta);
+ power(alpha,beta)*srx32.at<float>(i,j*channel+c)*power(mag.at<float>(i,j*channel+c),-1*beta);
sry32.at<float>(i,j*channel+c) =
- pow(alpha,beta)*sry32.at<float>(i,j*channel+c)*pow(mag.at<float>(i,j*channel+c),-1*beta);
+ power(alpha,beta)*sry32.at<float>(i,j*channel+c)*power(mag.at<float>(i,j*channel+c),-1*beta);
}
}