===== Image coordinate system ===== The choice of an image coordinate system is a matter of convention in most cases. As introduced in the lectures, we will use the left handed image coordinate system, with the first axis (//u//) pointing right and the second axis (//v//) pointing down. Coordinates of a point are then written as an algebraic **column** vector (euclidean) (u, v)^\top. In Matlab, we will write e.g. [u;v] Since //1-based// indexing is used in Matlab, the **centre** of the top left pixel has coordinates ''[1;1]'' and the centre of the bottom right pixel has coordinates ''[count_u; count_v ]'', where ''count_u'' is number of image columns and ''count_v'' is number of image rows (both in pixels). See . {{:courses:a4m33tdv:cviceni:image_coords.png}} When drawing points or lines in Matlab, correct orientation of ordinate must be set. plot( u, v ); set( gca, 'ydir', 'reverse' ); It is also possible to draw a bitmap image first, and then draw points or lines over the bitmap. Correct orientation is then set automatically by imaging the bitmap. im = imread( 'image.jpg' ); image( im ); hold on plot( u, v ); hold off Matlab considers images as ordinary matrices, so the standard matrix indexation (row, column) is used. Let ''[u;v]'' be the integer coordinates in the grayscale image (centre of a pixel). Then the intensity of the pixel is obtained as im(v,u) ===== Matlab Help for Typical Situations in Homeworks ====== === Some recommendations for the fastest progress === - Do not trust any results unless you verified them. - Always verify your results. - Try to visualize your results - Each Matlab command has help. E.g. for ''plot''help plot % text version doc plot % html version - Try to encapsulate general tasks into a functions and reuse them. - Remind the rule 1. == Debugging == Matlab has a powerful debugger. Either put breakpoints everywhere you want, or use the command ''keyboard'' in your code to stop processing at the place. Exit the debugging mode: dbquit You can also start debugging automatically in case of error by turning on dbstop error === Vectors and its transformations === Vectors are stored as column matrices. u = [1;2]; X = [1;2;3]; Xmore = [1 2 3; 4 5 6]'; % transpose at the end Vectors are multiplied by a matrices on the left: P = [1 0 0 -5; 0 1 0 -6; 0 0 1 1]; % a camera ux_homog = P * [X;1]; % projection === Special matrices: Identity, Zeros, Ones === I = eye(3); % 3x3 identity I2 = diag( [1 1 1] ); % same result Z = zeros(3); % 3x3 matrix of zeroes O = ones(3); % 3x3 matrix of ones === Euclidean distance of two 3D points === X1 = [1;2;3]; X2 = [4;5;6]; d2 = norm(X1-X2); % cannot be used for more vectors d2 = sqrt(sum((X1-X2).^2)); % for matrices with points stored in columns === Dot (scalar) product === u1 = [4;5;1]; u2 = [7;8;1]; dot12 = u1' * u2; === Cross product === u1 = [4;5;1]; u2 = [7;8;1]; u12x = cross(u1,u2); % verification of orthogonality by dot product % (remember the recommendations 1 and 2) u12x' * u1 % should be zero u12x' * u2 % should be zero