3 डी स्पेस में एन पॉइंट्स के सेट को देखते हुए, मैं एसवीडी और ईजिन का उपयोग करके सबसे अच्छा फिटिंग विमान ढूंढने की कोशिश कर रहा हूं।ईजीन और एसवीडी पॉइंट्स के सेट दिए गए सर्वश्रेष्ठ फिटिंग विमान को खोजने के लिए
मेरे एल्गोरिथ्म है:
- केंद्र डेटा बिंदुओं के आसपास (0,0,0)।
- बिंदु निर्देशांक के 3xN मैट्रिक्स फॉर्म।
- मैट्रिक्स के एसवीडी की गणना करें।
- विमान के सामान्य के रूप में कम से कम एकवचन मूल्य के अनुरूप सबसे छोटा एकवचन वेक्टर सेट करें।
- सामान्य से विमान से सामान्य ∙ केंद्र के रूप में दूरी निर्धारित करें।
मैं समझ नहीं Eigen's SVD Module उपयोग करने के लिए कैसे छोटी से छोटी विलक्षण वेक्टर बिंदु के कम से कम विलक्षण मान के संगत को खोजने के लिए मैट्रिक्स समन्वय करता है।
अब तक मैं इस कोड है (कदम 1, 2 और एल्गोरिथ्म के 5):
Eigen::Matrix<float, 3, 1> mean = points.rowwise().mean();
const Eigen::Matrix3Xf points_centered = points.colwise() - mean;
int setting = Eigen::ComputeThinU | Eigen::ComputeThinV;
Eigen::JacobiSVD<Eigen::Matrix3Xf> svd = points_centered.jacobiSvd(setting);
Eigen::Vector3d normal = **???**
double d = normal.dot(mean);
आपने अभी तक किस कोड का प्रयास किया है? –
प्रश्न के लिए कोड जोड़ा गया। – dustymax
इस [प्रस्तुति] के स्लाइड 97-99 देखें (http://downloads.tuxfamily.org/eigen/eigen_CGLibs_Giugno_Pisa_2013.pdf)। – ggael