Поскольку ваша кластеризация основана на метрике близости к форме, возможно, вам нужна какая-либо форма маркировки подключенных компонентов. UNION-FIND может дать вам быстрый базовый набор примитивов.
Только для объединения: начинайте каждую точку в другом наборе и объединяйте их, если они соответствуют какому-либо критерию близости, на который влияет локальная колинеарность, поскольку это кажется вам важным. Затем продолжайте слияние до тех пор, пока не пройдете какое-то сверхпороговое условие сложности вашего слияния. Если вы рассматриваете это как растущую строку (только объединяете вещи на их концах), тогда некоторые структуры данных становятся проще. Все ваши кластеры - открытые линии и кривые? Нет замкнутых кривых, как круги?
Линии пересечения сложнее найти правильное решение, либо вы должны найти способ слияния, а затем разделить, либо вы установили критерии слияния, чтобы чрезвычайно благоприятствовать колинеарности, и вам повезло на линиях пересечения.