[Insight-users] Variable clusters
Mark Bouts
mark at invivonmr.uu.nl
Wed Oct 24 22:43:35 EDT 2007
Hi,
I'm currently working on a clustering problem for data I'm currently
working on. Right now I'm using the KdTreeBasedKMeansEstimator which seems
to work fine. However I do not want to prespecify te number of cluster I
want to use. I want the method to be unbiased. Now I've tried the
ImageKmeansModelEstimator which has a way of splitting the clusters to
obtain an 'optimal' result, however the prespecified number of clusters
seems to be optimal which is not the case since some clusters aren't used
in the classification.
I've set the OffsetAdd and OffSetMultiply options.
I currently the following options:
typedef itk::Statistics::DistanceToCentroidMembershipFunction<
typedef
itk::ImageKmeansModelEstimator<ImageType,MembershipFunctionType>
ImageKMeansEstimatorType;
ImageKMeansEstimatorType::Pointer IKME =
ImageKMeansEstimatorType::New();
IKME->SetInputImage(initImage);
IKME->SetOffsetAdd(0.01);
IKME->SetOffsetMultiply(0.01);
IKME->SetNumberOfModels(clusters);
IKME->Update();
std::cout<<"Split attempts:
"<<IKME->GetMaxSplitAttempts()<<std::endl;
vnl_matrix<double> codebook = IKME->GetKmeansResults();
>From this I use a mahalanobis membership function to classify to the
datapoints in the image.
The algorithm estimates the 'codebook' entries, but doesn't seem to be
able to find the optimal number of clusters. Additionally I don't want to
prespecify te number of clusters.
Anyone some suggestions?
Additionally am I using te MRFFilter to finetune the result, except in
this case the result gets far to smooth. I've tried to
adjust the smoothing filter to a value far below the suggested 1.5 (ie
0.3) and the result is exactly the seem when using 1.5. The smoothing
factor is no integer value is it? Adjusting the neighborhood weights seems
to have little improvement. Are there other options I should or could try?
Thanks!
Mark
More information about the Insight-users
mailing list