0% found this document useful (0 votes)
51 views

Image Processing: Robotics Club Summer Camp'12

This document provides an introduction to image processing. It defines what an image is in terms of pixels and color values. It describes different types of images including binary, grayscale, and RGB images. It introduces OpenCV, an open source library for image processing. It explains how to load, display, manipulate and save images using OpenCV functions. It also discusses video capture and mouse pointer information in images. Finally, it provides examples of common image processing problems and questions.

Uploaded by

shivaragul
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views

Image Processing: Robotics Club Summer Camp'12

This document provides an introduction to image processing. It defines what an image is in terms of pixels and color values. It describes different types of images including binary, grayscale, and RGB images. It introduces OpenCV, an open source library for image processing. It explains how to load, display, manipulate and save images using OpenCV functions. It also discusses video capture and mouse pointer information in images. Finally, it provides examples of common image processing problems and questions.

Uploaded by

shivaragul
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

IMAGE

PROCESSING

ROBOTICS CLUB
SUMMER CAMP’12
WHAT IS IMAGE PROCESSING?

IMAGE
PROCESSING =
IMAGE
+
PROCESSING
WHAT IS IMAGE?
 IMAGE = Made up of PIXELS
 Each Pixels is like an array of Numbers.

 Numbers determine colour of Pixel.

 TYPES OF IMAGES
1. BINARY IMAGE
2. GREYSCALE IMAGE
3. COLOURED IMAGE
BINARY IMAGE
Each Pixel has either 1 (White) or 0 (Black)
Depth =1 (bit)
Number of Channels = 1

0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0
GRAYSCALE
Each Pixel has a value from 0 to 255.
0 : black and 1 : White

Between 0 and 255 are shades of b&w.

Depth=8 (bits)
Number of Channels =1
GRAYSCALE IMAGE
RGB IMAGE

Each Pixel stores 3 values :-


R : 0- 255
G: 0 -255
B : 0-255

Depth=8 (bits)
Number of Channels = 3
RGB IMAGE
HSV IMAGE
Each pixel stores 3 values :-
H ( hue ) : 0 -180
S (saturation) : 0-255
V (value) : 0-255

Depth = 8 (bits)
Number of Channels = 3

Note : Hue in general is from 0-360 , but as hue


is 8 bits in OpenCV , it is shrinked to 180
STARTING WITH OPENCV

OpenCV is a library for C language developed for


Image Processing

To embed opencv library in Dev C complier , follow


instructions in :-
http://opencv.willowgarage.com/wiki/DevCpp
HEADER FILES IN C

After embedding openCV library in Dev C include


following header files:-

#include "cv.h"
#include "highgui.h"
IMAGE POINTER
An image is stored as a structure IplImage with
following elements :-
int height Width

int width
int nChannels
int depth Height

char *imageData
int widthStep
….. So on
 Initialising pointer to a image (structure) :-
IplImage* input

 Load image to the pointer [0=gray;1=colored]


input = cvLoadImage("apple.jpg",1)

Note :The image apple.jpg must be in same


folder where you save your C program
CVNAMEDWINDOW("II",1)
Creates a window named ii
1 = Coloured 0 = Grayscale
CVSHOWIMAGE("II",INPUT)

Shows image pointed by input , in the window named ii


CREATE AN IMAGE
To create an image you need to specify its :-
 Size ( height and width)

 Depth

 Number of Channels

output=cvCreateImage(cvGetSize(input),IPL_
DEPTH_8U,3)
CVWAITKEY( A NUMBER )

If 0 or negative number is given as input:-


Waits indefinitely till key press and returns the
ASCII value of the key pressed

 If positive number is given as input :-


Waits for corresponding milliseconds.
Command Function

cvDestroyWindow("ii") Destroys window named ii

cvReleaseImage( &input ) Releases image pointer input from


memory
output=cvCloneImage(input) Copies image from input to output

cvCvtColor( input, output, Saves input image in output pointer in


conversion type) other color space

Conv. type : CV_BGR2GRAY


,CV_BGR2HSV
cvSaveImage("output.jpg",output) Saves image pointed by output naming it
output
cvDilate(input , output, NULL, Dilates an image for given number of
iterations) iterations and saves it in output
cvErode(input,erode,NULL,iteration Erodes an image for given number of
s); iterations and saves it in output

Note : here NULL is a structural


element
cvThreshold(input, output, threshold,
maxValue, thresholdType)
Threshhold types:-
 CV_THRESH_BINARY

max value if more than threshold, else 0


 CV_THRESH_BINARY_INV

0 if more than threshold , else max value


 CV_THRESH_TRUNC

threshhold if more than threshold , else no


change
 CV_THRESH_TOZERO

no change if more than threshold else 0


 CV_THRESH_TOZERO_INV

0 if morethan threshold , else no change


imageData
An image’s data is stored as a character array whose
first element is pointed by :-
Input->imageData ( char pointer )

6 0 15 86 255 46 82

widthStep
Number of array elements in 1 row is stored in :-
input->widthStep
ACCESSING (I,J) PIXEL OF AN IMAGE

 Grayscale
uchar *pinput = (uchar*)input-
>imageData;
int c = pinput[i*input->widthStep + j];
j
(0,0
i )

(i,j)
 3 channel image (BGR):-
uchar *pinput = (uchar*)input->imageData;
int b= pinput[i*input->widthStep + j*input-
>nChannels+0];
int g= pinput[i*input->widthStep + j*input-
>nChannels+1];
int r= pinput[i*input->widthStep + j*input-
>nChannels+2];
j

(0,0)
i

BGR BGR (i,j)


VIDEO POINTER
CvCapture* capture - is a video pointer.

 To take video from camera :-


CvCapture
*capture=cvCreateCameraCapture(0);
Note : Here 0 - Default & 1 - External

 Totake video from a saved video file :-


CvCapture*
capture=cvCreateFileCapture("trial.avi" );
TAKING IMAGE FROM CAMERA
CvCapture
*capture=cvCreateCameraCapture(0);
for(int i=0;i<100000000;i++);
if(capture!=NULL)
IplImage
*frame=cvQueryFrame(capture);

Note : Here for loop is used to compensate time of


initialization of camera in Windows
PLAYING VIDEO
CvCapture *capture=cvCreateCameraCapture(0);
IplImage *frame;
if(capture!=NULL){
frame=cvQueryFrame(capture );
while(1){
cvShowImage(“Video",frame);
frame=cvQueryFrame(capture);
c=cvWaitKey(1);// frame rate
if(c>0&&c<255)
break;
}
}
MOUSE POINTER INFORMATION
void my_mouse_callback( int event, int x, int y, int flags, void*
param ){
uchar *pimage = (uchar*)image->imageData;
int r=pimage[y*image->widthStep + x*image-
>nChannels+2];
int g=pimage[y*image->widthStep + x*image-
>nChannels+1];
int b=pimage[y*image->widthStep + x*image-
>nChannels+0];
printf( " x=%d y=%d r=%d g=%d b=%d\n",x,,y,,r,g,b);
}
main(){ ……..
cvNamedWindow("image",1);
cvSetMouseCallback("image", my_mouse_callback, NULL);
cvShowImage("image",image); }

Note : cvSetMouseCallback is set for a NamedWindow and not for


an image
IP PROBLEM STATEMENTS
In general , all IP problem Statements have to discard
one color and accept another in output image .

Input Output Binary


Image ` Image
If( color pixel value >
threshhold)
output pixel=255;
else
output pixel =0;
Note : In general , HSV format is highly useful to
distinguish RGB colors ( Why ? )
QUESTIONS

You might also like