inline ValueType cell( const typename BaseType::PreparedWidget& widget, int32 i, int32 j, int32 k, ValueType pX, ValueType pY, ValueType pZ, ValueType nX, ValueType nY, ValueType nZ ) const { uint32 s = morton( i, j, k ) + widget.seed; if( s == 0 ) s = 1; PrngType prng( s ); ValueType numberOfImpulsesPerCell = widget.impulseDensity * widget.kernelRadius * widget.kernelRadius / ValueType( 2.0 ); uint32 numberOfImpulses = prng.poisson( numberOfImpulsesPerCell ); ValueType noise = ValueType( 0.0 ); Projection< ValueType > projection( nX, nY, nZ, ValueType( 1.0 ), ValueType( 0.0 ), ValueType( 0.0 ), pX, pY, pZ ); for( uint32 i = 0; i < numberOfImpulses; ++i) { ValueType xi = prng.uniformNormalized(); ValueType yi = prng.uniformNormalized(); ValueType zi = prng.uniformNormalized(); ValueType F0 = prng.uniformRange( widget.frequencyRangeStart, widget.frequencyRangeEnd ); ValueType omega0 = prng.uniformRange( widget.angularRangeStart, widget.angularRangeEnd ); projection.project( xi, yi, zi ); zi = ValueType( 1.0 ) - fabs( zi ); if( ((xi * xi) + (yi * yi)) < ValueType( 1.0 ) && zi >= ValueType( 0.0 ) ) { noise += zi * gabor( widget.K, widget.a, F0, omega0, xi * widget.kernelRadius, yi * widget.kernelRadius ); // anisotropic } } return noise; }
/* u is the time domain transition. * k is the scaling factor * k = 0 => C0 note, k = 12 => C1 etc. */ float complex gabor_scaled(float k, float u, float t) { float den = pow(2, -1.0 * k/12.0); return (1.0 / sqrt(den)) * gabor((t - u) / den); }
Dual2<float> gabor (const Dual2<float> &x, const Dual2<float> &y, const NoiseParams *opt) { // for now, just slice 3D return gabor (make_Vec3(x,y), opt); }
int main( int argc, char *argv[] ) { //IplImage *img = cvLoadImage( "/home/sir/sir02mz/local/FaceDB/FERET/fa/PPMS/00001_930831_fa_a.ppm", CV_LOAD_IMAGE_ANYCOLOR ); // IplImage *img = cvLoadImage( "/local/1_1_2.jpg", CV_LOAD_IMAGE_ANYCOLOR ); // IplImage *grayimg = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1); // cvCvtColor( img, grayimg, CV_RGB2GRAY ); // cvReleaseImage(&img); // // for(int i = -1; i <= 3; i++) // { // for(int j = 3; j <4 ; j++) // { // CvGabor gabor(j,i); // IplImage *reimg = cvCreateImage(cvGetSize(grayimg), IPL_DEPTH_8U, 1); // gabor.conv_img(grayimg, reimg, CV_GABOR_MAG); // // char *filename = new char[30]; // sprintf(filename, "/local/eteser_%d_%d.jpg", i, j); // cvSaveImage( filename, (IplImage*)reimg ); // delete [] filename; // cvReleaseImage(&reimg); // } // } // // cvReleaseImage(&grayimg); // /* CvTrainingData data; data.loadIris("/local/iris.data"); CvTrainingData *bindata = data.split(2,3); bindata->stat(); CvAdaBoost boost; //boost.train(bindata, 20, CvWeakLearner::ANN); boost.train(bindata, 20, CvWeakLearner::BAYES); delete bindata; */ CvGabor gabor(3,3); CvMat* remat = gabor.get_matrix(CV_GABOR_REAL); CvMat* immat = gabor.get_matrix(CV_GABOR_IMAG); cvSave( "/local/rematrix.xml", (CvMat*)remat, NULL, NULL, cvAttrList()); cvSave( "/local/immatrix.xml", (CvMat*)immat, NULL, NULL, cvAttrList()); IplImage *img = cvLoadImage( "/home/sir/sir02mz/local/FaceDB/FERET/fa/PPMS/00001_930831_fa_a.ppm", CV_LOAD_IMAGE_ANYCOLOR ); IplImage *grayimg = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1); cvCvtColor( img, grayimg, CV_RGB2GRAY ); IplImage *reimg = cvCreateImage(cvGetSize(grayimg), IPL_DEPTH_32F, 1); cvSave( "/local/gragimage.xml", (IplImage*)grayimg, NULL, NULL, cvAttrList()); gabor.conv_img_a(grayimg, reimg, CV_GABOR_MAG); cvSave( "/local/magimage.xml", (IplImage*)reimg, NULL, NULL, cvAttrList()); cvReleaseImage(&reimg); cvReleaseImage(&img); cvReleaseImage(&grayimg); return 0; }