Ignore:
Timestamp:
Feb 17, 2017, 2:51:46 PM (7 years ago)
Author:
g7moreau
Message:
  • Remove tab
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/toolbox_calib/compute_homography.m

    r926 r1000  
    3434
    3535
    36 
    37 
    3836Np = size(m,2);
    3937
    4038if size(m,1)<3,
    41    m = [m;ones(1,Np)];
     39    m = [m;ones(1,Np)];
    4240end;
    4341
    4442if size(M,1)<3,
    45    M = [M;ones(1,Np)];
     43    M = [M;ones(1,Np)];
    4644end;
    4745
     
    8280
    8381if Np > 4,
    84         L = L'*L;
     82    L = L'*L;
    8583end;
    8684
     
    9997
    10098if 0,
    101    m2 = H*M;
    102    m2 = [m2(1,:)./m2(3,:) ; m2(2,:)./m2(3,:)];
    103    merr = m(1:2,:) - m2;
     99    m2 = H*M;
     100    m2 = [m2(1,:)./m2(3,:) ; m2(2,:)./m2(3,:)];
     101    merr = m(1:2,:) - m2;
    104102end;
    105103
    106104%keyboard;
    107  
     105
    108106%%% Homography refinement if there are more than 4 points:
    109107
    110108if Np > 4,
    111    
    112    % Final refinement:
    113    hhv = reshape(H',9,1);
    114    hhv = hhv(1:8);
    115    
    116    for iter=1:10,
    117      
    118109
    119    
    120                 mrep = H * M;
     110    % Final refinement:
     111    hhv = reshape(H',9,1);
     112    hhv = hhv(1:8);
    121113
    122                 J = zeros(2*Np,8);
     114    for iter=1:10,
    123115
    124                 MMM = (M ./ (ones(3,1)*mrep(3,:)));
     116         mrep = H * M;
    125117
    126                 J(1:2:2*Np,1:3) = -MMM';
    127                 J(2:2:2*Np,4:6) = -MMM';
    128                
    129                 mrep = mrep ./ (ones(3,1)*mrep(3,:));
     118         J = zeros(2*Np,8);
    130119
    131                 m_err = m(1:2,:) - mrep(1:2,:);
    132                 m_err = m_err(:);
     120         MMM = (M ./ (ones(3,1)*mrep(3,:)));
    133121
    134                 MMM2 = (ones(3,1)*mrep(1,:)) .* MMM;
    135                 MMM3 = (ones(3,1)*mrep(2,:)) .* MMM;
     122         J(1:2:2*Np,1:3) = -MMM';
     123         J(2:2:2*Np,4:6) = -MMM';
    136124
    137                 J(1:2:2*Np,7:8) = MMM2(1:2,:)';
    138                 J(2:2:2*Np,7:8) = MMM3(1:2,:)';
     125         mrep = mrep ./ (ones(3,1)*mrep(3,:));
    139126
    140                 MMM = (M ./ (ones(3,1)*mrep(3,:)))';
     127         m_err = m(1:2,:) - mrep(1:2,:);
     128         m_err = m_err(:);
    141129
    142                 hh_innov  = inv(J'*J)*J'*m_err;
     130         MMM2 = (ones(3,1)*mrep(1,:)) .* MMM;
     131         MMM3 = (ones(3,1)*mrep(2,:)) .* MMM;
    143132
    144                 hhv_up = hhv - hh_innov;
     133         J(1:2:2*Np,7:8) = MMM2(1:2,:)';
     134         J(2:2:2*Np,7:8) = MMM3(1:2,:)';
    145135
    146                 H_up = reshape([hhv_up;1],3,3)';
     136         MMM = (M ./ (ones(3,1)*mrep(3,:)))';
    147137
    148                 %norm(m_err)
    149                 %norm(hh_innov)
     138         hh_innov  = inv(J'*J)*J'*m_err;
    150139
    151                 hhv = hhv_up;
    152       H = H_up;
    153      
    154    end;
    155    
     140         hhv_up = hhv - hh_innov;
    156141
     142         H_up = reshape([hhv_up;1],3,3)';
     143
     144         %norm(m_err)
     145         %norm(hh_innov)
     146
     147         hhv = hhv_up;
     148       H = H_up;
     149
     150    end;
    157151end;
    158152
    159153if 0,
    160    m2 = H*M;
    161    m2 = [m2(1,:)./m2(3,:) ; m2(2,:)./m2(3,:)];
    162    merr = m(1:2,:) - m2;
     154    m2 = H*M;
     155    m2 = [m2(1,:)./m2(3,:) ; m2(2,:)./m2(3,:)];
     156    merr = m(1:2,:) - m2;
    163157end;
    164158
Note: See TracChangeset for help on using the changeset viewer.