new machin vision

91

Upload: saurabhdabas7

Post on 25-Dec-2015

31 views

Category:

Documents


7 download

DESCRIPTION

MACHINE VISION PPT

TRANSCRIPT

Page 1: New Machin Vision
Page 2: New Machin Vision

Introduction to Machine vision Machine vision in robotics is nothing but, giving an eye

(generally in the form of a camera) to the robot.

Its main application area is in the industries to describe, the

understanding and interpretation of technically obtained images for

controlling production processes.

It is also mostly & very widely used in the field of medical &

space research works.

Page 3: New Machin Vision

SENSORS

• Analogous to human sensory organs: Eyes,

ears, nose, tongue, skin

• Help robot to know its surroundings better

• Improves its actions and decision making

ability

• Provides feedback control.

Page 4: New Machin Vision

SENSORS USED IN MACHINE VISION

Generally the optical/light sensors are used in machine vision

system.

From the list of the optical/light sensors, camera is widely used as

a sensor in machine vision system.

Page 5: New Machin Vision

CAMERA VISION

Page 6: New Machin Vision

CAMERA VISION CONT.

TYPES OF CAMERA VISION USED IN ROBOTICS:

Onboard camera vision Overhead camera vision

Page 7: New Machin Vision

DIFFERENT TYPES OF CAMERAS

• CCD Higher quality images with little noise

Typically more pixels

Higher sensitivity to light

• CMOS Lower cost

Easier to build

Lower power consumption

Page 8: New Machin Vision

BASIC CONSTRUCTION & WORKING OF A CAMERA

• The image sensor employed by most digital cameras is a charge coupled device (CCD). Some cameras use complementary metal oxide semiconductor (CMOS) technology instead.

• Both CCD and CMOS image sensors convert light into electrons.

Page 9: New Machin Vision

BASIC CONSTRUCTION & WORKING OF A CAMERA

• Serial - The earliest digital cameras had a serial interface, but no currentcameras use this since it is so slow.

• USB 1.1 - USB was the first widespread high speed method of data transferfrom cameras. It is theoretically capable of transfer speeds up to 11megabits/second (note megabits not megabytes)

• USB 2.0 - A development of USB but much faster - up to 480megabits/second.

• IEEE 1394 (Firewire) - Though this is an older interface than USB, it wasoriginally only really used much on Apple computers. It's capable of highspeed transfer (400 megabits/second) and it's now found on some PCs orit can be added to them via a plug-in card. More common on digital videocameras than still digital cameras.

Page 10: New Machin Vision

ADVANTAGES OF CAMERA VISION

• It is a combination of multiple sensors.

• Much wider view angle.

• Can be employed from a far distance to keep/record the information.

Page 11: New Machin Vision

IMAGE PROCESSING TOOLS

Page 12: New Machin Vision

EXPLORING MATLAB

• MATLAB is a program for doing numerical computation. It was originally designed for solving linear algebra type problems using matrices.

• It’s name is derived from MATrix LABoratory.

• MATLAB is an interpreter -> not as fast as compilers.

• File extension for MATLAB is .m

Page 13: New Machin Vision

INTRODUCTION TO MATLAB

Page 14: New Machin Vision

INTRODUCTION TO COMMANDS & FUNCTIONS

• Type the commands by terminating with a semicolon(;) in the command window & see the o/p or result on the same window.

• MATLAB is case sensitive i.e. b and B are different variables.

• % sign in the beginning of any sentence is used to give comment line. Multiline comment is not possible.

• To get help (when keyword is known) type help XXX (where XXX is the keyword).

• Type lookfor (when keyword is unknown).)

Page 15: New Machin Vision

VARIABLES:

• Variable names can contain up to 63 characters• Variable names must start with a letter followed by letters, digits,

and underscores.• Variable names are case sensitive• Special variables:- ans Default variable name for results pi Value of π eps Smallest incremental number inf Infinity NaN Not a number e.g. 0/0 Realmin The smallest usable positive real number realmax The largest usable positive real number Disp displays the contents of a variable

INTRODUCTION TO COMMANDS & FUNCTIONS CONT.

Page 16: New Machin Vision

INTRODUCTION TO COMMANDS & FUNCTIONS CONT.

• round(X): round to nearest integer, trailing 5 rounds to the nearestinteger away from zero. For example, round(2.5) returns 3; round(-2.5)returns -3.

