Я работаю над проектом, который выполняет сегментацию путем кластеризации k-mean. Я должен применить кластеризацию K-средних для K = [2, 3, 4, ... K-max] и рассчитать среднее расстояние каждой точки до ее центра кластера. Кроме того, я должен определить K *, для которого это расстояние не сильно меняется при переключении на K * + 1. Kmax = 20.Как сегментировать цветное изображение с помощью кластеризации K-типа?
Насколько я записал код ниже. Моя первая забота возникла, я сделал что-то не так?
I = imread('image');
imshow(I);
Id = im2double(I);
red = I(:,:,1);
green = I(:,:,2);
blue = I(:,:,3);
[c, r] = meshgrid(1:size(I,1), 1:size(I,2));
X = [red(:) green(:) blue(:) red(:) c(:)];
K = 2:20; %Cluster Numbers
[IDX, C, SUMD] = kmeans(X, K);
ave_dist(K) = sum(SUMD(:))/number_of_pixels_in_image;
1) Как я собираюсь построить среднее расстояние до центров кластеров как функцию K?
2) Как определить наименьший K *, для которой
`| ave_dist(K*) - ave_dist(K*+1) |< THR_K. THR_K = 100`
Спасибо.
Matlab? Можете добавить тег. – MSalters
да, спасибо, сэр, почему-то я забыл, что .. – aod
Посмотрите на [ЭТОТ ВОПРОС] (http://stackoverflow.com/questions/32034344/accurately-detect-color-regions-in-an- image-using-k-means-clustering? rq = 1) –