इतने सारे महीनों के बाद भी इसमें रुचि रखने वाले सभी लोगों के लिए, मैंने कोवेसी के कोड (http://www.csse.uwa.edu.au/~pk/research/matlabfns), और विशेष रूप से homography2d.m फ़ंक्शन का उपयोग करके सही होमोग्राफी मैट्रिक्स प्राप्त करने में कामयाब रहा है। आपको रिग के चार कोनों के पिक्सेल मानों की आवश्यकता होगी। अगर कैमरा स्थिर है, तो आपको इसे एक बार करने की आवश्यकता होगी। नीचे उदाहरण कोड देखें:
%get corner pixel coords from base image
p1=[33;150;1];
p2=[316;136;1];
p3=[274;22;1];
p4=[63;34;1];
por=[p1 p2 p3 p4];
por=[0 1 0;1 0 0;0 0 1]*por; %swap x-y <--------------------
%calculate target image coordinates in world frame
% rig is 9x7 (X,Y) with 27.5mm box edges
XXw=[[0;0;0] [0;27.5*9;0] [27.5*7;27.5*9;0] [27.5*7;0;0]];
Rtarget=[0 1 0;1 0 0;0 0 -1]; %Rotation matrix of target camera (vertical pose)
XXc=Rtarget*XXw+Tc_ext*ones(1,4); %go from world frame to camera frame
xn=XXc./[XXc(3,:);XXc(3,:);XXc(3,:)]; %calculate normalized coords
xpp=KK*xn; %calculate target pixel coords
% get homography matrix from original to target image
HH=homography2d(por,xpp);
%do perspective transformation to validate homography
pnew=HH*por./[HH(3,:)*por;HH(3,:)*por;HH(3,:)*por];
यह चाल चलाना चाहिए। ध्यान दें कि मैटलैब एक्स अक्ष को छवि में पंक्तियों इंडेक्स और वाई को कॉलम के रूप में परिभाषित करता है। इस प्रकार किसी को समीकरणों में एक्स-वाई को स्वैप करना होगा (जैसा कि आप शायद ऊपर दिए गए कोड में देखेंगे)। इसके अलावा, मैं पूरी तरह से पैरामीटर से होमोग्राफी मैट्रिक्स की गणना करने में कामयाब रहा था, लेकिन परिणाम थोड़ा दूर था (शायद अंशांकन टूलबॉक्स में राउंडऑफ त्रुटियां)। ऐसा करने का सबसे अच्छा तरीका उपर्युक्त है।
यदि आप केवल कैमरा पैरामीटर का उपयोग करना चाहते हैं (यानी, कोवेसी के कोड का उपयोग न करें), तो होमोग्राफी मैट्रिक्स एच = केके * रैमेट * inv_KK है। इस मामले में कोड है,
% corner coords in pixels
p1=[33;150;1];
p2=[316;136;1];
p3=[274;22;1];
p4=[63;34;1];
pmat=[p1 p2 p3 p4];
pmat=[0 1 0;1 0 0;0 0 1]*pmat; %swap x-y
R=[0 1 0;1 0 0;0 0 1]; %rotation matrix of final camera pose
Rmat=Rc_ext'*R; %rotation from original pose to final pose
H=KK*Rmat*inv_KK; %homography matrix
pnew=H*pmat./[H(3,:)*pmat;H(3,:)*pmat;H(3,:)*pmat]; %do perspective transformation
H2=[0 1 0;-1 0 0;0 0 1]*H; %swap x-y in the homography matrix to apply in image
मैं इसका उत्तर भी जानना चाहूंगा। मुझे लगता है कि इस पेपर में कुछ सुराग हो सकता है: http://webee.technion.ac.il/~lihi/Publications/ZelnikIrani.Homogs.pami.pdf, हालांकि मेरे पास पढ़ने और पचाने का समय नहीं है। – n00dle