6

का उपयोग कर रहा Kmeans क्लस्टरिंग किया और OpenCV सी ++ एपीआई का उपयोग क्लस्टर केन्द्रों बाहर मिल गया है।महालनोबिस दूरी OpenCV

kmeans(data_points, clusterCount, labels, TermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0), 3, KMEANS_PP_CENTERS, cluster_centers); 

तब मैं इयूक्लिडियन दूरीलिए उपयोग कर रहा हूँ सब क्लस्टर केन्द्रों के खिलाफ एक नए डेटा बिंदु के लिए निकटतम क्लस्टर पाते हैं।

int distance = find_EucledianDist(new_datapoint, cluster_centers); 

मैं महालनोबिस दूरी बजाय इयूक्लिडियन दूरी कैसे प्रयोग करेंगे? मुझे पता है कि मुझे कोविरेन्स मैट्रिक्स की गणना करना है और इसे उलटा करना है और महलानोबिस दूरी ढूंढना है।

हालांकि, मुझे नहीं पता कि मैं यह कैसे करता हूं और क्या ऑर्डर (कोवर मैट्रिक्स, डेटा/मैट्रिक्स का उल्टा मैट्रिक्स ढूंढें)?

उत्तर

3

क्या यह लिंक आपको बहुत मदद नहीं कर सकता? :)

http://books.google.fr/books?id=seAgiOfu2EIC&pg=PA475&lpg=PA475&dq=mahalanobis+opencv&source=bl&ots=hSG09ijHLe&sig=H359_fRI53Pg12dYLOVUJpopb0g&hl=fr&sa=X&ei=O-JMT9-oAYem0AXIpL2eBQ&ved=0CEkQ6AEwBA#v=onepage&q=mahalanobis%20opencv&f=false

यह होगा: CalcCovarMatrix, cvInvert द्वारा पीछा किया, और अंत में cvMahalanobis

+0

यह वही करता है जो आप चाहते हैं, और प्रत्येक चरण के लिए संबंधित opencv फ़ंक्शन देता है :)। – jlengrand

+0

और केवल ओपनसीवी महालानोबिस फ़ंक्शन का उपयोग करें (मैंने आपका उत्तर संपादित किया है) –

+0

और भी बेहतर वास्तव में ^^ – jlengrand