Going off of @corey979 's comment. 
A slightly more rigorous way to fix your problem with corey's answer is to use the `standard deviation`, as opposed to the arbitrary rounding of `1`.

    Length /@ 
     DeleteDuplicates /@ (Round[#, StandardDeviation[#]/35] & /@ 
        Transpose[pts])

Note that the `35` is arbitrary, and you should modify it to whatever works best for you. 

Also, this works for `pts*100`