• fix(X): round to nearest integer toward zero (truncate). For example,fix(2.7) returns 2; fix(-2.7) returns -2

• floor(X): round to the nearest integer toward minus infinity (round tothe nearest integer less than or equal to X). For example, floor(2.7) returns2; floor(-2.3) returns -3.

• ceil(X): round to the nearest integer toward positive infinity (round tothe nearest integer greater than or equal to X); for example, ceil(2.3)returns 3; ceil(-2.7) returns -2

FUNCTIONS:

Page 17: New Machin Vision

CONDITIONAL STATEMENTS & LOOPING

• if..elseif..else..end

Page 18: New Machin Vision

CONDITIONAL STATEMENTS & LOOPING CONT.• for..end

Page 19: New Machin Vision

CONDITIONAL STATEMENTS & LOOPING CONT.• while..end

Page 20: New Machin Vision

MATHEMATICAL OPERATIONS

Page 21: New Machin Vision

MATHEMATICAL OPERATIONS CONT.

Page 22: New Machin Vision

MATHEMATICAL OPERATIONS CONT.

Page 23: New Machin Vision

LOGICAL & CONDITIONAL OPERATIONS

< : less than <= : less than or equal to> : greater than>= : greater than or equal to == : equal ~= : not equal

& : and | : or ~ : not

Page 24: New Machin Vision

SIGNAL REPRESENTATION

• MATLAB has two inbuilt functions to represent a signal on the display:

• PLOT function is used for continuous domain functions.

• For discrete domain functions, you should use STEM function.

EXAMPLE: > n=-5:0.5:5;> x(n)=exp(j*(0.4*pi*n-0.5*pi));> y(n)=x(n)-x(n-1);> stem(y,n)

Page 25: New Machin Vision

SIGNAL REPRESENTATION CONT.

Signal representation example:

fs=100; % sampling frequency

t=0:1/fs:1; % setup time from 0 to 1 second

f=5; % input frequency

x=sin(2*pi*f*t); % input signal

subplot(211);plot(t,x); % plot the signal

title('Continuous-time');

subplot(212);stem(t,x); % plot the signal using stem

title('Discrete-time');

Page 26: New Machin Vision

ARRAY OPERATION

The Matlab array arithmetic operations are:

addition (+) subtraction (-)

array multiplication (.*) array division (./)

array power (.^)

These operations act element-wise on the arrays, for example if A is an n by m matrix

and B is an p by q matrix then A.*B is defined only if n=p and m=q, and the (i,j)

element of A.*B is the (i,j) element of A multiplied by the (i,j) element of B.

Example: >> A = [ 1 2; 3 4], B = [5 6; 7 8]

>> A.*B

>> A.^2

>> A./B

Page 27: New Machin Vision

ARRAY OPERATION CONT.

• >> size(A); The result gives the size of A, i.e., the number of rows and columns.

• >> sum(A) ; This function calculates the column sums in a rectangular array A and gives the sums in a row vector. (A column sum is the sum of the elements of a column.) If A is a row vector, then the sum of the elements of A is calculated. The function

• >> prod(A); does the same for the product.

Other Array operations are: transpose() < lower than

> greater than == equal to

>= greater than or equal to ~= not equal to

<= lower than or equal to

Page 28: New Machin Vision

STRING OPERATION

• A string matrix is like any other, except the elements in it are interpreted as ASCII numbers.

• To create a string variable, enclose a string of characters in ‘single’ quotation marks’

Ex: stg = 'This is a string';

x = ['ab' ; 'cd']

x = ['ab' 'cd']

Page 29: New Machin Vision

MATRIX OPERATION

• Matlab treats all variables as matrices. For our purposes amatrix can be thought of as an array, in fact, that is how it isstored.

• Vectors are special forms of matrices and contain only onerow OR one column.

• Scalars are matrices with only one row AND one column.

• A matrix with only one row is called a row vector. A rowvector can be created in Matlab as follows (note thecommas):

» rowvec = [12 , 14 , 63]

rowvec =

12 14 63

Page 30: New Machin Vision

MATRIX OPERATION CONT.

• A matrix with only one column is called a column vector.A column vector can be created in MATLAB as follows(note the semicolons):

» colvec = [13 ; 45 ; -2]

colvec =

13

45

-2

Page 31: New Machin Vision

