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;
				}
Exemple #2
0
/* 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;
}