Ich bin eine Aufgabe von Bio Informatics nähern, und einige Funktionen aus einigen Zellen Bilder extrahieren müssen.Ausreißer SIFT Key Points in Cell Bild mit OpenCV
Ich habe SIFT-Algorithmus verwendet, um wichtige Punkte innerhalb des Bildes zu extrahieren, wie Sie auf dem Bild sehen können.
Wie Sie auch in dem Bild (rot eingekreist), einige der wichtigsten Punkte sind Ausreisser sehen können und ich will nicht auf sie jede Funktion berechnen.
Ich erhielt das cv::KeyPoint
Vektor mit dem folgenden Code:
const cv::Mat input = cv::imread("/tmp/image.jpg", 0); //Load as grayscale
cv::SiftFeatureDetector detector;
std::vector<cv::KeyPoint> keypoints;
detector.detect(input, keypoints);
aber ich würde von den vector
all diesen wichtigen Punkten verwerfen möchte, die zum Beispiel sagen, haben weniger als 3 wichtigsten Punkte innerhalb eines bestimmten Region of Interest (ROI) zentriert auf sie im Bild.
Daher muss ich die Anzahl der wichtigsten Punkte innerhalb einer bestimmten ROI, eine Funktion implementieren als Eingabe gegeben Rückkehr:
int function_returning_number_of_key_points_in_ROI(cv::KeyPoint, ROI);
//I have not specified ROI on purpose...check question 3
Ich habe drei Fragen:
- Gibt es eine vorhandene Funktion zu tun sowas ähnliches?
- Wenn nicht, können Sie mir helfen, zu verstehen, wie ich es selbst implementieren kann?
- Würdest du eine kreisförmige oder rechteckige ROI für diese Aufgabe verwenden und wie würdest du sie in der Eingabe angeben?
Hinweis:
Ich habe vergessen zu präzisieren, dass ich eine effiziente Implementierung für die Funktion haben möchten, dh für jeden Schlüsselpunkt bezüglich der relativen Position aller anderen zu überprüfen, es ist keine gute Lösung wäre (wenn es einen anderen Weg gibt).
Können Sie das Originalbild posten? Ich würde gerne etwas ausprobieren und dann die Ergebnisse zurücksenden, wenn es erfolgreich ist :) – mevatron
@mevatron - http://s18.postimage.org/jayhj4q3d/phase1_image1.jpg hier gehts, ich habe die RGB-Version hochgeladen, wandeln Sie es einfach in Graustufen um, wenn Sie wünschen .... lassen Sie mich wissen, was Sie tun;) – Matteo
Sie können RANSAC verwenden, wenn Sie ein Modell definieren können. RANSAC entscheidet, welche Punkte Inlier (passen Sie das Modell) und Ausreißer (passt nicht zum Modell). Vielleicht kann Ihr Modell so etwas wie 3 Punkte sein, die einen Bereich kleiner als X definieren (es bedeutet, dass sie nah genug sind). Es ist eine Idee. –