X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=server%2Fsensors%2Fdilatometer.c;h=3b05c5f519f62b22a1eed8f0f149496f8f1246c0;hb=afa4d0628fffc7fb964f0d99db24e744e79cd653;hp=18d5e686cf60b5c36f358584f0335d05ecfb8724;hpb=f316d3b0234badc48d97ef3fcc607f7eddcb9a62;p=matches%2FMCTX3420.git diff --git a/server/sensors/dilatometer.c b/server/sensors/dilatometer.c index 18d5e68..3b05c5f 100644 --- a/server/sensors/dilatometer.c +++ b/server/sensors/dilatometer.c @@ -15,12 +15,6 @@ static double test_left, test_right; static double lastPosition; -// Canny Edge algorithm variables -int blur = 5; -int lowThreshold = 30; -int ratio = 3; -int kernel_size = 3; - /** Buffers for storing image data. **/ static CvMat * g_srcRGB = NULL; // Source Image static CvMat * g_srcGray = NULL; // Gray scale of source image @@ -140,7 +134,7 @@ void CannyThreshold() //cvWaitKey(0); // Reduce noise with a kernel blurxblur. Input the grayscale source image, output to edges. (0's mean it's determined from kernel sizes) - cvSmooth( g_srcGray, g_edges, CV_GAUSSIAN, blur, blur ,0 ,0 ); + cvSmooth( g_srcGray, g_edges, CV_GAUSSIAN, BLUR, BLUR ,0 ,0 ); //Save the image //cvSaveImage("test_blurred.jpg",g_edges,0); @@ -149,7 +143,7 @@ void CannyThreshold() //cvWaitKey(0); // Find the edges in the image - cvCanny( g_edges, g_edges, lowThreshold, lowThreshold*ratio, kernel_size ); + cvCanny( g_edges, g_edges, LOWTHRESHOLD, LOWTHRESHOLD*RATIO, KERNELSIZE ); //Save the image //cvSaveImage("test_edge.jpg",g_edges,0); @@ -165,7 +159,7 @@ void CannyThreshold() * @param samples - Number of rows to scan (increasing will slow down performance!) * @returns true on successful read */ -bool Dilatometer_GetExpansion( double * value, int samples) +bool Dilatometer_GetExpansion( int id, double * value, int samples) { bool result = false; double average = 0; @@ -227,12 +221,21 @@ bool Dilatometer_GetExpansion( double * value, int samples) { result = true; // Successfully found an edge // If the experiment has already been initialised - if( lastPosition > 0) - { - // Find the rate of expansion and convert to mm. Will give a negative result for compression. - *value = (average - lastPosition) * SCALE; - lastPosition = average; // Current position now becomes the last position - } + switch (id) + { + case DIL_POS: + *value = average*SCALE; + return result; + case DIL_DIFF: + if( lastPosition > 0) + { + // Find the rate of expansion and convert to mm. Will give a negative result for compression. + *value = (average - lastPosition) * SCALE; + lastPosition = average; // Current position now becomes the last position + } + return result; + default: + return false; } } return result; } @@ -244,7 +247,7 @@ bool Dilatometer_GetExpansion( double * value, int samples) */ bool Dilatometer_Read(int id, double * value) { - bool result = Dilatometer_GetExpansion(value, SAMPLES); + bool result = Dilatometer_GetExpansion(id, value, SAMPLES); return result; } @@ -256,7 +259,7 @@ bool Dilatometer_Init(const char * name, int id) // Make an initial reading (will allocate memory the first time only). double val; lastPosition = 0; // Reset the last position - bool result = Dilatometer_GetExpansion(&val, 1); + bool result = Dilatometer_GetExpansion(DIL_POS, &val, 1); return result; }