Ich löste das Problem! Vielen Dank für Ihren Tipp.
Ich verstehe nicht, welchen Wert der erste Parameter des Kmeans-Algorithmus braucht.
Mit diesem Tutorial analysierte ich das Problem und finde den richtigen Weg.
Imgproc.findContours(bw.clone(), contours, hierarchy, Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE);
Mat samples32final = new Mat(contours.size(), 2, CvType.CV_32F, new Scalar(0));
for (int j = 0 ; j<contours.size(); j++) {
Mat samples32f = new Mat((int) contours.get(j).size().height, 2, CvType.CV_32F, new Scalar(0));
for (int i = 0; i < (int) contours.get(j).size().height; i++) {
samples32f.put(i, 0, contours.get(j).get(i, 0)[0]);
samples32f.put(i, 1, contours.get(j).get(i, 0)[1]);
}
samples32f.reshape((int) contours.get(j).size().height, 2);
Mat labels = new Mat((int) contours.get(j).size().height, 2, CvType.CV_32SC1);
TermCriteria criteria = new TermCriteria(TermCriteria.EPS + TermCriteria.MAX_ITER, 100, 1.0);
Mat centers = new Mat();
Core.kmeans(samples32f, 1, labels, criteria, 10, Core.KMEANS_RANDOM_CENTERS, centers);
samples32final.put(j,0,centers.get(0,0)[0]);
samples32final.put(j,1,centers.get(0,1)[0]);
}
samples32final.reshape(contours.size(), 2);
Mat labels = new Mat(contours.size(), 2, CvType.CV_32SC1);
TermCriteria criteria = new TermCriteria(TermCriteria.EPS + TermCriteria.MAX_ITER, 100, 1.0);
Mat centers = new Mat();
Core.kmeans(samples32final, 5, labels, criteria, 10, Core.KMEANS_PP_CENTERS, centers);
In der ersten Zeile wurden die Konturen des Bildes gefunden. In der ersten for-Schleife findet die Mitte jedes Pip mit Clustergröße 1 und speichert das Zentrum in einer neuen Matte. Nach der for-Schleife wird die zentrale Position aller Pips in den variablen samples32final gespeichert. Mit dieser Variable kann die Mitte des Würfels mit Kmeans gefunden werden.
Entschuldigung für das schlechte Englisch ...
Was möchten Sie dann Cluster? Sie geben nicht nur die kmeans willkürlichen Längenkurven, sondern Merkmalsvektoren fester Größe. Es sei denn, Sie haben etwas besonderes für "Feature-Extraktion", dann ist hier ein Hinweis: affin-invariante Fourier-Deskriptoren. – mainactual
Vielen Dank für die Antwort. Ich möchte die Kerne von 5 Würfeln zusammenfassen. –
Vielleicht veröffentlichen Sie ein Beispielbild, auf dem Sie das gewünschte Ergebnis kommentieren? – mainactual