MATRIX OPERATION CONT.

• A matrix can be created in Matlab as follows (note thecommas AND semicolons):

• » matrix = [1 , 2 , 3 ; 4 , 5 ,6 ; 7 , 8 , 9]

matrix =

1 2 3

4 5 6

7 8 9

Page 32: New Machin Vision

MATRIX OPERATION CONT.

EXTRACTING A SUB-MATRIX:

• A portion of a matrix can be extracted and stored in asmaller matrix by specifying the names of both matricesand the rows and columns to extract. The syntax is:

sub_matrix = matrix ( r1 : r2 , c1 : c2 ) ;

where r1 and r2 specify the beginning and ending

rows and c1 and c2 specify the beginning and

ending columns to be extracted to make the new

matrix.

Page 33: New Machin Vision

MATRIX OPERATION CONT.

EXTRACTING A SUB-MATRIX:

Page 34: New Machin Vision

MATRIX OPERATION CONT.

Accessing Single Elements of a Matrix

• A(i,j)

Accessing Multiple Elements of a Matrix

• A(1,4) + A(2,4) + A(3,4) + A(4,4) sum(A(1:4,4)) or

• sum(A(:,end))

• The keyword end refers to the last row or column.

Deleting Rows and Columns

• to delete the second column of X, use

• X(:,2) = []

Concatenating Matrices A and B

• C=[A;B]

Page 35: New Machin Vision

MATRIX OPERATION CONT.

Colon Operator

Page 36: New Machin Vision

MATRIX OPERATION CONT.

MATRIX FUNCTIONS:

• X = ones(r,c) % Creates matrix full with ones

• X = zeros(r,c) % Creates matrix full with zeros

• A = diag(x) % Creates squared matrix with

vector x in diagonal

• [r,c] = size(A) % Return dimensions of matrix A

• + - * / % Standard operations

• .+ .- .* ./ % Wise addition, substraction,…

• v = sum(A) % Vector with sum of columns

Page 37: New Machin Vision

MATRIX FUNCTIONS:

• X = A’ % Transposed matrix

• X = inv(A) % Inverse matrix squared matrix

• d = det(A) % Determinant

• [X,D] = eig(A) % Eigenvalues and eigenvectors

MATRIX OPERATION CONT.

Page 38: New Machin Vision

MATRIX FUNCTIONS:• ones

ones matrix

• zeroszeros matrix

• sizesize of a matrix

• diagdiagonal elements of a matrix

• inv matrix inverse

• randuniformly distributed random numbers

• randn normally distributed random numbers

• cumprodcumulative product of elements

MATRIX OPERATION CONT.• max

largest component

• min smallest component

• sum sum of elements

• mean average or mean value

• median median value

• std standard deviation

• sort sort in ascending order

• find find indices of nonzero entries

• corrcoefcorrelation coefficients

• covcovariance matrix

Page 39: New Machin Vision

M- FILES & FUNCTIONS IN MATLAB• Text files containing MATLAB programs. Can be called form

the command line or from other M-files.

• Present “.m” extension.

• Two kind of M-files:

1. Scripts

2. Functions

• A function file starts with a line declaring the function, its arguments and its outputs. There follow the statements required to produce the outputs from the inputs (arguments). That's it.

• Here is a simple example:

function y = port_val(holdings,prices) y = holdings*prices;

• Note that your function file name should be same as your function name with .m extension.

The main difference between a script and a function isthat a function accepts input from and returns outputto its caller, whereas scripts do not.

Page 40: New Machin Vision

FAMILIARIZATION WITH IMAGE PROCESSING

TERMINOLOGIES

Definitions of an image:

• It is a combination of pixel values.

• 0 - means Black & 1- means white.

• Mathematically it is a 2-D function.

Page 41: New Machin Vision

FAMILIARIZATION WITH IMAGE PROCESSING

TERMINOLOGIESDizitization

capturing an analog signal in digital form.

Sampling

converting a continuous signal into a

discrete signal.

Quantization

rounding process of samples to a fixed set of numbers (such as integers).

Page 42: New Machin Vision

TYPES OF IMAGE

• Monochrome• An image displayed in a single color or shades of a single color.

• Least memory requirement

• Also known as 1-bit image, each pixel is stored as a bit.

• Gray Scale• A grayscale (or graylevel) image is simply one in which the only colors are shades of gray.

• Processing is faster & easier.

