Example #1
0
void dwt2d_forward_haar(double *data,int n,int ns)
{  
  gsl_wavelet_workspace *work;
  gsl_wavelet *w;
  gsl_matrix *m1;
  gsl_matrix_view m;
  int i,j;

  long dims[3]={2,n,n};
  double *res = ypush_d(dims);

  int k=0;
  for (i=0;i<n;i++) {
	for (j=0;j<n;j++) {
          k = j+i*n;
	  res[k] = data[k];
	}
  }

  w = gsl_wavelet_alloc(gsl_wavelet_haar, 2);

  work = gsl_wavelet_workspace_alloc(n*n);

  if (ns == 1) gsl_wavelet2d_nstransform_forward(w, res, n, n, n,work);
  else gsl_wavelet2d_transform_forward(w, res, n, n, n,work);

  gsl_wavelet_workspace_free (work);
  gsl_wavelet_free (w);

}
Example #2
0
void dwt2d_filt_daub(double *data, long *mask, int order,int n,int ns)
{   gsl_wavelet_workspace *work;
 gsl_wavelet *w;
 gsl_matrix *m1;
 gsl_matrix_view m;
 int i,j;

 long dims[3]={2,n,n};
 double *res = ypush_d(dims);

 int k=0;
 for (i=0;i<n;i++) {
   for (j=0;j<n;j++) {
         k = j+i*n;
     res[k] = data[k];
   }
 }

 w = gsl_wavelet_alloc(gsl_wavelet_daubechies, order);

 work = gsl_wavelet_workspace_alloc(n*n);

 if (ns == 1) gsl_wavelet2d_nstransform_forward(w, res, n, n, n,work);
 else gsl_wavelet2d_transform_forward(w, res, n, n, n,work);

 k=0;
 for (i=0;i<n;i++) {
   for (j=0;j<n;j++) {
	 k = j+i*n;
	 res[k] *= (double)mask[k];
   }
 }

 if (ns == 1) gsl_wavelet2d_nstransform_inverse(w, res, n, n, n,work);
 else gsl_wavelet2d_transform_inverse(w, res, n, n, n,work);

 gsl_wavelet_workspace_free (work);
 gsl_wavelet_free (w);

}
Example #3
0
    /**
     * C++ version of gsl_wavelet2d_nstransform_forward().
     * @param data Data array
     * @param tda Physical row length
     * @param size1 Number of rows
     * @param size2 Number of columns
     * @param work Supply a workspace of appropriate (undocumented) size
     * @return Error code on failure
     */
    int nstransform_forward( double* data, size_t tda, size_t size1, size_t size2,
			     wavelet::workspace& work ) const {
      return gsl_wavelet2d_nstransform_forward( get(), data, tda, size1, size2, work.get() ); }