DBScanアルゴリズムを使用して一連のポイントをクラスタリングしています。一連のポイントのIDのセットと、一連のクラスターがあり、各クラスターには一連のポイントがあります。クラスターとポイントIDを関連付けたいと思います。
たとえば、IDのセット{1,2,3,4}があります。ここで、2つのクラスターがあり、2つのクラスターに2つのポイントがある場合、最初のクラスターのこれら2つのポイントにはID 1,2があり、2番目のクラスターにはIDが必要です。 1つ3,4。また、4つのクラスターがあり、各クラスターに1つのポイントがある場合、ポイントのIDは1、2、3、および4になります。さらに、2つのクラスターがあるが、1つのクラスターに3つのポイントがあり、もう1つのクラスターに1つのポイントがある場合の場合、ポイントのIDは、最初のクラスターのポイントでは1、2、3であり、2番目のクラスターのポイントでは4である必要があります。
私はそれをコーディングしようとしましたが、そのシナリオを達成するための式の計算にとどまりました。
std::vector<int>_IDs;
// for each cluster
for( int j = 0; j<clusters.size();j++ )
{
// for each point in that cluster
for ( int i=0; i < clusters[j].m_Points.size(); i++)
{
// assign its ID from the _IDs array based and save it in Clusters Vector
clusters[j].m_IDs.push_back(_IDs[j+ i*clusters[j].m_Points.size()]);
}
}