Tell me more ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Does anyone know the syntax to DistanceFunction? I am trying to define my own function to use with ClusteringComponents; e.g.,

ClusteringComponents[img, DistanceFunction -> (Norm[#1 - #2] &)]

Needless to say it does not work as shown (it overflows for some reason). I also tried using ImageData@img but that does not even terminate.

share|improve this question
AT least in V8.0 ClusteringComponents[]doesn't seem to accept a custom DistanceFunction. Just those listed in the help – belisarius Jan 25 at 8:06

1 Answer

I tested ClusteringComponents with the examples provided in the Documentation Center (http://reference.wolfram.com/mathematica/ref/ClusteringComponents.html) of Mathematica. In Options > DistanceFunction there is an example provided how to apply your own DistanceFunction:

ClusteringComponents[{{1, 2}, 3, {10, 11}, {12, {13}}, 14}, 2, 1, 
     DistanceFunction -> (Abs[Length[#1] - Length[#2]] &)]

I tried to apply this to an image without any success. I only ended up with some very strange looking error messages. After a few more tests I found the following solution. First of all, ClusteringComponents seems to work with a selfmade DistanceFunction only if you provide the ImageData of a grayscale image. The following works:

Colorize@ClusteringComponents[ImageData[ColorConvert[img, "GrayScale"]], 3, 
  DistanceFunction -> (Norm[#1 - #2] &)]

I applied this to the following image

enter image description here

with the resulting image:

enter image description here

So at least it seems to work :) I really wonder what the implementation of ClusteringComponents looks like. To me this function is a little mystery now...

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.