You are on page 1of 24

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

MATLABs 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 As elements that satisfies the condition.

Logical Conditions(cont.)
Example:
>> A = [1 2; 3 4], I = find(A<4) A= 1 3 2 4

I= 1 2 3

Flow Control

MATLAB has five flow control constructs:

if

statements statements loops loops statements

switch for while break

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. which can accept input arguments and return output arguments. Internal variables are local to the function.

Functions,

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

The available colorspaces: RGB, NTSC (US televisions), YCbCr (Digital video), HSV. Transformations between the spaces: rgb2ntsc, hsv2rgb,

Color

23

Questions?