using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using bbiwarg.Utility; namespace bbiwarg { class Constants { // Logger public static readonly LogSubject LogLevel = LogSubject.FingerTracker; // Output public static readonly int OutputNumImages = 5; public static readonly int OutputNumImagesPerRow = 3; public static readonly float OutputScaleFactor = 1f; // output window size is scaled by this factor (from necessary size for images) // TUIO public static readonly String TuioIP = "127.0.0.1"; public static readonly int TuioPort = 3333; // confidence image public static readonly int ConfidenceImageMinThreshold = 500; // depth image public static readonly int DepthImageMedianSize = 3; public static readonly int DepthImageDepthRange = 200; // <255 // edge image public static readonly int EdgeImageCannyStartThreshold = 100; public static readonly int EdgeImageCannyLinkingThreshold = 75; public static readonly int EdgeImageCannySize = 3; public static readonly int EdgeImageRoughNumDilationIterations = 1; // finger detection public static readonly int FingerStepSize = 2; public static readonly int FingerMaxGapCounter = 5; public static readonly int FingerMaxSliceDifferencePerStep = 5; public static readonly int FingerMinNumSlices = 30 / FingerStepSize; public static readonly int FingerMaxWidth = 30; public static readonly int FingerMinWidth = 5; public static readonly int FingerRemoveNumSlicesForCorrection = 5; public static readonly int FingerNumSlicesForRelativeDirection = FingerRemoveNumSlicesForCorrection; public static readonly int FingerContourMargin = 2; public static readonly int FingerSliceOverlapFactor = 2; public static readonly int FingerCrippleOutFactor = 8; public static readonly int FingerCrippleOutMinDifference = 15; // finger tracking public static readonly int FingerNumFramesUntilTracked = 5; public static readonly int FingerNumFramesUntilLost = 10; public static readonly float FingerMinSimilarityForTracking = 0.1f; public static readonly float FingerSimilarityMaxTipPointDistance = 100; public static readonly float FingerSimilarityMaxHandPointDistance = 50; public static readonly float FingerSimilarityMaxAngle = (float)(30 * Math.PI / 180); // 30° public static readonly float FingerSimilarityMaxParallelDistance = 80; public static readonly float FingerSimilarityMaxVerticalDistance = 20; // hand detection public static readonly float HandMaxSize = 0.7f; // palm detection public static readonly float PalmMinDefectMidFingerLineDistance = 20; // defects with mid point ((start + end) / 2) closer than this to a finger line are removed public static readonly float PalmMaxThumbDefectAngle = 110; // degree public static readonly float PalmMaxThumbDefectStartEndLengthQuotient = 2.3f; public static readonly float PalmMinThumbDefectStartEndLengthQuotient = 1.2f; public static readonly float PalmMinTumbDefectDepthThumbLengthQuotient = 0.8f; public static readonly float PalmMaxTumbDefectDepthThumbLengthQuotient = 1.2f; public static readonly float PalmThumbDefectmXX = 50.0f; public static readonly float PalmThumbDefectmXY = -25.0f; public static readonly float PalmThumbDefectmYY = 50.0f; public static readonly float PalmThumbDefectProcessNoise = 5.0e+1f; public static readonly int PalmNumFramesNoHandReset = 5; public static readonly float PalmMinAreaQuotient = 0.6f; public static readonly float PalmMaxAreaQuotient = 1.4f; //palm Grid public static readonly int PalmGridRows = 3; public static readonly int PalmGridColumns = 3; // touch detection public static readonly float TouchEventMinTouchValue = 0.4f; public static readonly int TouchEventAreaSize = 30; public static readonly int TouchEventFloodfillLowDiff = 1; public static readonly int TouchEventFloodfillHighDiff = 2; public static readonly int TouchEventTipInsideFactor = 2; public static readonly int TouchEventTipOutsideFactor = 7; public static readonly float TouchmXX = 0.005481396f; public static readonly float TouchmXY = 0.0003090923f; public static readonly float TouchmYY = 0.0005702336f; public static readonly float TouchProcessNoise = 3.0e-4f; // touch tracking public static readonly int TouchEventNumFramesUntilTracked = 2; // colors public static readonly Color ColorDetected = Color.Turquoise; public static readonly Color ColorTracked = Color.Yellow; //public static readonly Color EdgeColor = Color.Blue; // edgeImage draw direct to blue chanel from outputImage public static readonly Color FingerSliceColor = Color.Magenta; public static readonly Color FingerDetectedColor = ColorDetected; public static readonly Color FingerTrackedColor = ColorTracked; public static readonly Color FingerTipOutSliceColor = Color.Gray; public static readonly Color FingerHandOutSliceColor = Color.DarkSlateGray; public static readonly Color FingerContourColor = Color.Red; public static readonly Color FingerIDColor = Color.White; public static readonly Color TouchEventDetectedColor = ColorDetected; public static readonly Color TouchEventTrackedColor = ColorTracked; public static readonly Color TouchEventTipColor = Color.CornflowerBlue; public static readonly Color TouchEventAreaMatchedSubtractColor = Color.DarkOrange; public static readonly Color TouchEventAreaNonMatchedSubtractColor = Color.DarkSlateGray; public static readonly Color TouchEventStatusBarColor = Color.Green; public static readonly Color TouchEventVisualizerLineColor = Color.White; public static readonly Color TouchEventVisualizerPointColor = Color.Red; public static readonly Color PalmQuadColor = Color.Blue; public static readonly Color PalmGridColor = Color.CornflowerBlue; public static readonly Color PalmConturColor = Color.Red; public static readonly Color PalmConvexHullColor = Color.Green; public static readonly Color PalmThumbDefectColor = Color.Lime; } }