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; }
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"; }
void Document::gaussBlur(qreal sigma) { separableFilter(gaussKernel(sigma)); }