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.TUIOServer; //LogSubject.Timer; // 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 = "172.20.10.6"; public static readonly int TuioPort = 3333; // image public static readonly int ImageWidth = 320; public static readonly int ImageHeight = 240; public static readonly Vector2D ImageMaxPixel = new Vector2D(ImageWidth - 1, ImageHeight - 1); public static readonly float ImageDiagonalLength = ImageMaxPixel.Length; // 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 = 80; public static readonly int EdgeImageCannyLinkingThreshold = 60; 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 FingerNumSlicesForDirectionDetection = FingerMinNumSlices / 4; 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 = 20; // finger tracking public static readonly int FingerNumFramesDetectedUntilTracked = 5; public static readonly int FingerNumFramesLostUntilDeleted = 10; public static readonly float FingerMinSimilarityForTracking = 0.7f; //public static readonly float FingerSimilarityMaxAngle = (float)(45 * Math.PI / 180); // 45° //public static readonly float FingerSimilarityMaxParallelDistance = 100; //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; public static readonly float PalmMinPrecentageQuadForeground = 0.8f; public static readonly float PalmMaxPrecentageQuadForegroundReset = 0.5f; //palm Grid public static readonly int PalmGridRows = 3; public static readonly int PalmGridColumns = 3; // touch detection public static readonly float TouchEventMinTouchValue = 0.3f; public static readonly int TouchEventAreaSize = 30; public static readonly int TouchEventFloodfillLowDiff = 1; public static readonly int TouchEventFloodfillHighDiff = 3; public static readonly int TouchEventTipInsideFactor = 1; public static readonly int TouchEventTipOutsideFactor = 7; public static readonly float TouchmXX = 0.0008f; public static readonly float TouchmXY = 0.0f; public static readonly float TouchmYY = 0.0008f; public static readonly float TouchProcessNoise = 3.0e-4f; // touch tracking public static readonly int TouchEventNumFramesDetectedUntilTracked = 1; public static readonly int TouchEventNumFramesLostUntilDeleted = 3; public static readonly float TouchEventMinSimilarityForTracking = 0.7f; // 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.Yellow; public static readonly Color TouchEventVisualizerPointColor = Color.Red; public static readonly Color TouchEventVisualizerGridColor = Color.White; 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; } }