|
@@ -96,7 +96,7 @@ namespace bbiwarg.Recognition.FingerRecognition
|
|
{
|
|
{
|
|
trail.removeFirstSlices(Constants.FingerRemoveNumSlicesForCorrection);
|
|
trail.removeFirstSlices(Constants.FingerRemoveNumSlicesForCorrection);
|
|
trail.reverse();
|
|
trail.reverse();
|
|
- trail = expandTrail(trail);
|
|
|
|
|
|
+ trail = expandTrail(trail, true);
|
|
trail.reverse();
|
|
trail.reverse();
|
|
return trail;
|
|
return trail;
|
|
}
|
|
}
|
|
@@ -107,7 +107,7 @@ namespace bbiwarg.Recognition.FingerRecognition
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- private FingerSliceTrail expandTrail(FingerSliceTrail trail)
|
|
|
|
|
|
+ private FingerSliceTrail expandTrail(FingerSliceTrail trail, bool reversed = false)
|
|
{
|
|
{
|
|
Vector2D currentDirection = trail.getEndDirection();
|
|
Vector2D currentDirection = trail.getEndDirection();
|
|
Vector2D currentPosition = trail.EndSlice.Mid + Constants.FingerStepSize * currentDirection;
|
|
Vector2D currentPosition = trail.EndSlice.Mid + Constants.FingerStepSize * currentDirection;
|
|
@@ -120,7 +120,8 @@ namespace bbiwarg.Recognition.FingerRecognition
|
|
|
|
|
|
while (currentPosition.isInBound(Vector2D.Zero, depthImage.BottomRight) && gapCounter <= Math.Min(numSlices, Constants.FingerMaxGapCounter))
|
|
while (currentPosition.isInBound(Vector2D.Zero, depthImage.BottomRight) && gapCounter <= Math.Min(numSlices, Constants.FingerMaxGapCounter))
|
|
{
|
|
{
|
|
- nextSlice = findFingerSliceFromMid(currentPosition, currentDirection);
|
|
|
|
|
|
+ Vector2D direction = (reversed) ? currentDirection.getInverse() : currentDirection;
|
|
|
|
+ nextSlice = findFingerSliceFromMid(currentPosition, direction);
|
|
|
|
|
|
if (nextSlice != null && Math.Abs(nextSlice.Length - lastSlice.Length) <= Constants.FingerMaxSliceDifferencePerStep)
|
|
if (nextSlice != null && Math.Abs(nextSlice.Length - lastSlice.Length) <= Constants.FingerMaxSliceDifferencePerStep)
|
|
{
|
|
{
|