Vous êtes sur la page 1sur 66

SCIENCE CLUB
PRESENTS

INTRODUCTION TO IMAGE
PROCESSING USING MATLAB

## Acquainting with the MATLAB environment.

Learn the basics ideas about image processing.
Learn advanced concepts like segmentation, OCR, template
matching and feature extraction.

## Digital image consists of small indivisible elements of a picture

called PIXEL.
In black and white or grayscale picture the darkest black is 0 and
the brightest colour is 255. This is because each pixel is
represented by a 8bit unsigned integer number (uint8).

## Some basic important commands to begin with

>>
>>
>>
>>
>>
>>
>>
>>

imshow(im)
idisp(im)
imhist(im) //Only for grayscale images
ihist(im) //For both grayscale and coloured images
colorname(maroon)
bw=rgb2gray(im)

Histogram

Command: ihist(im)
The histogram gives the number of pixels in a picture for a
corresponding pixel value.

Thresholding
Initial image:

Thresholding
>> im= double(im)
>> im= im/255
>> im2= im>0.7
The im2 is a 2 dimentional
binary matrix of datatype
logical.

## An easy solution: 3x3 mean/ median

filter

Mean filter
>> imnoisy=imnoise(im,'salt &
pepper',0.1);
>> f=fspecial('average')
f=
0.1111
0.1111
0.1111

0.1111
0.1111
0.1111

0.1111
0.1111
0.1111

>> f1=filter2(f,imnoisy);
>> imshow(uint8(f1))

Median filter
>> med=medfilt2(imnoisy);
>> imshow(med)

## A median filter is more preferred over mean filtered as it

gives importance to the central tendency and tends to
neglect the effect of extremum values.

Problem solved!!!

## Gaussian Noise and Gaussian Filter

>> imn=imnoise(im,'gaussian',0.01);
>> sigma=3;
>> cutoff=ceil(3*sigma);
>>
h=fspecial('gaussian',2*cutoff+1,sigma
);
>> surf(1:2*cutoff+1, 1:2*cutoff+1, h)
>> out=conv2(double(imn),h,'same');
>> figure, imshow(uint8(out))

Wiener Filter

Command:
>> w= wiener2(imn,[5 5]);
>> imshow(w)
The Weiner Filter is much preferred over Gaussian Filter as the
Gaussian Filter blurs the image.
The Weiner Filter filters out the noise from an image by minimizing
the mean square error.

Concept of Filtering

## In image processing whenever we are applying a transformation on

the picture matrix for blurring, sharpening, embossing, edgedetection, etc. we actually convolve the image matrix with a
kernel or convolution matrix or mask.
For example this simple kernel can be used for edge detection!!!
0

-1

-1

-1

-1

## A 5x5 Gaussian Kernel

The Gaussian Kernel acts as a Low Pass Filter and the
frequency response of the filter is a Gaussian curve
resembling a bell-jar.

## Ringing Effect in Fourier Domain

>>
>>
>>
>>
>>
>>
>>
>>
>>

[x,y]=meshgrid(-128:127,-128:127);
z=sqrt(x.^2+y.^2);
figure, imshow(uint8(z))
zt=(z<20);
figure, imshow(zt)
ztf=fftshift(fft2(zt));
ztf1=log(1+abs(ztf));
m=max(ztf1(:));
figure, imshow(im2uint8(ztf1/m))

Simple Remedy

## Apply a low pass filter !!!

>> b=1./(1+(z./15).^2);
>> figure, imshow(b)
>> bf=fftshift(fft2(b));
>> bf1=log(1+abs(bf));
>> b=1./(1+(z./15).^2);
>> figure, imshow(b)
>> bf=fftshift(fft2(b));
>> bf1=log(1+abs(bf));

Edge detection

## >> im = edge(I, method, threshold, direction, sigma)

This detects edges in image I, where method specifies edge
detection method used, threshold specifies sensitivity to edges,
direction specifies the direction in which the function looks for
edges: horizontally, vertically or both (goes only with Sobel and
Prewitt methods), sigmaspecifies standard deviation of the filter
(used with Canny and Laplacian of Gaussian methods).

Colour !!!
>>
);
a [uint8] : 426x640x3
(817.9 kB)

## Colour Image Indexing!!!

>>
;
>> im(100,200,:)
ans(:,:,1) =
208
ans(:,:,2) =
154
ans(:,:,3) =
178

>>
squeeze(im(100,200,:))
ans =
208
154
178

>> ihist(im)

