हार्टले/ज़िसमैन के मल्टीव्यू जियोमेटरी के बाद, एल्गोरिदम 12: इष्टतम त्रिभुज विधि (पी 318), मुझे संबंधित छवि अंक xhat1 और xhat2 (चरण 10) मिला। चरण 11 में, किसी को 3 डी पॉइंट Xhat की गणना करने की आवश्यकता है। ऐसी एक विधि डायरेक्ट लीनियर ट्रांसफॉर्म (डीएलटी) है, जिसका उल्लेख 12.2 (पी 312) और 4.1 (पी 88) में किया गया है।त्रिभुज और प्रत्यक्ष रैखिक परिवर्तन
समरूप विधि (DLT), p312-313, कहा गया है कि यह इकाई विलक्षण वेक्टर एक के सबसे छोटे विलक्षण मान के संगत है, इस प्रकार के रूप में एक समाधान पाता है,
A = [xhat1(1) * P1(3,:)' - P1(1,:)' ;
xhat1(2) * P1(3,:)' - P1(2,:)' ;
xhat2(1) * P2(3,:)' - P2(1,:)' ;
xhat2(2) * P2(3,:)' - P2(2,:)' ];
[Ua Ea Va] = svd(A);
Xhat = Va(:,end);
plot3(Xhat(1),Xhat(2),Xhat(3), 'r.');
हालांकि, एक एक 16x1 है मैट्रिक्स, जिसके परिणामस्वरूप एक वीए 1x1 है।
3 डी बिंदु प्राप्त करने में मैं गलत (और एक फिक्स) क्या कर रहा हूं?
के लिए क्या इसके लायक नमूना डेटा:
xhat1 =
1.0e+009 *
4.9973
-0.2024
0.0027
xhat2 =
1.0e+011 *
2.0729
2.6624
0.0098
P1 =
699.6674 0 392.1170 0
0 701.6136 304.0275 0
0 0 1.0000 0
P2 =
1.0e+003 *
-0.7845 0.0508 -0.1592 1.8619
-0.1379 0.7338 0.1649 0.6825
-0.0006 0.0001 0.0008 0.0010
A = <- my computation
1.0e+011 *
-0.0000
0
0.0500
0
0
-0.0000
-0.0020
0
-1.3369
0.2563
1.5634
2.0729
-1.7170
0.3292
2.0079
2.6624
अद्यतन एल्गोरिथ्म
% xi
A = [xhat1(1) * P1(3,:) - P1(1,:) ;
xhat1(2) * P1(3,:) - P1(2,:) ;
xhat2(1) * P2(3,:) - P2(1,:) ;
xhat2(2) * P2(3,:) - P2(2,:) ];
A(1,:) = A(1,:)/norm(A(1,:));
A(2,:) = A(2,:)/norm(A(2,:));
A(3,:) = A(3,:)/norm(A(3,:));
A(4,:) = A(4,:)/norm(A(4,:));
[Ua Ea Va] = svd(A);
X = Va(:,end);
X = X/X(4); % 3D Point
यह के लिए छोटी से छोटी उम्मीद जानकारी के साथ पोस्ट करने के लिए बेहतर हो सकता है xhat1, पी 1 इत्यादि ताकि हम एक कामकाजी उदाहरण की प्रतिलिपि बना सकें और पेस्ट कर सकें और यह मानना न पड़े कि आपके इनपुट में कौन सा फॉर्म है। – MatlabDoug