https://github.com/lingqi/WaveOpticsBrdf
Tip revision: 2722f0fd4c1cf1cff0435b08dcb2d7e160c6f54b authored by Lingqi Yan on 12 September 2018, 15:28:22 UTC
changed default include path for eigen3
changed default include path for eigen3
Tip revision: 2722f0f
gaborkernel.h
/*
Copyright 2018 Lingqi Yan
This file is part of WaveOpticsBrdf.
WaveOpticsBrdf is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
WaveOpticsBrdf is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with WaveOpticsBrdf. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef GABOR_KERNEL_H
#define GABOR_KERNEL_H
#define SCALE_FACTOR 2.0
// #define SCALE_FACTOR 2.35482004503
#include "helpers.h"
class GaborKernel {
public:
GaborKernel() {}
GaborKernel(Vector2 mu_, Float sigma_, Vector2 a_, comp C_ = comp(Float(1.0), Float(0.0))) :
mu(mu_), sigma(sigma_), a(a_), C(C_) {}
comp eval(Vector2 s);
comp xform(Vector2 u);
public:
comp C;
Vector2 mu;
Float sigma;
Vector2 a;
};
class GaborKernelPrime {
public:
GaborKernelPrime() {}
GaborKernelPrime(Vector2 mu_, Float sigma_, Float cInfo_, Vector2 aInfo_) :
mu(mu_), sigma(sigma_), cInfo(cInfo_), aInfo(aInfo_) {}
GaborKernel toGaborKernel(Float lambda);
Vector2 getFFTCenter(Float lambda); // -a = -aInfo / lambda.
Float getFFTWidth(); // 1 / (2 pi sigma).
public:
Float cInfo;
Vector2 mu;
Float sigma;
Vector2 aInfo;
};
#endif