Mi sto avvicinando a un compito di BioInformatica e ho bisogno di estrarre alcune caratteristiche da alcune immagini di celle.Scartare i punti chiave SIFT con OpenCV nell'immagine cella
Ho usato l'algoritmo SIFT per estrarre i punti chiave all'interno dell'immagine, come potete vedere nell'immagine.
Come si può anche vedere nella foto (cerchiato in rosso), alcuni punti chiave sono valori erratici e non voglio per calcolare qualsiasi funzione su di loro.
ho ottenuto il cv::KeyPoint
vettore con il seguente codice:
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);
ma vorrebbe eliminare dalle vector
tutti quei punti chiave che, diciamo per esempio, hanno meno di 3 punti chiave all'interno di un certo regione di interesse (ROI) centrata su di essi nell'immagine.
Quindi ho bisogno di implementare una funzione che restituisce il numero dei punti chiave all'interno di una certa ROI dato come input:
int function_returning_number_of_key_points_in_ROI(cv::KeyPoint, ROI);
//I have not specified ROI on purpose...check question 3
Ho tre domande:
- C'è qualche funzione esistente fare qualcosa di simile?
- Se no, puoi darmi un aiuto per capire come implementarlo da solo?
- Utilizzeresti una ROI circolare o rettangolare per questa attività? E come la specificheresti in input?
Nota:
ho dimenticato di specificare che vorrei un'implementazione efficace per la funzione, vale a dire il controllo per ogni punto fondamentale la posizione relativa di ogni altro rispetto ad essa non sarebbe una buona soluzione (se esiste un altro modo di fare).
Puoi postare l'immagine originale? Mi piacerebbe provare qualcosa, e poi postare i risultati se ha successo :) – mevatron
@mevatron - http://s18.postimage.org/jayhj4q3d/phase1_image1.jpg ecco qui, ho caricato la versione RGB, basta convertirlo in scala di grigi se vuoi ... fammi sapere cosa stai facendo;) – Matteo
Puoi usare RANSAC, se puoi definire un modello. RANSAC deciderà quali punti sono inlier (adatti al modello) e valori anomali (non si adatta al modello). Forse il tuo modello può essere qualcosa come 3 punti che definiscono un'area più piccola di X (significa che sono abbastanza vicini). È un'idea –