Laser Sensing Display for UI interfaces in the real world

Dependencies:   mbed

Fork of skinGames_forktest by Alvaro Cassinelli

Revision:
33:43e8bc451ef0
Parent:
32:52273c3291fe
Child:
34:1244fa3f2559
--- a/classLaserSensingTrajectory.h	Mon Oct 29 14:28:47 2012 +0000
+++ b/classLaserSensingTrajectory.h	Mon Nov 05 06:08:35 2012 +0000
@@ -4,6 +4,14 @@
 #include <vector>
 using namespace std;
 
+// Thresholding mode: 
+enum thresholdingMode {FIXED, AUTO};
+
+
+//(1) fixed threshold: 
+#define FIXED_THRESHOLD 35
+
+//(1) Autothreshold:
 // CONTRAST RATIO to compute autoThreshold:
 // MIN_CONTRAST_RATIO is the minimum contrast between max and min intensity necessary to "accept" a black and white zone:
 #define MIN_CONTRAST_RATIO 1.8//1.7 // 3 seems good when lookup table does not work 
@@ -11,6 +19,8 @@
 #define THRESHOLD_FACTOR 0.5 //0.75 // 2/3 or 1/2 are good values 
 #define MIN_ACCEPTABLE_INTENSITY 16 // if maxI< this then we consider all the saccade on something black
 
+
+
 struct laserSensingPoint {
     // Position and color (after rendering)
    unsigned short x, y; // position of the point (after rendering - its integer, because it is in "laser projector pixels")
@@ -33,9 +43,11 @@
     void setDelayMirrors(int); // in general, the delay will depend on the number of points being DISPLAYED (in other terms, on the size of lsdTrajectory).
     void addDelayMirrors(int add_delay);
 
+    void setThresholdMode(unsigned char value) {modeThreshold=(value>0? AUTO : FIXED);};
+    void setFixedThreshold(unsigned char value) {fixedThreshold=value;};
     void setMinContrastRatio(float value) {min_contrast_ratio=value;};
     void setThresholdFactor(float value) {threshold_factor=value;};
-    void setMinAcceptableIntensity(float value) {min_acceptable_intensity=value;};
+    void setMinAcceptableIntensity(unsigned char value) {min_acceptable_intensity=value;};
     void multMinContrastRatio(float multfactor) {min_contrast_ratio*=multfactor;};
     void multThresholdFactor(float multfactor) {threshold_factor*=multfactor;};
 
@@ -47,9 +59,10 @@
     unsigned char delayMirrorSamples; // this is required because it will affect the way the blob behaves - it 
     //could be in the laser renderer, but by putting it here we can have more per-blob fine tunning
 
-    // parameters for thresholding:
+    // parameters for thresholding and thresholding mode:
+    thresholdingMode modeThreshold;
     float min_contrast_ratio, threshold_factor, min_acceptable_intensity;
-    unsigned char autoThreshold; // 0 to 255
+    unsigned char autoThreshold, fixedThreshold; // 0 to 255
     
     // Statistics and tests:
     //float lightRatio;