Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Eigenvalues and eigenvectors wikipedia , lookup
System of linear equations wikipedia , lookup
Singular-value decomposition wikipedia , lookup
Four-vector wikipedia , lookup
Matrix (mathematics) wikipedia , lookup
Perron–Frobenius theorem wikipedia , lookup
Non-negative matrix factorization wikipedia , lookup
Orthogonal matrix wikipedia , lookup
Gaussian elimination wikipedia , lookup
Matrix calculus wikipedia , lookup
Matlab and Medical Image Analysis basics / Human Image Perception Kostas Marias Today’s goals • Learn enough matlab to get started. • Review some basics of variables and algebra in general • Run some code together Introduction What is MATLAB? • MATLAB is a tool for doing numerical computations with matrices and vectors. It is very powerful and easy to use. In fact, it integrates computation, visualization and programming all together in an easy-to-use environment and can be used on almost all the platforms: windows, Unix, and Apple Macintosh, etc. • MATLAB stands for “Matrix Laboratory”. What is Matlab? • A software environment for interactive numerical computations • Examples: – Matrix computations and linear algebra – Solving nonlinear equations – Numerical solution of differential equations – Mathematical optimization – Statistics and data analysis – Signal processing – Modelling of dynamical systems – Solving partial differential equations – Simulation of engineering systems Matlab Background •Matlab = Matrix Laboratory •Originally a user interface for numerical linear algebra routines (Lapak/Linpak) •Commercialized 1984 by The Mathworks •Since then heavily extended (defacto-standard) •Alternatives •Matrix-X Octave Lyme (free; GNU) (free; Palm) Complements Maple Mathematica (symbolic) (symbolic) MATLAB Environment To start MATLAB: START PROGRAMS MATLAB 7.0 MATLAB 7.0 Display Windows Help! • help • help command Eg., help plot • Help on toolbar • demo • Read the matlab primer: • http://math.ucsd.edu/~driver/21d-s99/matlab-primer.html Matlab Workspace • Variables are stored here in the form of numerical matrices which can be of different types: int8, uint8, int16, uint16, double. – All numerical operations need to be performed on double precision, takes 8 bytes per value. – Other types are efficient for storage (<= 2 bytes) – Who, whos – current variables in workspace – Save, load – save or load variables to *.mat file – Clear all – clear all variables Matrices in Matlab • How to build a matrix? – >>A=[1 2 3; 4 5 6; 7 8 9]; 3x3 matrix • Special matrices: – zeros(r,c), ones(r,c), eye(r,c), rand(r,c) … • Acess matrix elements: – A(2,3) - result = 6 – using one number to index: A(8) – result = 6 – matrix is written out as a single column. – A(:,2) – obtain second column of the matrix Matrices in Matlab (2) • Basic Operations defined on matrices: – +,-,*,/,^,’,sqrt,sin,cos, etc. – Element-wise, precede with dot: .*, ./, .^ etc. • size(A) – size vector • sum(A) – columns sum vector • sum(sum(A)) – sum of all elements • Type help elmat for more instructions Programming in Matlab • Script Files – List of commands to be executed sequentially. Useful when same sequence is executed many times. They should be saved with extension script.m and should be placed on work path to be called. • >>script runs the sequence • Functions – Similar to script, but takes arguments – A funcname.m file starts with: function [output]=funcname(input) – Any function can be listed with: >>type funcname • See Matlab editor (File>New>m-file) Interactive Calculations • Matlab is interactive, no need to declare variables • >> 2+3*4/2 • >> a=5e-3; b=1; a+b • • • • Most elementary functions and constants are already defined >> cos(pi) >> abs(1+i) >> sin(pi) • Last call gives answer 1.2246e-016 !? What kind of graphics is possible in Matlab? Polar plot: t=0:.01:2*pi; polar(t,abs(sin(2*t).*cos(2*t))); Line plot: x=0:0.05:5;,y=sin(x.^2);,plot(x,y); Stem plot: x = 0:0.1:4;, y = sin(x.^2).*exp(-x); stem(x,y) What kind of graphics is possible in Matlab? Mesh plot: z=peaks(25);, mesh(z); Quiver plot: Surface plot: z=peaks(25);, surf(z);, colormap(jet); Contour plot: z=peaks(25);,contour(z,16); Vectors and Matrices • Vectors (arrays) are defined as • >> v = [1, 2, 4, 5] • >> w = [1; 2; 4; 5] • Matrices (2D arrays) defined similarly • >> A = [1,2,3;4,-5,6;5,-6,7] Matrix Operators • All common operators are overloaded • >> v + 2 • • • • Common operators are available >> B = A’ >> A*B >> A+B • Note: • Matlab is case-sensitive A and a are two different variables • Transponate conjugates complex entries; avoided by • >> B=A.’ Indexing Matrices •Indexing using parentheses •>> A(2,3) •Index submatrices using vectors of row and column indices •>> A([2 3],[1 2]) •Ordering of indices is important! •>> B=A([3 2],[2 1]) •>> B=[A(3,2),A(3,1);A(2,2);A(2,1)] Indexing Matrices •Index complete row or column using the colon operator •>> A(1,:) •Can also add limit index range •>> A(1:2,:) •>> A([1 2],:) •General notation for colon operator •>> v=1:5 •>> w=1:2:5 Matrix Functions • Many elementary matrices predefined • >> help elmat; • >> I=eye(3) • Elementary functions are often overloaded • >> help elmat • >> sin(A) • • • • Specialized matrix functions and operators >> As=sqrtm(A) >> As^2 >> A.*A • Note: in general, ”.<operator>” is elementwise operation Numerical Linear Algebra • Basic numerical linear algebra • >> z=[1;2;3]; x=inv(A)*z • >> x=A\z • • • • Many standard functions predefined >> det(A) >> rank(A) >> eig(A) • The number of input/output arguments can often be varied • >> [V,D]=eig(A) Graphics • • • • • Visualization of vector data is available >> x=-pi:0.1:pi; y=sin(x); >> plot(x,y) >> plot(x,y,’s-’) >> xlabel(’x’); ylabel(’y=sin(x)’); • Can change plot properties in Figure menu, or via ”handle” • >> h=plot(x,y); set(h, ’LineWidth’, 4); Graphics •Three-dimensional graphics •>> A = zeros(32); •>> A(14:16,14:16) = ones(3); •>> F=abs(fft2(A)); •>> mesh(F) •>> rotate3d on •Several other plot functions available •>> surfl(F) •Can change lightning and material properties •>> cameramenu •>> material metal Graphics • • • • Bitmap images can also be visualized >> load mandrill >> image(X); colormap(map) >> axis image off Basic concepts from algebra `nv `nk `n3 `n1 `n2 Inner (dot) Product v w v.w ( x1 , x2 ).( y1 , y2 ) x1 y1 x2 . y2 The inner product is a SCALAR! v.w ( x1 , x2 ).( y1 , y2 ) || v || || w || cos v.w 0 v w Matrices Anm a11 a12 a 21 a22 a31 a32 an1 an 2 a1m a2 m a3m anm Sum: Cnm Anm Bnm cij aij bij A and B must have the same dimensions Matrices Product: Cn p Anm Bm p m cij aik bkj k 1 Identity Matrix: A and B must have compatible dimensions Ann Bnn Bnn Ann 1 0 0 0 1 0 I IA AI A 0 0 1 Matrices Transpose: Cmn A nm cij a ji T If AT A ( A B) A B T T ( AB) B A T A is symmetric T T T Matrices Determinant: A must be square a11 a12 a11 a12 det a11a22 a21a12 a21 a22 a21 a22 a11 a12 det a21 a22 a31 a32 a13 a22 a23 a11 a32 a33 a23 a33 a12 a21 a23 a31 a33 a13 a21 a22 a31 a32 Matrices Inverse: Ann A A must be square 1 nn A 1 1 nn Ann I a11 a12 1 a a11a22 a21a12 21 a22 a22 a12 a 21 a11 Matrix MATLAB works with essentially only one kind of object – a rectangular numerical matrix with possible complex entries. Entering a Matrix Matrices can be Entered manually; Generated by built-in functions; Loaded from external disk (using “load” command) An Example • A = [1, 2, 3; 7, 8, 9] § row Use ‘ ; ’ to indicate the end of each § Use comma or space to separate elements of a row Matrix operations: • • • • • • + addition - subtraction * multiplication ^ power ‘ transpose \ left division, / division x = A \ b is the solution of A * x = b x = b / A is the solution of x * A = b • To make the ‘*’ , ‘^’, ‘\’ and ‘/’ entry-wise, we precede the operators by ‘.’ Example: A = [1, 2, 3; 4, 5, 6] B = [0.5; 1;3] C = A * B v.s. C = A .* B Array Operations • Scalar-Array Mathematics For addition, subtraction, multiplication, and division of an array by a scalar simply apply the operations to all elements of the array. • Example: >> f = [ 1 2; 3 4] f= 1 2 3 4 >> g = 2*f – 1 Each element in the array f is g= multiplied by 2, then subtracted 1 3 by 1. 5 7 Array Operations (con’t…) • Element-by-Element Array-Array Mathematics. Operation Algebraic Form MATLAB Addition a+b a+b Subtraction a–b a–b Multiplication axb a .* b Division ab a ./ b ab a .^ b Exponentiation • Example: >> x = [ 1 2 3 ]; >> y = [ 4 5 6 ]; >> z = x .* y z= 4 10 18 Each element in x is multiplied by the corresponding element in y. Algebraic operations in Matlab: Array products: Recall that addition and subtraction of matrices involved addition or subtraction of the individual elements of the matrices. Sometimes it is desired to simply multiply or divide each element of an matrix by the corresponding element of another matrix 'array operations”. Array or element-by-element operations are executed when the operator is preceded by a '.' (period): a .* b a ./ b a .\ b a .^ b multiplies each element of a by the respective element of b divides each element of a by the respective element of b divides each element of b by the respective element of a raise each element of a by the respective b element Algebraic operations in Matlab: For example, if matrices G and H are G = [ 1 3 5; 2 4 6]; H = [-4 0 3; 1 9 8]; D=G .* H = [ -4 0 15 2 36 48 ] Subscripts: • Subscripts: the element in row i and column j of A is denoted by A(i, j). • Example: A = magic(3); A(1,1) + A(1,2) + A(1,3) The Colon Operator ‘:’ The colon ‘:’ is one of MATLAB ’s most important operators. It has many formats: • 3 : -2 : -11 is a row vector containing integers from 3 to –11 with a increment of –2. • Subscript expressions involving colons refer to portions of a matrix: A(1:3 , 2) is the first to the third elements of the second column of A. What does A([1:3], [2:4]) mean? Working with Matrices: MATLAB provides four functions that generate basic matrices: • Zeros: all zeros. A = zeros(1,3) • Ones: all ones.A = ones(2,4) • Rand: uniformly distributed random elements. A = rand(3,5) • Randn: normally distributed random elements. A = randn(2,5) • Concatenation: join small (compatible) matrices to make bigger ones: B = [A A-2; A*2 A/4] • Deleting rows and columns: B(:,2) = [ ] Matrices (con’t…) Some useful commands: zeros(n) zeros(m,n) returns a n x n matrix of zeros returns a m x n matrix of zeros ones(n) ones(m,n) returns a n x n matrix of ones returns a m x n matrix of ones size (A) for a m x n matrix A, returns the row vector [m,n] containing the number of rows and columns in matrix. length(A) returns the larger of the number of rows or columns in A. Matrices (con’t…) more commands Transpose B = A’ Identity Matrix eye(n) returns an n x n identity matrix eye(m,n) returns an m x n matrix with ones on the main diagonal and zeros elsewhere. Addition and subtraction C=A+B C=A–B Scalar Multiplication B = A, where is a scalar. Matrix Multiplication C = A*B Matrix Inverse B = inv(A), A must be a square matrix in this case. rank (A) returns the rank of the matrix A. Matrix Powers B = A.^2 squares each element in the matrix C = A * A computes A*A, and A must be a square matrix. Determinant det (A), and A must be a square matrix. A, B, C are matrices, and m, n, are scalars. Solutions to Systems of Linear Equations • Example: a system of 3 linear equations with 3 unknowns (x1, x2, x3): 3x1 + 2x2 – x3 = 10 -x1 + 3x2 + 2x3 = 5 x1 – x2 – x3 = -1 Let : 3 2 1 A 1 3 2 1 1 1 x1 x x2 x3 Then, the system can be described as: Ax = b 10 b 5 1 Solutions to Systems of Linear Equations (con’t…) • Solution by Matrix Inverse: • Solution by Matrix Division: The solution to the equation Ax = b A-1Ax = A-1b x = A-1b • MATLAB: >> A = [ 3 2 -1; -1 3 2; 1 -1 -1]; >> b = [ 10; 5; -1]; >> x = inv(A)*b x= -2.0000 5.0000 -6.0000 Answer: x1 = -2, x2 = 5, x3 = -6 NOTE: left division: A\b b A Ax = b can be computed using left division. MATLAB: >> A = [ 3 2 -1; -1 3 2; 1 -1 -1]; >> b = [ 10; 5; -1]; >> x = A\b x= -2.0000 5.0000 -6.0000 Answer: x1 = -2, x2 = 5, x3 = -6 right division: x/y x y Polynomials • The polynomials are represented by their coefficients in MATLAB. • Consider the following polynomial: A(s) = s3 + 3s2 + 3s + 1 • For s is scalar: use scalar operations – A = s^3 + 3*s^2 + 3*s + 1; • For s is a vector or a matrix: use array or element by element operation – A = s.^3 + 3*s.^2 + 3.*s + 1; • function polyval(a,s): evaluates a polynomial with coefficients in vector a for the values in s. Polynomials (con’t…) • A(s) = s3 + 3s2 + 3s + 1 Example: >> s = linspace (-5, 5, 100); >> coeff = [ 1 3 3 1]; >> A = polyval (coeff, s); >> plot (s, A), >> xlabel ('s') >> ylabel ('A(s)') Polynomials (con’t…) Operation MATLAB command Description Addition c=a+b sum of polynomial A and B, the coefficient vectors must be the same length. Scalar Multiple b = 3*a multiply the polynomial A by 3 Polynomial Multiplication c = conv(a,b) returns the coefficient vector for the polynomial resulting from the product of polynomial A and B. Polynomial Division [q,r] = deconv(a,b) returns the long division of A and B. q is the quotient polynomial coefficient, and r is the remainder polynomial coefficient. Derivatives polyder(a) returns the coefficients of the derivative of the polynomial A polyder(a, b) returns the coefficients of the derivative of the product of polynomials A and B. [n,d]=polyder(b,a) returns the derivative of the polynomial ratio B/A, represented as N/D Find Roots roots(a) returns the roots of the polynomial A in column vector form. Find Polynomials poly(r) returns the coefficient vector of the polynomial having roots r. NOTE: a, b, and c are polynomial coefficient vectors whose corresponding polynomials are A, B, and C Programming with MATLAB: • Files that contain code in the MATLAB language are called M-files. You create Mfiles using a text editor, then use them as you would any other MATLAB functions or command. There are two types of M-files: Scripts and Functions. Scripts • Scripts: a bunch of code grouped together; doesn’t accept argument or return output. • Example: create a file called magicrank.m that calculates the rank of magic squares: r = zeros(1,20); for n = 1:20 r(n) = rank(magic(n)); end bar(r) • Add the file into search path and type the statement: magicrank M-Files So far, we have executed the commands in the command window. But a more practical way is to create a M-file. • The M-file is a text file that consists a group of MATLAB commands. • MATLAB can open and execute the commands exactly as if they were entered at the MATLAB command window. • To run the M-files, just type the file name in the command window. (make sure the current working directory is set correctly) All MATLAB commands are M-files. M-files Functions • M-files are macros of MATLAB commands that are stored as ordinary text files with the extension "m", that is filename.m • example of an M-file that defines a function, create a file in your working directory named yplusx.m that contains the following commands: Write this file: function z = yplusx(y,x) z = y + x; -save the above file(2lines) as yplusx.m x = 2; y = 3; z = yplusx(y,x) 5 • Get input by prompting on m-file: T = input('Input the value of T: ') Functions: • Functions are M-files that can accept input arguments and return output arguments. The name of the M-file and of the function should be the same. • For example, the M-file “rank.m” is available in the directory: ~toolbox/matlab/matfun, you can see the file with type rank Flow Control: • • • • • • MATLAB has following flow controls: If statement Switch statement For loops While loops Continue statement Break statement if … elseif … else … end If A > B ‘greater’ elseif A < B ‘less’ elseif A = = B ‘equal’ else error(‘Unexpected situation’) end for … end for i = 1:m for j = 1:n H(i,j) = 1/(i+j) end end Suppressing Output: If you simply type a statement and press Enter, MATLAB automatically displays the results on screen. If you end the line with a semicolon ‘;’, MATLAB performs the computation but does not display any result. • Example: C = randn(5,1) v.s. C = randn(5,1); Graphics: plot x = 0 : .01 : 2*pi; y = sin(x); plot(x,y) y2 = sin(x-.25) y3 = sin(x-.5) plot(x,y,x,y2,x,y3) Plot Continue… • Adding plots to an existing graph: hold on • Multiple plots in one figure: subplot Plotting (con’t…) • Example: (polynomial function) plot the polynomial using linear/linear scale, log/linear scale, linear/log scale, & log/log scale: y = 2x2 + 7x + 9 % Generate the polynomial: x = linspace (0, 10, 100); y = 2*x.^2 + 7*x + 9; % plotting the polynomial: figure (1); subplot (2,2,1), plot (x,y); title ('Polynomial, linear/linear scale'); ylabel ('y'), grid; subplot (2,2,2), semilogx (x,y); title ('Polynomial, log/linear scale'); ylabel ('y'), grid; subplot (2,2,3), semilogy (x,y); title ('Polynomial, linear/log scale'); xlabel('x'), ylabel ('y'), grid; subplot (2,2,4), loglog (x,y); title ('Polynomial, log/log scale'); xlabel('x'), ylabel ('y'), grid; Plotting (con’t…) Plotting (con’t…) • • Adding new curves to the existing graph: Use the hold command to add lines/points to an existing plot. – – hold on – retain existing axes, add new curves to current axes. Axes are rescaled when necessary. hold off – release the current figure window for new plots Grids and Labels: Command Description grid on Adds dashed grids lines at the tick marks grid off removes grid lines (default) grid toggles grid status (off to on, or on to off) title (‘text’) labels top of plot with text in quotes xlabel (‘text’) labels horizontal (x) axis with text is quotes ylabel (‘text’) labels vertical (y) axis with text is quotes text (x,y,’text’) Adds text in quotes to location (x,y) on the current axes, where (x,y) is in units from the current plot. Additional commands for plotting color of the point or curve Symbol Color y yellow m magenta c cyan r red g green b blue w k Marker of the data points Plot line styles Symbol Marker Symbol Line Style . – solid line o : dotted line x –. dash-dot line + + –– dashed line * white s □ black d ◊ v ^ h hexagram 3D - Plotting example • x=[0:10]; y=[0:10]; z=x’*y; • mesh(x,y,z); title(‘3-D Graph’); More Plotting • Old plot got stomped – To open a new graph, type ‘figure’ • Multiple data sets: – Type ‘hold on’ to add new plot to current graph – Type ‘hold off’ to resume stomping • Make your graph beautiful: – title(‘apples over oranges’) – xtitle(‘apples’) – ytitle(‘oranges’) Useful Commands • Single quote is transpose • % same as // comment in C, Java No /* block comments */ (annoying) • ; suppresses printing • More: max(x) mean(x) abs(x) cross(x,y) min(x) median(x) dot(x,y) flops (flops in this session) Useful Constants • Inf infinity • NaN Not and number (div by zero) • eps machine epsilon • ans most recent unassigned answer • pi 3.14159…. • i and j Matlab supports imaginary numbers! Final note • Wrong: for x = 1:10 for y = 1:10 foo(x,y) = 2 * bar(x,y) end end • Right: foo = 2 * bar; • Matlab is optimized for vectorization Ανθρώπινη όραση, αντίλήψη ιατρικής εικόνας Αντίληψη εικόνας: Το ανθρώπινο σύστημα Retina - the “focal plane array” on the back surface of the eye the detects and measures light. Photoreceptors - the nerves in the retina that detect light. Fovea - a small region in the retina with high spatial resolution. Blind spot - a small region in the retina where the optic nerve is located that has no photoreceptors. Long, medium, and short cones - the three specific types of codes used to produce color vision. These cones are sensitive to long (L or red) wavelengths, medium (M or green) wavelengths, and short (S or blue) wavelengths. Αντίληψη εικόνας: Βασικές Κατευθύνσεις Goals in the field of perception: – Understand contrast and how humans detect changes in images. – Understand photometric properties of the physical world. – Understand the percept of “color”. – Learn how to use this understanding to design imaging systems. Αντίληψη εικόνας: Βασικά μεγέθη A Simple Visual Stimulus A single uniform dot of luminance L in a large uniform background of luminance LB. LB L How much difference is necessary for a “standard observer” to notice the difference between L and LB? – The just noticeable difference (JND) is the difference that allows an observer to detect the stimulus 50% of the time. – ΔJND is the difference in L and LB required to achieve a just noticable difference. Αντίληψη εικόνας στη Ιατρική “Image perception is intimately connected to the psychophysical properties of the visual system of the observer, i.e. the ability of the observer to respond to low-contrast and fine-detail stimuli.” In medical imaging, information is transferred to the observer in two steps: 1. Data acquisition and image formation in the imaging system 2. Processing and display of image data Visual performance in medical imaging can be divided into three categories: 1. Detection of an abnormality (presence) 2. Recognition of an abnormality (shape and size) 3. Identification (relation to likely disease) of the abnormality μεταφέρει με μια μηγραμμική διαδικασία ένα περιορισμένο υποσύνολο από τα αρχικά δεδομένα (διεφθαρμένο από θόρυβο και «τεχνήματα» ), ώστε να δημιουργηθεί η τελική εικόνα. Αντίληψη εικόνας στην Ιατρική Αντικείμενο Ερμηνεία/ Πληροφορία Παρατηρητής Εικόνα Σύστημα απεικόνισης Ο παρατηρητής «φιλτράρει» τα δεδομένα της εικόνας (στο χώρο και στο χρόνο) και στη συνέχεια ερμηνεύει το περιεχόμενό της με βάση της οπτικής πληροφορίας αλλά και της εμπειρίας του. Medical Image Analysis Αντίληψη και διερμηνεία ιατρικής εικόνας Σε αυτή την περίπτωση το «αντικείμενο» είναι μια τομή του ανθρωπίνου σώματος η οποία έχει μια πολύπλοκη φυσικοχημική δομή. Το σύστημα απεικόνισης μεταφέρει με μια μη-γραμμική διαδικασία ένα περιορισμένο υποσύνολο από τα αρχικά δεδομένα (διεφθαρμένο από θόρυβο και «τεχνήματα» ), ώστε να δημιουργηθεί η τελική εικόνα. Ο παρατηρητής «φιλτράρει» τα δεδομένα της εικόνας (στο χώρο και στο χρόνο) και στη συνέχεια ερμηνεύει το περιεχόμενό της με βάση της οπτικής πληροφορίας αλλά και της εμπειρίας του. Ο παρατηρητής αποφασίζει και παρέχει πληροφορίες σχετικά με το απεικονιζόμενο αντικείμενο ... Αντίληψη εικόνας στην Ιατρική •The human brain instinctively searches for geometrical patterns of objects in an image, such as border lines — preferring well-known figures such as circles, rectangles and triangles — and tries to form those objects. •Τhe viewing distance must be long enough, so that the pixels cannot be distinguished individually and thus be seen as squares. Otherwise, the faculty of vision gives priority to identification of the square-shaped objects rather than to combining them into a larger object within the image. •The resolution properties of the eye are dependent on both the contrast level and the light intensity impinging on the eye. The resolution drops from ~7line pairs per mm for filmlightbox combination (x-rays) to less than 3 for a common CRT monitor!!! Αντίληψη εικόνας στην Ιατρική : Γνώμες… "There are times when an experienced physician experienced physician sees a visible lesion clearly and times when he does not. This is the baffling problem, apparently partly visual and partly psychologic. They constitute the still unexplained human equation in diagnostic procedures.” Henry Garland, M.D., 1959 “In the last ten years, our basic knowledge of physics of radiological images has increased to such an extent that it cries out to be linked with observer performance studies.” Kurt Rossmann, 1974 Αντίληψη εικόνας στην Ιατρική : Παραδείγματα Medical Image Perception: Changes in Image display can lead to errors in interpretation. In this example the “subtle” abnormality (lung cancer) can be missed in the left image due to poor display…. Αντίληψη εικόνας στην Ιατρική : Παραδείγματα Psychophysical and computer automated evaluation and optimization of image compression Task: To evaluate the effect of different image compression algorithms on visual performance in clinically relevant tasks of simulated lesions embedded in real x-ray coronary angiograms. The evaluation is often done using human observers (physicians and nonphysicians) reviewing the test-images. Αντίληψη εικόνας στην Ιατρική : Παραδείγματα Computer Observer Models Psychophysical experiments for evaluation of image acquisition or image processing technique are time consuming and costly. For this reason, there has been a growing interest in developing computer observer models that reliably reproduce human performance More recent work concentrates on extending model observers to visual tasks that include signals that vary in shape and size. These latter tasks are more representative of the real clinical scenario where the lesion has a variety of shapes and sizes C.K. Abbey and F.O. Bochud, “Modeling visual detection tasks in correlated image noise with linear model observers,” The Handbook of Medical Imaging: Volume 1, Progress in Medical Physics and Psychophysics, (Harold Kundel, Ed.), pp. 629-654, 2000. Αντίληψη εικόνας στην Ιατρική : Χαρακτηρισμός ποιότητας εικόνας • The most common method to assess medical image quality is the use of Receiver Operating Characteristic (ROC) studies. • In these studies doctors rate their confidence about the presence of a given abnormaility in a set of patient images. • The ROC curve plots the hit rate as a function of the false alarm rate. • From the ROC curve a bias-free measure of performance known as the area under the curve (AOC) is derived. • Many ROC studies rely on establishing “truth” (the gold standard) about lesion absence/presence on the agreement of a panel of experts (consensus expert committees). Eckstein, M.P., Wickens, T.D., Aharonov G., Ruan G., Morioka C.A., Whiting, J.S., Quantifying the limitations of the use of consensus expert committees in ROC studies, Proceedings SPIE Image Perception, 3340, 128-134, (1998) Medical Image Perception: ROC curves Sensitivity: Is the probability of a positive test among patients with a disease. For example if a diagnostic test was positive in 85 out of 100 patients previously diagnosed with breast cancer (in 15 cases the test was negative), then the sensitivity of the test is 85%. Specificity: It is the probability of a test being negative among “healthy” patients. Again, the number of negative tests (among patients without the disease) has to be divided with the total number of tests to calculate the specificity. Medical Image Perception: ROC curves For example, if we want to describe a diagnostic test foe breast cancer (e.g. a CAD systems that detects malignant masses) and we get the following results: Patients with breast cancer Patient without breast cancer Positive test 89 (true positives) 40 (false positives) Negative test 11 (false negatives) 60 (true negatives) Then we can calculate : Sensitivity = 89 / 100 = 89%, Specificity = 60 /100= 60% Medical Image Perception: ROC curves • If we redefine what is “positive” or “negative” (e.g. change the threshold at which a detected mass is classified as abnormal), the values for the specificity and sensitivity will change. • By doing that for several thresholds we can plot the values of sensitivity vs. (1-specificity). • This is called a receiver-operating characteristic curve (ROC). • Examining different thresholds represent the trade-off between sensitivity and specificity, or between false positives and negatives. • The area under the ROC curve is measure of good the test is in discriminating between “healthy” and non-“healthy” patients and can be used for comparison with other tests. Medical Image Perception: ROC curves Patient without breast cancer Malignant true positives false positives Benign false negatives true negatives Βy changing the threshold at which (e.g. based on texture) a mass was classified as malignant, we got the following values for the specificity and sensitivity: Threshold that defines malignancy Sensitivity Specificity Threshold 1 60% 98% Threshold 2 80% 94% Threshold 3 90% 85% Threshold 4 95% 75% sensitivity Patients with breast cancer 100 90 80 70 60 50 40 30 20 10 0 ROC 0 20 40 60 1-specificity 80 the ROC curve shows that the test is adequate for discriminating between benign and malignant masses: 100 Image Analysis and Processing How to… Comp. Vision Databases • Represent • Process / Prepare • Handle • Recognize • Retrieve …images / image objects Representation • • • • • Digital Images Color Spaces Gray Images Binary Images Geometrical Properties Representation • • • • • Digital Images Color Spaces Gray Images Binary Images Geometrical Properties Processing • • • Filters Edges Geometric Primitives • Lines, Circles Processing Segmentation Handling: • • Image Data Representation Image / Video Formats • JPEG • GIF • MPEG (this lecture will NOT cover this !) Low Level Object Handling: • Object representation Object Recognition: • Color, Texture, Shape Object Recognition: • Applications • • • • • • Character recognition Face Recognition Shape Recognition Motion, Movement Detection Behaviour Analysis … Image Processing Toolbox (2) • Grayscale Image (row x col) • Binary Image (row x col) = Grayscale with 2 levels Image Processing Toolbox (3) • RGB Image (row X col X 3) Image Processing Toolbox (4) • Indexed Image (2 matrices – colormap and index) Image Processing Toolbox (5) • Reading an Image and storing it in matrix I: – I = imread(‘pout.tif’); – [I,map] = imread(‘pout.tif’); For indexed images • Deals with many formats – JPEG, TIFF, GIF, BMP, PNG, PCX, … more can be added from Mathworks Central File Exchange • http://www.mathworks.com/matlabcentral/fileexcha nge Image Processing Toolbox (6) • After an image has been read we can convert from one type to another: – ind2gray, gray2ind, rgb2gray, gray2rgb, rgb2ind, ind2rgb • Images are read into uint8 data type. To manipulate the pixel values, they have to be first converted to double type using the double(I) function. Image Processing Toolbox (7) • Pixel values are accessed as matrix elements. – 2D Image with intensity values: I(row,col) – 2D RGB images I(row,col,color) • Color : Red = 1; Green = 2 ; Blue = 3 • Displaying images – >>figure, imshow(I) • Displaying pixel position and intensity information – pixval on Image Processing Toolbox (8) • All arithmetic operations performed on matrices may be performed on images • After processing, an image matrix can be written to an output image file with the imwrite function – imwrite(I,map,’filename’,’fmt’) • Without the map argument, the image data is supposed to be grayscale or RGB. • The format ‘fmt’ needs to support the particular type of image Let’s move on to… Image Filtering Image Filtering • Many basic image processing techniques are based on convolution. • In a convolution, a convolution filter is applied to every pixel to create a filtered image I*(x, y): I * ( x, y ) I ( x, y ) * W ( x, y ) I (u, v)W (u x, v y) u v Image Filtering • Example: Averaging filter: y 0 0 0 0 0 0 1/9 1/9 1/9 0 0 1/9 1/9 1/9 0 0 1/9 1/9 1/9 0 0 0 0 0 0 I * ( x, y ) I ( x, y ) * W ( x, y ) x I (u, v)W (u x, v y) u v Image Filtering • Image: • Filter: 1 6 3 2 9 1/9 1/9 1/9 2 11 3 10 0 1/9 1/9 1/9 5 10 6 9 7 1/9 1/9 1/9 3 1 0 2 8 4 4 2 9 10 I * ( x, y ) I ( x, y ) * W ( x, y ) •New value: •6/9 + 9/9 + 7/9 + 0/9 + 2/9 + 8/9 + 2/9 + 9/9 + 10/9 = 5.889 I (u, v)W (u x, v y) u v Image Filtering • Grayscale Image: • Averaging Filter: 1 6 3 2 9 1/9 1/9 1/9 2 11 3 10 0 1/9 1/9 1/9 5 10 6 9 7 1/9 1/9 1/9 3 1 0 2 8 4 4 2 9 10 Image Filtering • Original Image: 1 1/9 6 1/9 3 1/9 • Filtered Image: 2 9 0 0 2 11 1/9 1/9 3 10 1/9 0 0 5 5 10 1/9 1/9 6 1/9 9 7 0 0 3 1 0 2 8 0 0 4 4 2 9 10 0 0 0 0 0 0 0 0 • value = 11/9 + 61/9 + 31/9 + 21/9 + 111/9 + 31/9 + 51/9 + 101/9 + 61/9 = 47/9 = 5.222 0 Image Filtering • Original Image: • Filtered Image: 1 6 1/9 3 1/9 2 1/9 9 0 0 0 2 11 1/9 3 10 1/9 1/9 0 0 5 7 5 10 1/9 6 1/9 9 1/9 7 0 0 3 1 0 2 8 0 0 4 4 2 9 10 0 0 0 0 0 0 0 • value = 61/9 + 31/9 + 21/9 + 111/9 + 31/9 + 101/9 + 101/9 + 61/9 + 91/9 = 60/9 = 6.667 0 Image Filtering • Original Image: • Filtered Image: 1 6 3 2 9 0 0 0 0 0 2 11 3 10 0 0 5 7 5 0 5 10 6 9 7 0 5 6 5 0 3 1 0 2 8 0 4 5 6 0 4 4 2 9 10 0 0 0 0 0 •Now you can see the averaging (smoothing) effect of the 33 filter that we applied. Image Filtering • More common: Gaussian Filters W ( x, y ) G ( x, y ) 1 2 2 e x2 y 2 2 2 • implement decreasing influence by more distant pixels • Discrete version: 1/273 •1 •4 •7 •4 •1 •4 •16 •26 •16 •4 •7 •26 •41 •26 •7 •4 •16 •26 •16 •4 •1 •4 •1 •7 •4 Image Filtering • Effect of Gaussian smoothing: original 33 99 1515 Different Types of Filters • Smoothing can reduce noise in the image. • This can be useful, for example, if you want to find regions of similar color or texture in an image. • However, there are different types of noise. • For so-called “salt-and-pepper” noise, for example, a median filter can be more effective. Median Filter • Use, for example, a 33 filter and move it across the image like we did before. • For each position, compute the median of the brightness values of the nine pixels in question. – To compute the median, sort the nine values in ascending order. – The value in the center of the list (the fifth value) is the median. • Use the median as the new value for the center pixel. Median Filter • Advantage of the median filter: Capable of eliminating outliers such as the extreme brightness values in salt-andpepper noise. • Disadvantage: The median filter may change the contours of objects in the image. Median Filter • original image • 33 median • 77 median Image Scaling This image is too big to fit on the screen. How can we reduce it? How to generate a halfsized version? Image sub-sampling 1/8 1/4 Throw away every other row and column to create a 1/2 size image Why does this look so crufty? • Called nearest-neighbor sampling Even worse for synthetic images Sampling and the Nyquist rate • Aliasing can arise when you sample a continuous signal or image – Demo applet http://www.cs.brown.edu/exploratories/freeSoftware/repository/edu/brown/c s/exploratories/applets/nyquist/nyquist_limit_java_plugin.html – occurs when your sampling rate is not high enough to capture the amount of detail in your image – formally, the image contains structure at different scales • called “frequencies” in the Fourier domain Sampling and the Nyquist rate – the sampling rate must be high enough to capture the highest frequency in the image • To avoid aliasing: – sampling rate > 2 * max frequency in the image • i.e., need more than two samples per period – This minimum sampling rate is called the Nyquist rate Subsampling with Gaussian pre-filtering G 1/8 G 1/4 Gaussian 1/2 • Solution: filter the image, then subsample – Filter size should double for each ½ size reduction. Some times we want many resolutions • Known as a Gaussian Pyramid [Burt and Adelson, 1983] – In computer graphics, a mip map [Williams, 1983] – A precursor to wavelet transform • Gaussian Pyramids have all sorts of applications in computer vision Gaussian pyramid construction filter mask • Repeat – Filter – Subsample • Until minimum resolution reached – can specify desired number of levels (e.g., 3-level pyramid) Subsampling with bilinear pre-filtering BL 1/8 BL 1/4 Bilinear 1/2 Bilinear interpolation • A common method for resampling images …. Matlab homepage (news & more): http://www.mathworks.com/ online tutorials: http://www.engin.umich.edu/group/ctm/ http://www.math.mtu.edu/~msgocken/intro/intro.html you can find all this at: http://www.soton.ac.uk/~jowa/teaching.html