예제 #1
0
void Document::unsharp(qreal sharpness, qreal sigma)
{
    QVector<qreal> kernel = gaussKernel(sigma);
    int n = kernel.size() - 1;
    for (int i = 0; i < n; ++i)
        kernel[i] *= -sharpness;
    kernel[n] = 1 + sharpness * (1 - kernel[n]);

    separableFilter(kernel);
}
std::vector<double>
RockPhysicsInversion4D::MakeGaussKernel(double mean, double variance, double minf, double  df,int nf)
{
  std::vector<double> gaussKernel(nf);
  for(int i= 0;i<nf;i++)
  {
    double dist = (minf+(0.5+i)*df -mean);
    gaussKernel[i]=exp(-0.5*dist*dist/variance);
  }

  double sum=0.0;
  for(int i= 0;i<nf;i++)
    sum+=gaussKernel[i];

  for(int i= 0;i<nf;i++)
    gaussKernel[i]/=sum;
  return gaussKernel;
}
예제 #3
0
vector<float> formGaussKernel(int support_size)
{
   //Size of the gauss kernel comes from the interface
   //via support_size
   vector<float> gaussKernel(support_size);
   float norm_factor = pow(2.0, - (support_size-1));
   gaussKernel[0] = norm_factor;
   gaussKernel[support_size-1] = norm_factor;
   for(int i=1; i< (support_size+1)/2; i++)
   {
    gaussKernel[i] = gaussKernel[i-1] * (support_size-i)/i;
    gaussKernel[support_size-1-i] = gaussKernel[i];
   }
   return gaussKernel;
   //gaussKernel=gaussKernel*norm_factor;
   //output<<"Gausskernel:";
   //float sum=0;
   //for (vector<float>::const_iterator j=gaussKernel.begin(); j!=gaussKernel.end(); ++j)
   //{
   //   output <<*j<<" ";
   //   sum+=*j;
   //}
   //output<< "  Sum:"<<sum<<"\n";
}
예제 #4
0
void Document::gaussBlur(qreal sigma)
{
    separableFilter(gaussKernel(sigma));
}