Tuesday, October 14, 2014

Paper Review #8: ShortStraw

1. Paper Bibliography

  • Title: ShortStraw: A Simple and Effective Corner Finder for Polylines
  • Authors: Aaron Wolin, Brian Eoff, and Tracy Hammond
  • Publication: Proceedings of the Fifth Eurographics conference on Sketch-Based Interfaces and Modeling. Eurographics Association, 2008.

2. Summary

  • Main step
    1. Resampling the points of the stroke
    2. Calculating the "straw" distance between the endpoints of a window around each resampled point
    3. Taking the points with the minimum straw distance to be corners

  • Providing free-sketch recognition
    • A stroke is broken down into primitives.
    • The primitives can be recognized with high accuracy.
    • It is recombined using geometrical rules to allow for recognition of naturally sketched shapes
  • Corner finding = splitting a stroke into primitives
    • Find the minimum set of points such that, if the polyline is split at those points, the resulting primitives would consist of only lines.

3. Details

  • Resampling
    • same as $1 recognizer (but interspacing distance of the points is different).
    • based on diagonal length of the stroke's bounding box. (reason: various sizes)
Interspacing distance = the diagonal length of the bounding box / constant value
    • Increasing the constant val: too noisy 
    • Decreasing the constant val: over-smoothed 
  • Corner Finding
    • Bottom-Up: build corner from primitives
      • Set up initial corners
      • A corner is based on the length of "straw" (w is a constant window size) 
      • Euclidean distance
Straw_i = | P_i - w, P_i + w |
      • Straw: short, local minimum
      • If Straw_i < threshold(median Straw * 0.95) and is local minimum, it is a corner. 
    • Top-Down: insert or delete corners from higher-level pattern
      • Find missing corners or false corners
      • Adding
        • Line test (equality ratio) 
r = chord distance(a,b) / path distance(a,b)

        • If r > developer-set threshold(0.95), it is line.
      • Removing
        • If three corners are collinear, remove the middle one.

4. Experiment & Discussion

    • Training data (6 people * 11 shapes * 4 times - 20 errors = 244)
    • Compared targets: Sezgin's corner finder, Kim and Kim's
    • Measurement: 
      • correct corner accuracy(penalty for false negatives) 
      • all-or-nothing accuracy(penalty for both false positives and false negatives)
    • Complexity
      • Resampling points: O(n)
      • Calculating the straw for each points(bottom-up): O(n)
      • Calculating the median straw length: O(nlogn)
      • POST-PROCESS-CORNER(top-down): O(cn)
    • To reduce complexity: replace euclidean distance with a squared distance
    • Lack of recognizing curvature 

    5. My opinion

    I was wondered the result of testing circle shape. Probably it might not be suitable for circle shapes because I think that this would cause high complexity. However, it would be much nicer if corner recognition and circle recognition are combined.

    4 comments:

    1. Really nice review. I like your highlight notes and appropriate usage of table/graph. This post helps to go though this paper's idea again and gain a better understanding.

      ReplyDelete
    2. The idea of using this for a circle is really interesting. It would obviously have to be slightly different: maybe you could fix one point and then measure the distance from that point to all other points on the circle, and the longest distance would give you the diameter? Not sure if that would be the most efficient method of identifying a circle though.

      ReplyDelete
    3. I found the idea of using short straws really impressive. Two phases of this algorithm make sure that that we identify corners and then remove extra corners and find missed corners. This makes sure that we do not miss corners.I agree with Josh on the approach for circle identification but at the same time if we count the number of straws for a circle it will be very less so taht be a good measure to identify a circle.

      ReplyDelete
    4. Great paper summary! Clear explanation of the algorithm. We can use the same method in our project.

      ReplyDelete