imcorr.m
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:1k
源码类别:

3D图形编程

开发平台:

Visual C++

  1. function p=imcorr(name,par,a,dp)
  2. %IMCORR corrects image coordinates, which are contaminated by radial
  3. %and tangential distortion.
  4. %
  5. %Usage:
  6. %   p=imcorr(name,par,a,dp)
  7. %
  8. %where
  9. %   name = string that is specific to the camera and the framegrabber.
  10. %          This string must be defined in configc.m
  11. %   par  = camera intrinsic parameters
  12. %   a    = eight implicit parameters of the inverse camera model. These
  13. %          parameters are computed by using invmodel.m.
  14. %   dp   = distorted image coordinates in pixels (n x 2 matrix)
  15. %   p    = corrected image coordinates 
  16. %   Version 2.0  15.5.-97
  17. %   Janne Heikkila, University of Oulu, Finland
  18. sys=configc(name);
  19. NDX=sys(1); NDY=sys(2); Sx=sys(3); Sy=sys(4);
  20. Asp=par(1); Cpx=par(3); Cpy=par(4);
  21. a=a(:);
  22. cx=(dp(:,1)-Cpx)*Sx/NDX/Asp;
  23. cy=(dp(:,2)-Cpy)*Sy/NDY;
  24. r2=cx.*cx+cy.*cy;
  25. G=[r2.*r2 cx.*r2 cy.*r2 r2]*a(5:8)+1;
  26. x=(cx+cx.*(a(1)*r2+a(2)*r2.*r2)+2*a(3)*cx.*cy+a(4)*(r2+2*cx.^2))./G;
  27. y=(cy+cy.*(a(1)*r2+a(2)*r2.*r2)+2*a(4)*cx.*cy+a(3)*(r2+2*cy.^2))./G;
  28. p=NDX*Asp*x/Sx+Cpx;
  29. p(:,2)=NDY*y/Sy+Cpy;