पर एक विमान फिट करें मैं कम से कम वर्ग विधि के साथ एक 3 डी बिंदु सेट पर एक विमान फिट कर रहा हूं। मेरे पास पहले से ही एल्गोरिदम है, लेकिन मैं इसे कम से कम वर्ग का उपयोग करने के लिए संशोधित करना चाहता हूं। मतलब मेरे पास प्रत्येक बिंदु के लिए वजन है (बड़ा वजन, विमान को बिंदु के करीब होना चाहिए)। योगभारित कम से कम वर्ग - 3 डी पॉइंट सेट
कंप्यूट:
for(Point3D p3d : pointCloud) {
pos = p3d.getPosition();
fSumX += pos[0];
fSumY += pos[1];
fSumZ += pos[2];
fSumXX += pos[0]*pos[0];
fSumXY += pos[0]*pos[1];
fSumXZ += pos[0]*pos[2];
fSumYY += pos[1]*pos[1];
fSumYZ += pos[1]*pos[2];
}
से मैट्रिक्स बनाने:
double[][] A = {
{fSumXX, fSumXY, fSumX},
{fSumXY, fSumYY, fSumY},
{fSumX, fSumY, pointCloud.size()}
};
double[][] B = {
{fSumXZ},
{fSumYZ},
{fSumZ}
};
Ax = b हल से
और 3
वर्तमान एल्गोरिथ्म (वजन) के बिना इस तरह दिखता है समाधान के घटक फिट सादे के गुणांक हैं ...
एस ओ, क्या आप कृपया वजन कम करने के लिए इसे संशोधित करने में मेरी सहायता कर सकते हैं? धन्यवाद!
FYI करें - आप अंक के बहुत सारे (> कहते हैं कि 20) और/हो सकता है या निर्देशांक अगर एक बड़ी ऑफसेट, कभी आंकड़ों की गणना नहीं है जिस तरह से आप कर रहे हैं (कच्चे स्थिति के वर्गों का रकम लेने के द्वारा) - इसमें संख्यात्मक त्रुटियों की खराब संवेदनशीलता है। कम से कम, आप पहले एक्स/वाई/जेड निर्देशांक के औसत मूल्य को घटा सकते हैं, फिर अपनी प्रसंस्करण करें, फिर अंत में ऑफसेट को वापस जोड़ें। ऐसा करने के अन्य एल्गोरिदम-विशिष्ट तरीके हैं, लेकिन मुझे समझ में नहीं आता कि आपका एल्गोरिदम कम से कम वर्गों का उपयोग कैसे करता है, इसलिए इससे अधिक मदद नहीं मिल सकती है। –
ऑफ़सेट द्वारा आपका क्या मतलब है? (क्षमा करें, इस संदर्भ में इसे समझ में नहीं आता)। –
त्वरित उदाहरण: अंक पी 1 = (10001, 10002, 10003), पी 2 = (10005, 10006, 10007), पी 3 = (1000 9, 10004, 10008)। इनका मूल्य है (10005, 10004, 10006)। इसलिए आप इस राशि के विपरीत बिंदु निर्देशांक को ऑफ़सेट (अनुवाद) पी 1 '(-4, -2, -3), पी 2' = (0,2,1), पी 3 '= (4,0, 2)। फिर अपने गणित करें, फिर ऑफ़सेट में वापस जोड़ें। –