• Also known as 8-bit image, each pixel is usually stored as a byte (value between 0 to 255) .

• Colored• A (digital) color image is a digital image that includes color information for each pixel.

• It is the combination of the 3- primary colors (RGB).

• Also known as 24- bit image, each pixel contains 3 values i.e. R, G & B-value.

Page 43: New Machin Vision

DIFFERENT PARAMETERS OF AN IMAGE

• PIXEL

Short for Picture Element,

A single point in a graphic image.

• RESOLUTION900 pixels ÷ 300ppi

= 3 inches wide

600 pixels ÷ 300ppi= 2 inches high

• TEXTUREThe feel of a surface or a fabricTexture mapping is a method for adding detailsor color to a computer generated graphic or 3-D model.

Page 44: New Machin Vision

DIFFERENT CONCEPTS

• Luminance

The amount of brightness.

• Chrominance

The color information.

• HueThe property of colors by which they can be perceived as ranging

from red through yellow, green, and blue, as determined by the

dominant wavelength of the light.

• Intensity/SaturationThe strength of a color, especially the degree to which it lacks its complementary color.

Same chrominance , different luminance

Same luminance, different chrominance

Page 45: New Machin Vision

DIFFERENT COLOUR SPACES

Color Space:

• RGB - Red Green Blue

• CMYK - Cyan Magenta Yellow Black

• HSV - Hue Saturation Value

• YIQ - Luminance Hue Saturation

• YCbCr - Luminance and Chrominance

Page 46: New Machin Vision

DIFFERENT COLOUR SPACES CONT.

RGB Color Space:

• Additive Model

• Three primary Colors

• Design Simplification

• Computer Graphics

Page 47: New Machin Vision

DIFFERENT COLOUR SPACES CONT.

CMYK Color Space:

• Subtractive Model

• Printing applications

Page 48: New Machin Vision

DIFFERENT COLOUR SPACES CONT.

YIQ Color Space:

• Y – luminance

I – Hue (Orange – Blue range)

Q – Saturation (Purple – Green range)

• Grayscale information is separated from color data

• Histogram Equalization (can be applied on Y)

• Defined by NTSC

• Used in United States Televisions

Page 49: New Machin Vision

DIFFERENT COLOUR SPACES CONT.

YCbCr Color Space:

• Y - luminance

• Cb & Cr - Chrominance Information

• Widely Used in Digital Video

Y

Cb

Cr

Page 50: New Machin Vision

HANDLING IMAGES IN MATLAB

There are two possible ways of handling image: • Using the Image Acquisition Tool box

• It is faster & flexible

• Available on MATLAB7.0 and above

Example: >>imaqhwinfo

>> vid = videoinput(‘winvideo’, 1);

>> preview(vid);

• Using VFM (Video for MATLAB)

• Add-on for all versions of MATLAB

• Once started you have to stop it along with MATLAB

• First of all you have to keep the vfm.m & vfm.dll file in your current directory (work), otherwise it won’t be work.

Page 51: New Machin Vision

IMPORTING IMAGE

There are two possible ways of importing image: • Using webcam with Image Acquisition Tool box

Example: >> vid = videoinput(‘winvideo’, 1);

>> image=getsnapshot(vid);

>> imshow(image);

• Using webcam with VFM (Video for MATLAB)

Example: >> image=vfm(‘grab’);

>> imshow(image);

• Using the stored image from the hard disk

>> image=imread(‘ball.jpg’);

>> imshow (image);N.B.: Before using this you have to store ball.jpg in the current directory.

Page 52: New Machin Vision

IMPORTING IMAGE CONT.

Graphical Representation of Importing an Image

Page 53: New Machin Vision

IMAGE REPRESENTATION

• You can store/save an image by using imwrite();

• An image is stored as a matrix using standard Matlab matrix conventions.

• There are five basic types of images supported by Matlab:

• Grayscale • True color RGB • Indexed • Binary • 8-bit images/Unit8

Page 54: New Machin Vision

IMAGE REPRESENTATION CONT.• Functions for conversion between different color spaces:

Page 55: New Machin Vision

FINDING PIXEL VALUE

• Use pixval to find out the information about pixels.

• Use the command imview(‘xyz.jpg’) & move the cursor over the image which will show you the pixel value.

• Use the following commands:

• >> i=imread('balls.bmp');

