basics of image processing using matlab

27
Varun K. Nagaraja Final Year, Dept of ECE NITK Surathkal April 21, 2010

Upload: vkn13

Post on 05-Dec-2014

34.554 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Basics of Image Processing using MATLAB

Varun K. Nagaraja

Final Year, Dept of ECE

NITK Surathkal

April 21, 2010

Page 2: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Computer Vision and Related Fields

Page 3: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Page 4: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Activity Recognition

Image Stitching

Page 5: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Medical Image Enhancement

Image Morphing

Page 6: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

% Use colon at the end to suppress

% output

% To enter a matrix with real elements

A = [5 3 7; 8 9 2; 1 4.2 6e-2]

A =

5.0000 3.0000 7.0000

8.0000 9.0000 2.0000

1.0000 4.2000 0.0600

% To enter a matrix with complex

% elements

X = [5+3*j 7+8j; 9+2j 1+4j;]

X =

5.0000 + 3.0000i 7.0000 + 8.0000i

9.0000 + 2.0000i 1.0000 + 4.0000i

Basic operation with Matrices

% Transpose of a matrix

A_trans = A’

A_trans =

5.0000 8.0000 1.0000

3.0000 9.0000 4.2000

7.0000 2.0000 0.0600

% Matrix addition

C = A + A_trans

C =

10.0000 11.0000 8.0000

11.0000 18.0000 6.2000

8.0000 6.2000 0.1200

Page 7: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

% Matrix multiplication (element wise)

C = A .* A_trans

C =

25.0000 24.0000 7.0000

24.0000 81.0000 8.4000

7.0000 8.4000 0.0036

% Matrix multiplication

C = A * A_trans

C =

83.0000 81.0000 18.0200

81.0000 149.0000 45.9200

18.0200 45.9200 18.6436

Basic operation with Matrices

These commands or functions can be run in the

MATLAB command prompt or as Script files (.m)

Either • type edit <filename>.m in MATLAB command

prompt to open the editor or

• go File - New - Blank M File

Page 8: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

A Simple Character Recognition Code

• Detect only particular characters and

numbers in an image.

• Characters are in white and of a fixed

size.

• Background is black in color.

• The image is in binary format.

We will explore various concepts as we

implement this.

Page 9: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Reading images in MATLAB

% Set working directory to directory

% containing this tutorial

% Reading an image

% A = IMREAD(FILENAME,FMT) or

% A = IMREAD('FILENAME.FMT')

im=imread('.\char recog\testimage.bmp');

% It is better to suppress outputs when

% reading images. Try once without the

% colon at the end of command

% Displaying an image

imshow(im)

% To open a separate window for the

% figure and not overwrite in the

% existing window

figure

imshow(im)

figure, imshow(im)

Page 10: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Reading images in MATLAB

Now read the image ‘same color.jpg’ and display it on a window.

Once the image is displayed in the window, select Tools – Data Cursor or select the shortcut on the

toolbar.

Click on point A as shown, on the image. It displays three values (RGB) since it is a color image. You

can try reading pixel values for the previous image. It will be either 0/1 since it is binary image.

Hold Alt and Click on point B. This creates something called as a new datatip.

Now for some fun

B

A

Page 11: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Reading images in MATLAB

Now read the image ‘same color.jpg’ and display it on a window.

Once the image is displayed in the window, select Tools – Data Cursor or select the shortcut on the

toolbar.

Click on point A as shown, on the image. It displays three values (RGB) since it is a color image. You

can try reading pixel values for the previous image. It will be either 0/1 since it is binary image.

Hold Alt and Click on point B. This creates something called as a new datatip.

Now for some fun

What are the RGB values at the two points? B

A

Adelson's checker shadow illusion (http://en.wikipedia.org/wiki/Same_color_illusion)

Page 12: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Writing functions in MATLAB

Let’s write a function charrec(im)which when called with an image file, will

display the characters as shown earlier

>> im=imread('.\char recog\testimage.bmp');

>> imshow(im);

>> charrec(im);

The digits found in the image are:

0

3

5

The letters found in the image are:

L

N

Page 13: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Writing functions in MATLAB

Few examples of functions in MATLAB

% Function returning no output

function sample(ip1,ip2,ip3,…)

.

.

.

end

% Function with outputs

function [op1,op2,…]=sample(ip1,ip2,ip3,…)

.

.

.

End

% save the code as sample.m. Function name

% and m-file name should be the same

Page 14: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

The Algorithm

Dilation

• adds pixels to the boundaries of objects in an image.

• number of pixels added from the objects in an image

depends on the size and shape of the structuring element

• function strel(…) can be used to generate the SEs.

>> SE = strel('diamond', 1)

SE =

Flat STREL object containing 5 neighbors.

Neighborhood:

0 1 0

1 1 1

0 1 0

Page 15: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

>> SE = strel('square',3)

SE =

Flat STREL object containing 9 neighbors.

Neighborhood:

1 1 1

1 1 1

1 1 1

>> SE = strel('line', 7, 45)

SE =

Flat STREL object containing 5 neighbors.

Neighborhood:

