%======================================================================= % Copyright 2008-2014, LEGI UMR 5519 / CNRS UJF G-INP, Grenoble, France % http://www.legi.grenoble-inp.fr % Joel.Sommeria - Joel.Sommeria (A) legi.cnrs.fr % % This file is part of the toolbox UVMAT. % % UVMAT is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published % by the Free Software Foundation; either version 2 of the license, % or (at your option) any later version. % % UVMAT is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License (see LICENSE.txt) for more details. %======================================================================= function [xn] = normalize_pixel(x_kk,fc,cc,kc,alpha_c) %normalize % %[xn] = normalize_pixel(x_kk,fc,cc,kc,alpha_c) % %Computes the normalized coordinates xn given the pixel coordinates x_kk %and the intrinsic camera parameters fc, cc and kc. % %INPUT: x_kk: Feature locations on the images % fc: Camera focal length % cc: Principal point coordinates % kc: Distortion coefficients % alpha_c: Skew coefficient % %OUTPUT: xn: Normalized feature locations on the image plane (a 2XN matrix) % %Important functions called within that program: % %comp_distortion_oulu: undistort pixel coordinates. if nargin < 5, alpha_c = 0; if nargin < 4; kc = [0;0;0;0;0]; if nargin < 3; cc = [0;0]; if nargin < 2, fc = [1;1]; end; end; end; end; % First: Subtract principal point, and divide by the focal length: x_distort = [(x_kk(1,:) - cc(1))/fc(1);(x_kk(2,:) - cc(2))/fc(2)]; % Second: undo skew x_distort(1,:) = x_distort(1,:) - alpha_c * x_distort(2,:); if norm(kc) ~= 0, % Third: Compensate for lens distortion: xn = comp_distortion_oulu(x_distort,kc); else xn = x_distort; end;