Matlab and Image Detection.pptx
Transcript of Matlab and Image Detection.pptx
![Page 1: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/1.jpg)
Simple Image Processing and Object Detection using Matlab
Akshar Prabhu Desai
![Page 2: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/2.jpg)
Objectives
• A quick introduction to matlab• Color models and their representation in
matlab• Generating and analyzing histograms• Noise reduction• Detecting objects of interest in image• A graded lab assignment at the end• Download links given at the end
![Page 3: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/3.jpg)
The Setup
• A webcam connected to your Windows machine
• Matlab R2009a• A table tennis ball• Chart paper of different colors
![Page 4: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/4.jpg)
Matlab Introduction
• MATrix LABolatory• The basic data type is a matrix • Basic features– Arithmetic and logical operations– Plotting– Signal Processing
![Page 5: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/5.jpg)
Getting Started
• Create a File with name First.m • Open Matlab and Select File > open and select
this file• To run a file click on the run icon
![Page 6: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/6.jpg)
Defining matrix
• >> d=[11 12 13 ; 21 22 23 ; 31 32 33]• This is a 2D matrix• Functions can be applied to the matrix– >> determin= det(b) ; %determinant– >> I = inv(b); %inverse
• % can be used to write comments
![Page 7: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/7.jpg)
The image
• This is the image we have captured using our setup. We have deliberately kept some ambience in the left hand side compared to the ideal right hand side image.
![Page 8: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/8.jpg)
Capturing Images using Matlab• imaqreset %reset • clear all• • vidobj = videoinput('winvideo',1); %capture the device handle• • set(vidobj, 'FramesPerTrigger',1); % each time we call trigger one frame gets captured• set(vidobj, 'TriggerRepeat',inf); % we can have infinite triggers• • triggerconfig(vidobj, 'manual'); % the trigger will be called manually. We can also set times for the same• start(vidobj); % start the device capture• i=1;• n=1;• % get• while 1,
– trigger(vidobj); % capture one frame• frame=getdata(vidobj); % frame is a matrix that stores the frame• imshow(frame); • n = n + 1;
– if(n>300),% we are capturing total of 300 frames – stop(vidobj); % never forget to close the device handle– break;– end
• end• i=i+1;
Only the red code changes as we move on rest of the code remains same.
![Page 9: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/9.jpg)
Color Models
• RGB• CMY and CMYK• HSI• And there are more
![Page 10: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/10.jpg)
RGB model
• Three primary spectral components• More suitable for Monitors• The diagonal passing through origin is the gray
scale model.
![Page 11: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/11.jpg)
CMY
• Cyan , Magenta and Yellow• 1- cyan = red (it means a cyan surface does
not reflect red at all)• More suitable for printing• Guess why do we need CMYK model ? (K- is
black)• CMY model is more suitable for image
processing
![Page 12: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/12.jpg)
Understanding the Image Matrix
• The “frame” is a 3D matrix. There are 3x2D matrixes each composed of R,G and B components.
• Here are the R G B components separated and displayed
R G B
![Page 13: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/13.jpg)
The code to display R component• while 1,• trigger(vidobj); % capture one frame• frame=getdata(vidobj); % frame is a matrix that stores the frame• • imshow(frame(:,:,1)); % displaying R component, to display G and B
change 1 to 2 and 3 respectively• n = n + 1;• if(n>300),% we are cpatuing total of 300 frames • stop(vidobj); % never forget to close the device handle• break;• end• end
![Page 14: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/14.jpg)
Converting to Grayscale
• RGB image is a 3D array we can convert it to Grayscale using the function rgb2gray.
• We can build full color images from gray scale components as well.
• We get a 2D array to process.
![Page 15: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/15.jpg)
The histogram
• Histogram is a plot of color and the statistical frequency of that color in the image.
• imhist(im); is the command to get an histogram.
![Page 16: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/16.jpg)
Why histograms matter
• The object we need to detect will have a certain color.
• We can detect the object by simply setting all the pixels that fall in that color’s frequency range to 1 and rest to zero.
• For Example:
![Page 17: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/17.jpg)
For our image
Making all pixels above 150 to white rest all black.
Making all pixels above 200 to white rest all black.
Code on next slide
![Page 18: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/18.jpg)
The code• while 1,• trigger(vidobj); % capture one frame• frame=getdata(vidobj); % frame is a matrix that stores the frame• • bw = rgb2gray(frame);• bw = im2bw(frame,0.78); % 0.78 = 200/255 • imshow(bw); • • n = n + 1;• if(n>300),% we are cpatuing total of 300 frames • stop(vidobj); % never forget to close the device handle• break;• end• end
![Page 19: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/19.jpg)
Image Detection
• Images can be detected based on only color, only shape or combination of both.
• Thresh-holding can be used easily where we have the freedom to chose the environment colors.
• For example
![Page 20: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/20.jpg)
Histogram & thresh-holding
Code for these three is on next slide
Our ball color is here
imshow(im2bw(bw,0.28));
![Page 21: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/21.jpg)
The code• while 1,• trigger(vidobj); % capture one frame• frame= getdata(vidobj); % frame is a matrix that stores the frame,
getdata is a inbuilt function that retrieves image from the camera handle • bw = rgb2gray(frame);• imshow(im2bw(bw,0.28)); % 0.28 = x/255• n = n + 1;• if(n>10),% we are capturing total of 10 frames • stop(vidobj); % never forget to close the device handle• break;• end• end
![Page 22: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/22.jpg)
The function reference
• http://www.mathworks.com/help/toolbox/images/ref/im2bw.html
• Above URL provides detailed list of inbuilt function related to image processing
![Page 23: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/23.jpg)
Limitations
• Note that this works because the environment colors are decided by us.
• In real world this kind of thing will not work.• This tutorial is limited to this approach only
![Page 24: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/24.jpg)
Location of the object in image
• Please read up what is filters and convolution.• We use wiener filter to remove the noise from
the filtered image. Code:
bw = rgb2gray(frame);bw = im2bw(bw,0.28);bw = wiener2(bw,[12 12]);imshow(bw);
![Page 25: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/25.jpg)
The concept of noise
• Consider the image
Noise
Noise
Object
![Page 26: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/26.jpg)
Noise Detection
• How do we convert into human perception of noise into something that can be detected mathematically ?
• One solution: Any pixel which is not similar to it’s neighborhood pixels can be due to noise.
• By looking at the neighborhood of the pixel we can make some assumption about a pixel.
• Notion of filtering uses this as basis.
![Page 27: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/27.jpg)
Wiener Filter
• It’s a noise reduction filter• It’s description is beyond the scope of
discussion but you should read up more about – Convolution (signal processing)
• http://en.wikipedia.org/wiki/Convolution
![Page 28: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/28.jpg)
Object Detection and labeling
• Here we use an inbuilt function to do thresholding and boundary detection and then annotate the detected objects.
• The histogram and thresholding techniques can be used by you to tune your environment colors.
![Page 29: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/29.jpg)
Object Detection and Labelling
• Matlab provides a function ‘bwboundaries’ which can be used for detecting boundaries of a binary image.
• We provide our filtered noiseless image to this function and it detects the boundaries for us:
Original ImageDetecting the boundaries and co-ordinates
![Page 30: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/30.jpg)
Here is the result of final program
![Page 31: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/31.jpg)
The complete program
The complete program can be downloaded fromhttps://github.com/akshar100/Matlab-Image-Detection
![Page 32: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/32.jpg)
More on matlab
• Matlab provides a large number of inbuilt filters (refer to the function manual)
• We can also define our own image filters• We can convert images from one Color model
to other. • CMY model is usually very good for color
based detection
![Page 33: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/33.jpg)
Two kinds of Object Detection
• Color based• Shape based• We have explained only color based detection
here. • Shape based detection is more complex.
![Page 34: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/34.jpg)
Controlling Robot
• Matlab can issue commands to communicate with the robot using serial communication
• Most of us would want the robot to go near the detected object.
![Page 35: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/35.jpg)
Algorithm
• Detect the Object in the image• Find the center of the detected object• Try to move the robot such that the center of
the object is same as the center of the image
![Page 36: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/36.jpg)
Example Code• if row < 220• 'go ahead'• elseif row > 260• 'go back'• elseif col>380• 'go right'• elseif col<320• 'go left'• else• 'stop'• end• break;
Row , column is the co-ordinates of the center of the image.
![Page 37: Matlab and Image Detection.pptx](https://reader034.fdocuments.in/reader034/viewer/2022042503/55cf946a550346f57ba1de68/html5/thumbnails/37.jpg)
Thank You