|
@@ -226,32 +226,22 @@ namespace bbiwarg.Recognition.FingerRecognition
|
|
|
|
|
|
private FingerSliceTrail orderTrailTipToHand(FingerSliceTrail trail)
|
|
private FingerSliceTrail orderTrailTipToHand(FingerSliceTrail trail)
|
|
{
|
|
{
|
|
- int numSlices = trail.NumSlices;
|
|
|
|
- int numSlices_2 = numSlices/2;
|
|
|
|
- int numAbove = 0;
|
|
|
|
- int numBelow = 0;
|
|
|
|
- float sumAbove = 0;
|
|
|
|
- float sumBelow = 0;
|
|
|
|
- for (int i = 0; i < numSlices; i++) {
|
|
|
|
- float length = trail[i].Length;
|
|
|
|
- if (i < numSlices_2)
|
|
|
|
- {
|
|
|
|
- numBelow++;
|
|
|
|
- sumBelow += length;
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- numAbove++;
|
|
|
|
- sumAbove += length;
|
|
|
|
- }
|
|
|
|
|
|
+ int numSlicesForDirectionDetection = Constants.FingerNumSlicesForDirectionDetection;
|
|
|
|
+ int maxIndex = trail.NumSlices-1;
|
|
|
|
+ float sumStart = 0;
|
|
|
|
+ float sumEnd = 0;
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < numSlicesForDirectionDetection; i++) {
|
|
|
|
+ sumStart += trail[i].Length;
|
|
|
|
+ sumEnd += trail[maxIndex - i].Length;
|
|
}
|
|
}
|
|
|
|
|
|
- float avergaeAbove = sumAbove / numAbove;
|
|
|
|
- float averageBelow = sumBelow / numBelow;
|
|
|
|
|
|
|
|
- Console.WriteLine(averageBelow + "\t" + avergaeAbove);
|
|
|
|
|
|
+ float avergaeStart = sumStart / numSlicesForDirectionDetection;
|
|
|
|
+ float averageEnd = sumEnd / numSlicesForDirectionDetection;
|
|
|
|
|
|
//check direction
|
|
//check direction
|
|
- if (avergaeAbove < averageBelow)
|
|
|
|
|
|
+ if (avergaeStart > averageEnd)
|
|
trail.reverse();
|
|
trail.reverse();
|
|
|
|
|
|
return trail;
|
|
return trail;
|