Я думаю, что вы пытаетесь использовать две метрики расстояния с методом, который поддерживает только одну метрику. Изображение имеет неявную пространственную метрику между пикселями, но метод спектральной кластеризации не справляется с этим. Он рассматривает изображение как пакет пикселей.
Относительно M
, N
и K
; M * N = K
. Оба выражения описывают количество объектов, которые будут сгруппированы, что в вашем случае является количеством пикселей.
Матрица сродства, A
является прореженной версией матрицы подобия, S
. Например. если два объекта / пикселя недостаточно похожи, они не являются смежными.
Один из способов построения матрицы смежности заключается в следующем:
S(i, j) = color_intensity_distance( pixel(i), pixel(j) )
A(i, j) = exp( - S(i,j) ), if S(i,j) <= epsilon
A(i, j) = 0, otherwise
Чтобы повысить производительность, вы должны искать библиотеку разреженных матриц. Они очень эффективны при обработке матриц со многими нулями.
Ссылка о спектральной кластеризации.