MATLAB IMAGE PROCESSING TOOLBOX Gulsah Tumuklu Ozyer Introduction MatLab : Matrix Laboratory A high-level language for matrix calculations, numerical analysis, & scientific computing Programming Can type on command line, or use a program file (“m”-file) Semicolon at end of line is optional (suppresses printing) Control flow (if, for, while, switch,etc) similar to C Differences from C: no variable declarations, no pointers MATLAB’s Workspace who,whos - current variables in workspace save - save workspace variables to *.mat file load - load variables from *.mat file clear all - clear workspace variables Matlab Basics Everything is a matrix a variable is a 1x1 matrix Initializing a matrix: Example: my_matrix = [1 2 3; 4 5 6; 7 8 9]; Accessing a matrix (row, column): my_matrix(1,2) has the value 2 my_matrix = 1 2 3 4 5 6 7 8 9 Colon operator generates a range Example: 1:10 = [1 2 3 4 5 6 7 8 9 10] mytest(1, 2:4) is equivalent to mytest(1,[2 3 4]) mytest(3, :) refers to all elements of row 3 Basic Operations on Matrices All the operators in MATLAB defined on matrices : +, -, *, /, ^, sqrt, sin, cos etc. Element wise operators defined with preceding dot : .*, ./, .^ . size(A) - size vector sum(A) - columns sums vector sum(sum(A)) - all the elements sum Logical Conditions == , < , > , (not equal)~= ,(not)~ find(‘condition’) - Returns indexes of A’s elements that satisfies the condition. Logical Conditions(cont.) Example: >> A = [1 2; 3 4], I = find(A<4) A= 1 3 I= 1 2 3 2 4 Flow Control MATLAB has five flow control constructs: if statements switch statements for loops while loops break statements Scripts and Functions There are two kinds of M-files: Scripts, which do not accept input arguments or return output arguments. They operate on data in the workspace. Functions, which can accept input arguments and return output arguments. Internal variables are local to the function. Visualization and Graphics plot(x,y), plot(x,sin(x)) - plot 1-D function figure , figure(k) - open a new figure hold on, hold off - refreshing mesh(x_ax,y_ax,z_mat) - view surface contour(z_mat) - view z as top. map subplot(3,1,2) - locate several plots in figure axis([xmin xmax ymin ymax]) - change axes title(‘figure title’) - add title to figure The Image Processing Toolbox The Image Processing Toolbox is a collection of functions that extend the capability of the MATLAB ® numeric computing environment. The toolbox supports a wide range of image processing operations, including: Geometric operations Neighborhood and block operations Linear filtering and filter design Transforms Image analysis and enhancement Binary image operations MATLAB Image Types Indexed images Intensity images Binary images RGB images : m-by-3 color map : [0,1] or uint8 : {0,1} : m-by-n-by-3 Read and Write Images I = imread(‘colors.jpg'); imshow(I); Indexed Image: [x,map] = imread(‘color.png'); imwrite(I, ‘newim.jpg’) Image Display image - create and display image object imagesc - scale and display as image imshow - display image colorbar - display colorbar getimage- get image data from axes truesize - adjust display size of image zoom - zoom in and zoom out of 2D plot Image Conversion gray2ind - intensity image to index image im2bw - image to binary im2double - image to double precision im2uint8 - image to 8-bit unsigned integers im2uint16 - image to 16-bit unsigned integers ind2gray - indexed image to intensity image mat2gray - matrix to intensity image rgb2gray - RGB image to grayscale rgb2ind - RGB image to indexed image Geometric Operations Image resizing: imresize(I,[x y],’method’). Method is bilinear, bicubic or nearest neighbours. Image rotation: imrotate(I,angle,’method’) method is same as before. Zero padding in the rotated image. Image cropping: J=imcrop; Neighbourhood Processing To speed up neighbourhood processing transform every neighbourhood to column vector and perform vector operations. The borders are usually padded with zeros for the computations of the edges neighborhoods. Linear filtering can be done with convolution - conv2(Img, h) or correlation - filter2(Img, h). Nonlinear filtering: nlfilter(I,[sx sy],’func’) where func is a function that recieves the windows and returns scalars. 17 Transforms Fourier and inverse Fourier transform: F=fftshift(fft2(f)); F is a complex matrix Freal=real(F);Fimag=imag(F);Fabs=abs(F);Fphs=angle(F); imshow(Freal) f=ifft2(F); DCT and compression I=imread(‘cameraman.tif’); I=im2double(I); T=dctmtx(8); B=blkproc(I,[8 8], ‘P1*x*P2’,T,T’); mask=[1 1 1 0 0 …]; B2=blkproc(B,[8 8],’P1*x’,mask); I2=blkproc(B2,[8 8],’P1*x*P2,T’,T); It is also possible to use dct2 and idct2. 18 Analyzing and Enhancing Images pixval returns the value of a pointed pixel and the distance between two pointed pixels. impixel returns the data value for a selected set of pixels. The set can be pointed by the mouse or by coordinates. imcontour plots the contours of the image. imhist(I,n) plots the histogram of I with n bins. 19 Edge detection: edge(I,’sobel’); edge(I,’canny’); Or by fspecial(‘sobel’) and conv2. Image Enhancement: Histogram stretching: imadjust(I,[low high],[bottom top]); Gamma correction: imadjust(I,[],[],gamma_coef); Histogram Equalization histeq(I) 20 Noise removal To add noise to an image: imnoise(I,’type’,coef); type can be ‘salt n pepper’, ‘speckle’, ‘gaussian’ for S&P, multiplicative and additive noise. Averaging or gaussian filtering: F=filter2(fspecial(‘average’,3),J); Median filtering: F=medfilt(J,[3 3]); 21 Morphological Operations Dilation : imdilate() Erosion: imerode() Closing: imclose() Opening: imopen() 22 Color The available colorspaces: RGB, NTSC (US televisions),YCbCr (Digital video), HSV. Transformations between the spaces: rgb2ntsc, hsv2rgb, … 23 Questions?