Laser Sensing Display for UI interfaces in the real world
Fork of skinGames_forktest by
Diff: classLaserSensingTrajectory.h
- 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;