>> p=impixel(i);

>> disp(p);

Write click on image

Page 56: New Machin Vision

OPERATIONS USING PIXEL VALUE• The value of a single pixel in an image is indexed as:

p(m,n)

• Multiple pixels can be indexed with a vector as: p([1 3],1)

which selects pixels p(1,1) and p(3,1).

• Multiple pixels also can be indexed using a range. The first row is all pixels with row index 1 and any column index:

p(1,1:N) The notation 1:N indicates all indexes from 1 to N.

• The notation can contain a step value, e.g., 1:2:5 indicates indexes 1, 3, 5.

Page 57: New Machin Vision

OPERATIONS USING PIXEL VALUE CONT.• To change the color value of a pixel use:

>> y=imread('balls.bmp');>> y(100,155)=5;>> y(100,154)=5;>> imview(y);

• Filling an ROI

Filling is a process that fills a region of interest (ROI) by interpolating the pixel values from the borders of the region.

>> I = imread('ballgray.bmp');

>> imshow(I);

>> I2 = roifill;

>> imshow(I2);

Page 58: New Machin Vision

IMAGE MATRIX• Any image (supported format) can be stored in MATLAB in the form of a matrix.

• To show how an image is being stored in a matrix:

>> I = imread('balls.bmp');

>> size(I)

>> I(1:10,1:10)

• To resize the image, rotate to 45° & crop to original size:

>> I = imread('balls.bmp');

>> I2 = imresize(I, 0.5, 'bil');

>> imshow(I2);

>> I3 = imrotate(I2, 45,'bil', 'crop');

>> imshow(I3);

Page 59: New Machin Vision

IMAGE PROCESSING APPROACHES

• Image Processing generally involves extraction of useful information from an image.

• The basic block diagram of image processing system:

Database of images Pre-processing

Image acquisition Feature extraction

Data communication

Decision Making

Page 60: New Machin Vision

FUNCTIONS TO ENHANCE IMAGES

• imadjust - Adjust image intensity values>> RGB1 = imread('balls.bmp');>> RGB2 = imadjust(RGB1,[.2 .3 0; .6 .7 1],[]);>> imshow(RGB1), figure, imshow(RGB2)

• histeq - Enhance contrast using histogram equalization>> I = imread('ballgray.bmp');>> J = histeq(I);>> imshow(I)>> figure, imshow(J)

Some other functions: imnoise ‐ Add noise to an image.medfilt2 ‐ Perform 2‐D median filtering.ordfilt2 ‐ Perform 2‐D order‐statistic filtering.stretchlim ‐ Find limits to contrast stretch an image.wiener2 ‐ Perform 2‐D adaptive noise‐removal filtering.

Page 61: New Machin Vision

FUNCTIONS TO ENHANCE IMAGES CONT.

• Filtering the image:• Filtering is a technique for modifying or enhancing an image.

• Image processing operations implemented with filtering include smoothing, sharpening, and edge enhancement.

>> I = imread('balls.bmp');

>> h = fspecial('unsharp');

>> I2 = imfilter(I,h);

>> imshow(I), title('Original Image')

>> figure, imshow(I2),title(‘Filtered Image’)

• Other Filters are:‘average’ 'log’

'disk’ 'motion’

'gaussian’ 'prewitt’

'laplacian’ 'sobel’

'unsharp’

Page 62: New Machin Vision

THRESHOLDING

• Thresholding is a non-linear operation that converts a gray-scale image into a binary image where the two levels are assigned to pixels that are below or above the specified threshold value.

• You can apply a threshold to data directly from the command line,

e.g., BW = im2bw(I, level)

• Automatically calculate a threshold value using an iterative method. >>

>>x=imread('balls.bmp'); >> x=imread('balls.bmp');

>> BW = im2bw(x,0.4); >> Y = zeros(194,250);

>> imshow(x), figure, imshow(BW) >> for(i=1:194)

>>for(j=1:250)

>>if(x(i,j) > 50)

>>Y(i,j) = 1;

>>end

>>end

>>end

>> imshow(Y);

Page 63: New Machin Vision

IMAGE ARITHMATIC

Page 64: New Machin Vision

NOISE & NOISE REDUCTION

• Where does noise come from?• Scanner resolution

• Film grain (granularity)

• Hardware (interference patterns)

• Other

• Common type of noise:• Whitenoise (Gaussian)

