From d17b33131c14864bd1eae275f49a3f148e21cf29 Mon Sep 17 00:00:00 2001 From: Leo Chan Date: Thu, 22 Oct 2020 01:53:21 -0400 Subject: Squashed commit of the sb-vbs branch. Includes the SD-VBS benchmarks modified to: - Use libextra to loop as realtime jobs - Preallocate memory before starting their main computation - Accept input via stdin instead of via argc Does not include the SD-VBS matlab code. Fixes libextra execution in LITMUS^RT. --- SD-VBS/common/toolbox/lagrcv/calcTextureMex.cc | 53 ++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 SD-VBS/common/toolbox/lagrcv/calcTextureMex.cc (limited to 'SD-VBS/common/toolbox/lagrcv/calcTextureMex.cc') diff --git a/SD-VBS/common/toolbox/lagrcv/calcTextureMex.cc b/SD-VBS/common/toolbox/lagrcv/calcTextureMex.cc new file mode 100755 index 0000000..f91d184 --- /dev/null +++ b/SD-VBS/common/toolbox/lagrcv/calcTextureMex.cc @@ -0,0 +1,53 @@ + +/* compile with +rm liblagrcv.a +gcc -c lagrcv.cpp +ar rc liblagrcv.a lagrcv.o +ranlib liblagrcv.a +mex7 calcTextureMex.cc -L/home/ikkjin/LagrMatlab/opencv/matlab -llagrcv -I/home/ikkjin/LagrMatlab/opencv/matlab/ +*/ + +#include "mex.h" +#include "lagrcv.h" +#include +#include + +// TODO: add number of corners parameter +void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { + // usage: [ lambda tr det c_xx c_xy c_yy] = + // goodFeaturesToTrack(image, winSize) + // image must be single-channel, 8-bit + + double *image; + int winSize = (int)mxGetScalar(prhs[1]); + double *lambda, *tr, *det, *c_xx, *c_xy, *c_yy; + const int *imdims; + //double dx[360000];//[MAX_IMAGE_SIZE_1D]; + //double dy[360000];//[MAX_IMAGE_SIZE_1D]; + double *dx, *dy; + + image = (double*)mxGetPr(prhs[0]); + imdims = mxGetDimensions(prhs[0]); + dx=(double*)malloc(sizeof(double)*imdims[0]*imdims[1]); + dy=(double*)malloc(sizeof(double)*imdims[0]*imdims[1]); + + plhs[0] = mxCreateNumericMatrix(imdims[0], imdims[1], mxDOUBLE_CLASS, mxREAL); + plhs[1] = mxCreateNumericMatrix(imdims[0], imdims[1], mxDOUBLE_CLASS, mxREAL); + plhs[2] = mxCreateNumericMatrix(imdims[0], imdims[1], mxDOUBLE_CLASS, mxREAL); + plhs[3] = mxCreateNumericMatrix(imdims[0], imdims[1], mxDOUBLE_CLASS, mxREAL); + plhs[4] = mxCreateNumericMatrix(imdims[0], imdims[1], mxDOUBLE_CLASS, mxREAL); + plhs[5] = mxCreateNumericMatrix(imdims[0], imdims[1], mxDOUBLE_CLASS, mxREAL); + + lambda = (double*)mxGetPr(plhs[0]); + tr = (double*)mxGetPr(plhs[1]); + det = (double*)mxGetPr(plhs[2]); + c_xx = (double*)mxGetPr(plhs[3]); + c_xy = (double*)mxGetPr(plhs[4]); + c_yy = (double*)mxGetPr(plhs[5]); + + calcSobel(image, imdims[0], imdims[1], dx, dy); + calcGoodFeature(dx, dy, imdims[0], imdims[1], winSize, + lambda, tr, det, c_xx, c_xy, c_yy); + free(dx); + free(dy); +} -- cgit v1.2.2