## Dividing Components of Coloured

Image
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

R = im(:,:,1);
G = im(:,:,2) ;
B=im(:,:,3);
R=double(R);
G=double(G);
B=double(B);
Y=R+G+B;
r= R./Y ;
g=G./Y ;
b=B./Y;

Chromaticity Classification
In the next step let us use the
command:
>> bin=(r>0.6) & (g<0.4);
What does this do?

Bingo!!!
We just separated the
red portion in the
picture!!!

## Getting details about the tomato!!!

>> m=iblobs(bin, 'area', [20 Inf], 'class', 1)
m=
(1) area=70718, cent=(158.7,120.2), theta=3.14, b/a=0.744,
class=1, label=1, touch=1, parent=1, perim=1108.0, circ=0.805
(2) area=1255, cent=(156.8,61.1), theta=-3.12, b/a=0.733, class=1,
label=2, touch=0, parent=1, perim=141.1, circ=0.882
(3) area=3683, cent=(175.6,126.8), theta=3.11, b/a=0.714, class=1,
label=3, touch=0, parent=1, perim=307.1, circ=0.546

## Finding the blobs!!!

>> idisp(bin)
>> m.plot('b*')
>> m.plot_box('g')
>> [m(1).uc m(1).vc]
ans =
158.6974 120.1634

Lets Play!!!

## Just 5 lines!!! Thats all!!!

Green Screen

Colour Segmentation

image.

## Object Segmentation Code: Labelling the coins

>>
;
>> figure, imshow(A)
>> title('Original
Image');
>> B=im2bw(A);
>> figure, imshow(B)
>> C=imfill(B,'holes');
>> figure, imshow(C)

>> label=bwlabel(C);
>> max(max(label));
>> im1=(label==1);
>> figure, imshow(im1)
>> figure,
imshow(label==6)
>> figure,
imshow(label==10)

## Getting back the lost money !!!

for j=1:max(max(label))
[row,col]=find(label==j);
len=max(row)-min(row)
+2;
brd=max(col)-min(col)+2;
target=uint8(zeros([len
brd]));
sy=min(col)-1;
sx=min(row)-1;

for i=1:size(row,1)
x=row(i,1)-sx;
y=col(i,1)-sy;
target(x,y)=A(row(i,1),col(i,1)
);
end
mytitle=strcat('Object
Number:',num2str(j));
figure, imshow(target);
title(mytitle);
end

EUREKA!!!

EUREKA!!!

Result!!!

Sliding Window

Goal!!!

Detection

Sliding Window

Text Detection

## Understanding the text!!!

OCR Scheme
Training
Data

Pre-processing

Pre-processing

Feature
Extraction

Feature
Extraction

Model
Estimation

Classification

Test
Data

Face Detection
Basic Idea: Slide a window across image and evaluate a face
model at every location
Challenges:
Sliding window detector must evaluate tens of thousands of
location/scale combinations
Faces are rare: 010 per image

Face Detection
Face recognition is a visual pattern recognition problem
A face is a three-dimensional object subject to varying

## illumination, pose, expression is to be identified based on its

two-dimensional image ( or three- dimensional images
obtained by laser scan).
A face recognition system generally consists of 4 modules detection, alignment, feature extraction, and matching.

Detection
Insert RGB
Image

Skin
Segmentation
RGB to YCbCr
RGB to HSV
Threshold to
determine skin
region

Skin
pixels

Multi solution
iterative
template
matching

Classifier

Face/Nonface

## Process of finding skin pixels in the image.

Reject as much non-skin segment as possible.
Detects skin regions in images and remove background part using
threshold.
Remove other body parts by using binary image processing.

## Preliminary Face Detection

Electrons et Photons

Eye Detection!!!

Aye it works!!!

## A Contemporary Research Topic

Detecting malignant cells from a CT scan/ X-ray image of the lungs/
marry glands/ brain!!!

The Approach
Preprocessin
g

Feature
Extraction

Classification

## Median Filtering (Noise Removal)

Sharpening
Enhancement
Segmentation (Threshold/ Watershedding)
Histogram equalisation

Morphological
Colorometric
Texture

Neural Network
Support Vector Machine (SVM)
Fuzzy Clustering

Voila!!!

Other Uses!!!
Cell count
Quality control in manufacturing
Studying genome and mutation in genes
Autonomous driving vehicle

Lane Detection!!!

Template Matching
Image:

Template:

Template Matching

Template Matching

THANK YOU!!!