std::unique_ptr<graph::ImageFilter> ResizeImplBuilder::create() const { std::unique_ptr<graph::ImageFilter> ret; unsigned src_dim = horizontal ? src_width : src_height; FilterContext filter_ctx = compute_filter(*filter, src_dim, dst_dim, shift, subwidth); #ifdef ZIMG_X86 ret = horizontal ? create_resize_impl_h_x86(filter_ctx, src_height, type, depth, cpu) : create_resize_impl_v_x86(filter_ctx, src_width, type, depth, cpu); #endif if (!ret && horizontal) ret = ztd::make_unique<ResizeImplH_C>(filter_ctx, src_height, type, depth); if (!ret && !horizontal) ret = ztd::make_unique<ResizeImplV_C>(filter_ctx, src_width, type, depth); return ret; }
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); } }
//***************************************************************************** // // This function initializes the ADC hardware in preparation for data // acquisition. // //***************************************************************************** void AcquireInit(void) { unsigned long ulChan; // // Enable the ADC peripherals and the associated GPIO port // ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOP); ROM_SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS); ROM_GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 |GPIO_PIN_7 | GPIO_PIN_3); ROM_GPIOPinTypeADC(GPIO_PORTP_BASE, GPIO_PIN_0); // ROM_ADCReferenceSet(ADC0_BASE, ADC_REF_EXT_3V); //ROM_ADCR ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); HWREG(GPIO_PORTB_BASE + GPIO_O_AMSEL) |= GPIO_PIN_6; ADCSequenceDisable(ADC0_BASE,SEQUENCER); ROM_ADCSequenceConfigure(ADC0_BASE, SEQUENCER, ADC_TRIGGER_TIMER, 0); for(ulChan = 0; ulChan < 2; ulChan++) { unsigned long ulChCtl; if (ulChan ==1) { ROM_ADCSequenceStepConfigure(ADC0_BASE, SEQUENCER, ulChan, ADC_CTL_CH1|ADC_CTL_IE | ADC_CTL_END); } else if(ulChan==0) { ulChCtl = ADC_CTL_CH0; ROM_ADCSequenceStepConfigure(ADC0_BASE, SEQUENCER, ulChan, ADC_CTL_CH0); } } ADCHardwareOversampleConfigure(ADC0_BASE, 1); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); //SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); ROM_TimerConfigure(TIMER0_BASE,TIMER_CFG_32_BIT_PER ); //100 micro unsigned long freq=SAMPLING_FREQUENCY; unsigned long period=(2*ROM_SysCtlClockGet()/(freq)); ROM_TimerLoadSet(TIMER0_BASE, TIMER_A,period); ROM_TimerControlTrigger(TIMER0_BASE, TIMER_A, true); //ROM_TimerConfigure(TIMER1_BASE, TIMER_CFG_PERIODIC); //ROM_TimerLoadSet(TIMER1_BASE, TIMER_A, ROM_SysCtlClockGet() /2); CFAL96x64x16Init(); GrContextInit(&sDisplayContext, &g_sCFAL96x64x16); sRect1.sXMin = 0; sRect1.sYMin = 0; sRect1.sXMax = GrContextDpyWidthGet(&sDisplayContext) - 1; sRect1.sYMax = 23; sRect2.sXMin = 0; sRect2.sYMin = 23; sRect2.sXMax = GrContextDpyWidthGet(&sDisplayContext) - 1; sRect2.sYMax = GrContextDpyHeightGet(&sDisplayContext) - 1; snprintf(text,sizeof(text),"STart"); GrContextForegroundSet(&sDisplayContext, ClrDarkBlue); GrRectFill(&sDisplayContext, &sRect1); GrContextForegroundSet(&sDisplayContext, ClrWhite); //GrRectDraw(&sDisplayContext, &sRect1); GrContextFontSet(&sDisplayContext, g_pFontCm12); GrStringDrawCentered(&sDisplayContext,text, -1, GrContextDpyWidthGet(&sDisplayContext) / 2, 10, 0); //GrContextForegroundSet(&sDisplayContext, ClrDarkBlue); //GrRectFill(&sDisplayContext, &sRect1); //GrContextForegroundSet(&sDisplayContext, ClrWhite); //GrRectDraw(&sDisplayContext, &sRect1); /*GrContextForegroundSet(&sDisplayContext, ClrDarkBlue); GrRectFill(&sDisplayContext, &sRect2); GrContextForegroundSet(&sDisplayContext, ClrWhite); GrRectDraw(&sDisplayContext, &sRect2); */ compute_filter(); maxi1=0; maxi2=0; max1=0; max2=0; res=0; res1=0; g_ulADCCount=0; buffer_index=0; ulLastADCCount=0; }