OK, I did a few comparisons in a foresty area around draynor and here are some conclusions:
cts (0) : tolerance has a large effect, often finds ground as well as trees if you pick a wrong colour.
cts(1) : not too bad, tolerance has a fairly strong effect relative to others.
cts(2) : tolerance doesn't have as much effect (at least without changing the modifiers), only very rarely finds ground if you pick a tree colour, probably can be improved to almost never if you set hmod and smod.
xyz using markus' function : I couldn't get it to find ground when picking a tree colour. Tolerance seems to have very little effect. Not as many points found as the other methods usually but is very reliable.
LAB using my function (below) : Finds a slightly different set of colours than the other functions. Colours it finds tend to look more visually similar than the other methods (eg. on trees, it might find the light side and not the back/top which is darker, where the others (especially hsl and xyz) have points in the darker area also). In terms of finding ground, it is between cts(1) and cts(2) in reliability with equal tolerance. However, tolerance has a strong effect on how many points it finds so it requires a lower tolerance than other methods to get the same number of points. Seems to work best with LRatio between 2 and 5.
Images to come.
// LRatio is a ratio of how much L (lightness) can change compared to a and b -
// allowing a greater range of luminance compared to chroma is similar to the
// hmod and smod of HSL and seems to work better for colour finding
Function LABSimilarColours(l,a,b,l1,a1,b1 : Extended; tol, lratio : Integer ) : Boolean;
begin
Result:=false;
if sqrt((pow(l-l1, 2) / lratio) + pow(a-a1, 2) + pow(b-b1, 2)) < (tol / (0.7 * ln(lratio) + 2))
// reason for divisor on tol is to try and get the number of points
// down to be similar to other methods at the same tolerance
then Result:=true;
end;