• Local variance (Gaussian with intensity-dependent

variance)

• Salt and pepper

• Speckle

Page 65: New Machin Vision

NOISE & NOISE REDUCTION CONT.

Modeling of noise:

The function imnoise allows different types of noise to be modeled.

Syntax:J = imnoise(I,type,parameters)

I – Image

type – gaussian, localvar, poisson, salt & pepper, speckle

parameters – additional parameters needed

given the type of noise

Page 66: New Machin Vision

NOISE & NOISE REDUCTION CONT.

• The Image Processing Toolbox provides three main methods of filtering:

• Linear filtering

A linear filter computes each output pixel value according to a linear combination of

the input pixel's neighborhood. The basics of linear filtering are done through correlation and convolution.

• Median filtering

When noise causes the pixels to vary greatly from the original value (salt and

pepper), a median filter is more effective in reducing the noise.

• Adaptive filtering

This type of filter is effective in reducing the effects of Gaussian whitenoise.

Page 67: New Machin Vision

NOISE & NOISE REDUCTION CONT.

• Program to add & remove noise in an image:• Adding noise to an image:

>> I = imread('ballgray.bmp');

J = imnoise(I,'salt & pepper',0.05);

figure, imshow(I);

figure, imshow(J);

• Removing noise from an image:

>> I = imread(‘noisyball.bmp');

B = medfilt2(J,[2 3]);

figure, imshow(I);

figure, imshow(B);

Page 68: New Machin Vision

EDGE DETECTION

• Edge detection is nothing but a filtering process.

• The edge function of the Image Processing Toolbox makes it easy to perform edge detection.

• Followings are the different edge detection functions:

• sobel

• prewitt

• roberts

• log (laplacian)

• Canny (The perfect one)

• zerocross

Page 69: New Machin Vision

EDGE DETECTION CONT.

• Edge information in an image is found by looking at the relationship a pixel has with its neighborhoods.

• If a pixel’s gray-level value is similar to those around it, there is probably not an edge at that point.

• If a pixel’s has neighbors with widely varying gray levels, it may present an edge point.

• Many are implemented with convolution mask and based on discrete approximations to differential operators.

Sobel Mask

Prewitts MaskRoberts Mask

Page 70: New Machin Vision

HARDWARE DETAILS

• CMOS webcam:

• Video Format : 24bit RGB

• 30 Frames/sec

• Focus Range : 3 centimeters To Limitless

Page 71: New Machin Vision

DATA COMMUNICATION USING MATLAB

• MATLAB provides support to access serial port (also called as COM port) and parallel port (also called as printer port or LPT port) of a PC.

• Serial port:If you have to transmit one byte of data, the serial port will transmit 8 bits as one bit

at a time. The advantage is that a serial port needs only one wire to transmit the 8 bits

(while a parallel port needs 8).

• Parallel port:Parallel port has 25 pins Pins 2-9 are bi-directional data pins (pin 9 gives the most significant bit (MSB)), pins 10-13 and 15 are output pins (status pins), pins 1,14,16,17 are input pins (control pins), while pins 18-25 are Ground pins.

Page 72: New Machin Vision

ACCESSING THE PC’s SERIAL PORT

• MATLAB code for accessing the serial port is as follows:

>> ser= serial('COM1','BaudRate',9600,'DataBits',8);

>> fopen(ser);

• To send data through the serial port, the available commands

>> fwrite (ser,1); % for left motion

>> fwrite (ser,2); % for right motion

• You can close the port in case there are other applications using this port using the fclose command.

>> fclose(ser);

Page 73: New Machin Vision

ACCESSING THE PC’s PARALLEL PORT

• Parallel port interfacing:• To access the parallel port in MATLAB, define an

object:

>> parport= digitalio('parallel','LPT1');

• You may obtain the port address using,

>> get(parport,'PortAddress')

>> daqhwinfo('parallel'); % To get data acquisition

hardware information

Page 74: New Machin Vision

ACCESSING THE PC’s PARALLEL PORT CONT.

• You have to define the pins 2-9 as output pins, by using addline function

>> addline(parport, 0:7, 'out')

• Now put the data which you want to output to the parallel port into a matrix; e.g.

>> dataout = logical([1 0 1 0 1 0 1 1]);

• Now to output these values, use the putvalue function

>> putvalue(parport,dataout);

• Alternatively, you can write the decimal equivalent of the binary data and output it.

>> data = 23;

Page 75: New Machin Vision

DEVELOPMENT OF IMAGE PROCESSING ROBOTS

• Amount of data to be processed:If we have each frame to be of size 320x240 pixels for an RGB image the amount of data produced by each bit will be,

• Each color (R,G,B) will be represented by 8 bits.

• Hence, each pixel will be of 8x3=24 bits

• Now, total number of pixels are 320x240=76,800 pixels

• Hence, each frame will be of 76800x24=18,43,200 bits

• Hence, in terms of bytes the volume of data generated will be 18,43,200/8=230KB

• If we need to capture around 15 frames per second, the amount of data that will be generated per second will be approximately 4MB.

Page 76: New Machin Vision

DEVELOPMENT OF IMAGE PROCESSING ROBOTS CONT.

• Why conventional microcontrollers can’t be used for image processing?

• Limited throughput

• Low clock frequency (up to around 32Mhz)

• Lack of powerful Instruction set required for handling arrays

• Smaller word length handling capability

• Limited on-chip memory (RAM)

Page 77: New Machin Vision

DEVELOPMENT OF IMAGE PROCESSING ROBOTS CONT.

• Analyse the problem statement:

• Overhead

• Onboard

• Finalize the hardware required:

• Processor for image processing & navigation

• Camera/Image acquisition device

• Machine with motors and motor drivers

• Processor to/from machine communication

Page 78: New Machin Vision

COLOR DETECTION ROBOT

• Capture the image.• Select which colour to detect.

• Set the threshold value accordingly, that’s it.

• How to set the threshold value?• Capture few live images of the ball

• Using MATLAB (imview) analyze the pixel values

• Take a mean value

• Observe variation in pixel values with changing light conditions

• Light conditions keep on varying with every captured frame

• Try using a color space where color information (chrominance) and light

(luminance) can be separated.

• So which color space to use?

Page 79: New Machin Vision

COLOR DETECTION ROBOT CONT.MATLAB code:

clc

clear

while(1)

RGB=vfm('grab');

mode=input('Enter which color to detect: 1-Red, 2-Green, 3-Blue: ');

thres=input('Enter the threshold value: ');

[M,N,t] = size(RGB);

switch (mode)

case 1

I1 = zeros(M,N); I2 = zeros(M,N);

I1( find(RGB(:,:,1) > thres * RGB(:,:,2)) ) = 1;

I2( find(RGB(:,:,1) > thres * RGB(:,:,3)) ) = 1;

strTitle = 'Color RED detected (white areas)';

I = I1 .* I2;

Page 80: New Machin Vision

COLOR DETECTION ROBOT CONT.case 2

I1 = zeros(M,N); I2 = zeros(M,N);

I1( find(RGB(:,:,2) > thres * RGB(:,:,1)) ) = 1;

I2( find(RGB(:,:,2) > thres * RGB(:,:,3)) ) = 1;

strTitle = 'Color GREEN detected (white areas)';

I = I1 .* I2;

case 3

I1 = zeros(M,N); I2 = zeros(M,N);

I1( find(RGB(:,:,3) > thres * RGB(:,:,1)) ) = 1;

I2( find(RGB(:,:,3) > thres * RGB(:,:,2)) ) = 1;

strTitle = 'Color BLUE detected (white areas)';

I = I1 .* I2;

otherwise

fprintf('Enter a valid choice for color'\n);

return;

end

sub

plo

t(2,1

,1),im

sho

w(R

GB

); title('O

riginal Im

age');

sub

plo

t(2,1

,2),im

sho

w(I,[]); title

(strTitle);

en

d

Page 81: New Machin Vision

BALL FOLLOWER ROBOT

• Place the ball in such a distance that centre of ball and centre of frame should coincide.

• According to the color of the ball set the threshold value which will separate the background from the ball.

• Set the values for forward/backward movement through parallel port communication.

Page 82: New Machin Vision

BALL FOLLOWER ROBOT CONT.

Ideal position of the ball Distinguishing between BG color & ball color by

setting proper threshold value

• The diameter of the ball when it is at the ideal position is always fixed

Mark all pink pixels as ‘1’ and other pixels as ‘0’

Page 83: New Machin Vision

BALL FOLLOWER ROBOT CONT.

Problematic situation:

• Can

• be tackled by selecting appropriate threshold

• Can be solved by selecting appropriate threshold value.

Page 84: New Machin Vision

BALL FOLLOWER ROBOT CONT.

• Deciding forward/backward & left/right movement:

• Diameter will decide either to go forward/backward.

• The distance between frame center & ball CG will decide right/left turn.

Dia.

Page 85: New Machin Vision

BALL FOLLOWER ROBOT CONT.

• How to prevent the machine from oscillation?

Eg:

• Select a no-action range so that the machine will not oscillate.

Page 86: New Machin Vision

BALL FOLLOWER ROBOT CONT.

• MATLAB code: Flie name: main.mclc

clear

%cb=110;%orange ball

%cr=160;%orange ball

%cb=125;%pink ball

%cr=160;%pink ball

cb=90;%yellow ball

cr=115;%yellow ball

while(1)

image=vfm('grab');

image_ycbcr=rgb2ycbcr(image);

image_cb=image_ycbcr(:,:,2);

image_cr=image_ycbcr(:,:,3);

[r c d]=size(image_ycbcr);

output_image=zeros(r,c);

for i1=1:r

for i2=1:c

if (image_cr(i1,i2)>cr && image_cb(i1,i2)<cb)

output_image(i1,i2)=1;

else

output_image(i1,i2)=0;

end

end

end

imshow(output_image)

Page 87: New Machin Vision

BALL FOLLOWER ROBOT CONT.[r_cent c_cent]=centroid1(output_image);

total_pix=sum(sum(output_image));

if(total_pix<700)

stop();

disp('No Ball');

else

if (c_cent<120)

left();

disp('left()');

elseif (c_cent>200)

right();

disp('right()');

else

stop();

disp('stop()');

end

if (r_cent<90)

disp('forward()');

forward();

stop();

forward();

stop();

elseif (r_cent>150)

disp('back()');

back();

stop();

back();

stop();

else

stop();

disp('stop');

end

end

end

Page 88: New Machin Vision

BALL FOLLOWER ROBOT CONT.

• File name: centroid1.m:

function [r_cent c_cent]=centroid1(arg)

[r_index c_index]=find(arg);

r_cent=mean(r_index);

c_cent=mean(c_index);

• File name: forward.m

function [ ]=forward()

parport=digitalio('parallel','LPT1');

line=addline(parport,0:7,0,'out');

pval=[1 0 1 0 0 0 0 0];

putvalue(parport,pval);

• File name: delay.mfunction[ ]=delay(x)

%tic

for i=1:500

for j=1:500

for k=1:x %if u give x=420 u will get a delay of 1 second.

end

end

end

%toc

Page 89: New Machin Vision

LINE FOLLOWER ROBOT

• All the steps discussed above for ball follower is applicable here.

• But here the only change you have to make is for forward/backward movement, you have to take care of the changes in the x- direction.

• You have to control the speed of the robot by generating PWM signal.

• Use right spin, left spin instead of right turn, left turn.

Page 90: New Machin Vision

LINE FOLLOWER ROBOT CONT.• MATLAB code:

clcclearcb=127;cr=0;while(1)

image=vfm('grab');image_ycbcr=rgb2ycbcr(image);image_cb=image_ycbcr(:,:,2);image_cr=image_ycbcr(:,:,3);[r c d]=size(image_ycbcr);output_image=zeros(r,c);for i1=1:r

for i2=1:cif (image_cr(i1,i2)>cr &&

image_cb(i1,i2)<cb)output_image(i1,i2)=1;

elseoutput_image(i1,i2)=0;

endend

end

imshow(output_image)[r_cent c_cent]=centroid1(output_image);

total_pix=sum(sum(output_image));disp(total_pix);if(total_pix<7000)

% stop();disp('No Line');

elseif (c_cent<120)

left();left();disp(‘left()');disp(c_cent);disp(r_cent);

Page 91: New Machin Vision

LINE FOLLOWER ROBOT CONT.• MATLAB code:

elseif (c_cent>200)

right();right();disp(‘right()');disp(c_cent);disp(r_cent);

else

end

if (r_cent<90)back();disp('back()');disp(c_cent);disp(r_cent);

elseif (r_cent>120)forward();stop();forward();stop();disp('forward()');disp(c_cent);disp(r_cent);

elsedisp('stop()');disp(c_cent);disp(r_cent);

endend

end