Ejemplo n.º 1
0
void bandpassFilter(vector<double> & in, double sampFreq,int order = 1, double lCutoff=.1,double hCutoff=25){
	while(order){
		highPassFilter(in,sampFreq,lCutoff);
		lowPassFilter(in,sampFreq,hCutoff);
		order--;
	}
}
Ejemplo n.º 2
0
void performHighPass(const cv::Mat& image, cv::Mat& res, int rad) {
    cv::Mat grey, tmp;
    cv::cvtColor(image, grey, CV_BGR2GRAY);


    grey.convertTo(grey, CV_32F);
    grey.copyTo(res);
    res.convertTo(res, CV_8U);
    std::vector<cv::Mat> planes(2, cv::Mat());
    std::vector<cv::Mat> polar(2, cv::Mat());

    cv::dft(grey, tmp, cv::DFT_COMPLEX_OUTPUT);
    cv::split(tmp, planes);
    cv::cartToPolar(planes[0], planes[1], polar[0], polar[1]);
    visualization(polar[0], tmp);
    concatImages(res, tmp, res);

    rearrangeQuadrants(polar[0]);
    highPassFilter(polar[0], rad);
    rearrangeQuadrants(polar[0]);

    visualization(polar[0], tmp);
    tmp.convertTo(tmp, res.type());
    concatImages(res, tmp, res);

    cv::polarToCart(polar[0], polar[1], planes[0], planes[1]);
    cv::merge(planes, tmp);
    cv::dft(tmp, tmp, cv::DFT_SCALE | cv::DFT_INVERSE | cv::DFT_REAL_OUTPUT);
    tmp.convertTo(tmp, CV_8U);
    concatImages(res, tmp, res);
}
Ejemplo n.º 3
0
vector<float> cleanHeartRate(vector<float>& data) {
    vector<float> result;
    for(int i = 0; i < data.size(); i++) {
        float x = data[i];
        x = highPassFilter(x);
        result.push_back(x);
    }
    return result;
}
//-----------------------------------------------------------------------------
// Name: paCallback( )
// Desc: Callback from PortAudio
//-----------------------------------------------------------------------------
static int paCallback( const void *inputBuffer,
        void  *outputBuffer, unsigned long framesPerBuffer,
        const PaStreamCallbackTimeInfo* timeInfo,
        PaStreamCallbackFlags statusFlags, void *userData ) 
{
    /* Cast Appropriate Types and Define Some Useful Variables */
    (void) inputBuffer;
    float* out = (float*)outputBuffer;
    paData *data = (paData*)userData;
    int i, numberOfFrames, numInFrames;

    /* This if Statement Ensures Smooth VariSpeed Output */
    if (fmod((double)framesPerBuffer, data->src_data.src_ratio) == 0)
    {
    	numInFrames = framesPerBuffer;
    }
    else
    	numInFrames = (framesPerBuffer/data->src_data.src_ratio) + 2;

    /* Read FramesPerBuffer Amount of Data from inFile into buffer[] */
    numberOfFrames = sf_readf_float(data->inFile, data->src_inBuffer, numInFrames);

    /* Looping of inFile if EOF is Reached */
    if (numberOfFrames < framesPerBuffer/data->src_data.src_ratio) 
    {
        sf_seek(data->inFile, 0, SEEK_SET);
    }

    /* Inform SRC Data How Many Input Frames To Process */
    data->src_data.input_frames = numberOfFrames;
    data->src_data.end_of_input = 0;

    /* Perform SRC Modulation, Processed Samples are in src_outBuffer[] */
    if ((data->src_error = src_process (data->src_state, &data->src_data))) {   
        printf ("\nError : %s\n\n", src_strerror (data->src_error)) ;
        exit (1);
    }

    /* Perform Lowpass Filtering */
    if (data->lpf_On == true) {
        lowPassFilter(data->src_outBuffer, data->sfinfo1.channels);
    }

    /* Perform Highpass Filtering */
    if (data->hpf_On == true) {
        highPassFilter(data->src_outBuffer, data->sfinfo1.channels);
    }

    /* Prevent Blowing Out the Speakers Hopefully */
    brickwall(data->src_outBuffer, data->sfinfo1.channels);

    // printf("%ld, %ld\n",data->src_data.output_frames_gen, data->src_data.input_frames_used);

    /* Write Processed SRC Data to Audio Out and Visual Out */
    for (i = 0; i < framesPerBuffer * data->sfinfo1.channels; i++)
    {
        out[i] = data->src_outBuffer[i] * data->amplitude;
    }

    g_ready = true;
    return 0;
}