예제 #1
0
파일: bcd2.cpp 프로젝트: EinNarr/z3
 void process_sat() {
     svector<bool> assignment;
     update_assignment(assignment);
     if (check_lazy_soft(assignment)) {
         update_sigmas();
     }
 }
예제 #2
0
gsl_matrix* GaborFilter2D::compute(
  const double sigma,
  const double wavelength,
  const double psi)
{
  update_sigmas(sigma);
  gsl_matrix* gbFilter=gsl_matrix_calloc(m_sz_x, m_sz_y);
  int step=30;
  for(int angle=0;angle<180;angle+=step)
    {
      compute_filter(angle,sigma,wavelength,psi);

      if(m_mode==MODE_AVG)
        {
          gsl_matrix_add(gbFilter,m_gbFilter);
        }
      else
        {
          // TODO : this could be optimized
#ifdef WITH_OPENMP
#pragma omp parallel for
#endif
          for (int i = 0; i < m_sz_x; i++)
            for (int j = 0; j < m_sz_y; j++)
              {
                double mij = gsl_matrix_get(m_gbFilter, i, j);
                double gij = gsl_matrix_get(gbFilter, i, j);
                gsl_matrix_set(gbFilter, i, j, GSL_MAX(mij,gij));
              }
        }
    }

  if(m_mode==MODE_AVG)
    gsl_matrix_scale(gbFilter,step/180.0);

  gsl_matrix_free(m_gbFilter);
  m_gbFilter = gbFilter;

  return m_gbFilter;
}
예제 #3
0
gsl_matrix* GaborFilter2D::compute(
  const double angle,
  const double sigma,
  const double wavelength,
  const double psi,
  bool outputCoeffs)
{
  update_sigmas(sigma);
  compute_filter(angle,sigma,wavelength,psi);

  if(outputCoeffs)
    {
      FILE* f = fopen("gaborfilter.dat", "wb");
      double value;
      for(int i = 0; i < m_sz_x; i++){
        for(int j = 0; j < m_sz_y; j++){
          value = gsl_matrix_get(m_gbFilter,i,j);
          fprintf(f, "%f ",value);
        }
        fprintf(f, "\n");
      }
      fclose(f);
    }
}