0 0 0 0 1

0 0 0 1 0

0 0 1 0 0

0 1 0 0 0

1 0 0 0 0

Check out help on strel for

various combinations

Page 16: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Dilation does not necessarily mean dilation of the holes also. The holes get

contracted as shown above.

Also try image erosion. Use MATLAB’s help.

Page 17: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Continuing with The Algorithm

When the dilated image of the character us subtracted from the original we get

something like…

Next we create such images for all the characters that we

want to recognize. (For all those individual character

images in the folder)

>> N = imread ('.\char recog\N.bmp');

>> SE = strel('square',3);

>> N1 = imdilate(N,SE);

>> N2 = N1 - N;

>> figure,imshow(N2)

Page 18: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Continuing with The Algorithm

Function, bwhitmiss is employed to check if a particular character is present in

the given image.

bwhitmiss(BW1,SE1,SE2) performs the hit‐miss operation defined by the

structuring elements SE1 and SE2. The hit‐miss operation preserves pixels

whose neighborhoods match the shape of SE1 and don't match the shape of SE2.

If the matrix returned by bwhitmiss contains non zero elements, then the

character is found in the image.

Also note the use of functions isempty and nonzeros

You can now use charrec.m to recognize few characters in a crude way.

>> if ~isempty(nonzeros(bwhitmiss(im,N,N2)))

disp('N');

end

Page 19: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Image Segmentation

Global Thresholding Method

>> im=imread('automata.jpg');

>> im_gray=rgb2gray(im);

% im2bw converts grayscale image to binary

% image using a global threshold

>> bw1=im2bw(im_gray);

>> bw2=im2bw(im_gray, threshold);

% if no threshold is specified, it uses a

% function graythresh to calculate the

% threshold. Otsu’s method is implemented in

% graythresh function.

Page 20: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Result with global thresholding – one of the blocks is lost

Image Segmentation

Global Thresholding Method

Disadvantage is when there are multiple colors for objects and backgrounds.

Page 21: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Image Segmentation

Local Thresholding Method: Niblack’s Method

255 if

100 if

0 otherwise

I( x,y ) T ( x,y )

R( x,y ) I( x,y ) T ( x,y )

NN kyxT ),(

k and N are to be empirically determined

>> im=imread('blocks.jpg');

>> im_gray=rgb2gray(im);

>> imt=niblack(im_gray,0.5,201);

>> figure,imshow(imt,[])

% Here k=0.5 and N=201(preferably odd)

% think about effects of values of N on

% processing time and k on thresholding

% level

Page 22: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Image Segmentation

Local Thresholding Method: Niblack’s Method

% Since our objects of interest are white pixels,

% we will consider those equal to 255

>> imwhite=(imt==255);

% observe how the above command works. It checks

% pixel by pixel for the condition and returns a

% matrix

>> figure, imshow(imwhite)

% Now we need to clear the noisier regions. We

% use an erosion process followed by reconstruction

>> im_eroded=imerode(imwhite,strel('square',51));

>> im_recon=imreconstruct(im_eroded,imwhite);

>> figure, imshow(im_recon)

Page 23: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

Connected Components

% You can see pixels connected to each other

% form objects in the image. These are

% called connected components. Read more

% about 4-connectivity and 8-connectivity

% Label the connected components i.e. assign

% a particular number as pixel value to one CC

>> [bw_labelled num]=bwlabel(im_recon);

>> figure,imshow(bw_labelled,[])

% We can use regionprops() to extract some

% properties of the CCs

>> areas = regionprops(bw_labelled,'Area')

% Here areas is a struct variable

% Try experimenting with other properties and

% explore what property can be used to

% distinguish between CCs

Page 24: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

% We will convert to struct to a normal array for easy operation

>> areas1=[];

>> for i=1:length(areas)

areas1=[areas1; areas(i,1).Area];

end

>> areas1

areas1 =

415711

26440

10350

8630

17971

8282

5243

% We are interested in objects (the squares) with area in range 8000-

% 9000

>> index=find(areas1>8000 & areas1<9000);

>> finalimg=zeros(size(bw_labelled));

>> for i=1:length(index)

finalimg=finalimg+(bw_labelled==index(i));

end

Page 25: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

>> figure,imshow(finalimg,[])

This was again a very crude way, since we are depending only on value of

area which might not remain constant if camera changes position.

Most of the times the standard features available with regionprops() is

not sufficient. We will have to write our own code to extract features.

Also we used hard thresholds for areas to classify CCs. Again most of the

times, this is not followed. Classifiers using Pattern Recognition techniques

are employed.

Page 26: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB

You can try

Edge detection

and

Removing Noise By Median Filtering

(MATLAB Help)

Few Other Stuff

>> im=imread('ouch.jpg');

>> im_gray=rgb2gray(im);

>> imedge=edge(im_gray,'canny',[0.1 0.2]);

>> figure,imshow(imedge)

% Try different edge operators and

% threshold levels

There is more to learn in Image Processing. All the Best

Page 27: Basics of Image Processing using MATLAB

Basics of Image Processing using MATLAB