void process_sat() { svector<bool> assignment; update_assignment(assignment); if (check_lazy_soft(assignment)) { update_sigmas(); } }
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; }
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); } }