A Tutorial On Ip 2


Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

A Tutorial On Ip 2

  1. 1. February 1st – 4th ,2007
  2. 2. Image Acquisition and Real Time Processing Techniques
  3. 3. Why Real-time Image Processing? <ul><li>Image processing is an important tool in many applications. </li></ul><ul><li>Problem is that one needs to acquire images and pre-process them before doing actual IP. </li></ul><ul><li>Sometimes it may be required that offline image processing is not possible i.e. one needs to proceed with real-time IP or even more, processing of the video itself. </li></ul>
  4. 4. Real-Time Image Processing <ul><li>Such Real-Time Image processing can be done on standalone hardware like DSP or ASIC. </li></ul><ul><li>Another approach being using a personal computer. </li></ul>
  5. 5. Image Acquisition <ul><li>Image acquisition from the video capture devices connected to the computer, is an important task in Real Time Image Processing applications. </li></ul><ul><li>Few approaches being, developing custom standalone applications or using software like MATLAB (image and video processing toolbox) etc. </li></ul>
  6. 6. Problems with MATLAB <ul><li>Even though MATLAB is simple and robust ,it doesn’t have features for real-time image processing (Even the latest image and video processing tool box doesn’t provide this feature), which renders it useless in this problem </li></ul>
  7. 7. <ul><li>Another approach being developing custom applications in languages like C, C++, VC++, VB, Java etc. </li></ul><ul><li>This languages don’t have capability to handle Images and they require different libraries to achieve these tasks. </li></ul>
  8. 8. Different Libraries for image acquisition on Windows Platform <ul><li>DirectShow (part of the DirectX API) </li></ul><ul><li>OpenCV </li></ul><ul><li>Vision SDK </li></ul><ul><li>Java Media Framework </li></ul>
  9. 9. Comparison of the Various approaches <ul><li>OpenCV and Vision SDK comprise of the High Level Functions. Where as the DirectX is a set of Low Level API, which directly interact with the hardware. </li></ul><ul><li>OpenCV and Vision SDK encapsulate the DirectX API. </li></ul>
  10. 10. Computer Graphic System DAC Video RAM Hardware Buffer Graphic Controller CPU Main Memory Mother Board Video Adapter
  11. 11. Filter <ul><li>A filter is a software component which does a particular task. </li></ul><ul><li>They have to comply with the COM specification. </li></ul><ul><li>They form the backbone of the DirectX library. </li></ul>
  12. 12. General Architecture Media Source Source Filter Transform Filter Renderer Filter Destination
  13. 13. Tools Required <ul><li>Windows (2000 or later) </li></ul><ul><li>Visual Studio (6.0 or later) </li></ul><ul><li>DirectX SDK (9.0 or later) </li></ul><ul><li>OpenCV (4.0 or later) </li></ul>
  14. 14. OpenCV <ul><li>OpenCV is an opensource project supported by Intel. </li></ul><ul><li>It is a collection of C structures, functions and C++ classes that contain implementation of algorithms of image processing and computer vision </li></ul>
  15. 15. Some basic C Structures <ul><li>IplImage : </li></ul><ul><li>Every Image in OpenCV is an instantiation of a structure called IplImage . </li></ul><ul><li>This structure consists of Image data in a 1-D array format. Others fields of this structure consist of data like width, height, no of channels etc. </li></ul>
  16. 16. Some basic Structures (cont..) <ul><li>Some other commonly used structures are </li></ul><ul><li>1)CvPoint { int x,int y} </li></ul><ul><li>2)CvSize {int width, int height } </li></ul><ul><li>3)CvRect {int x,y,width,height } </li></ul><ul><li>4)CvScalar { double val[4] } </li></ul><ul><li>5)CvMat </li></ul>
  17. 17. Some basic Structures (cont..) <ul><li>CvArr - > IplImage , CvMat </li></ul><ul><li>CvCapture </li></ul>
  18. 18. Some Important functions Initialization Functions <ul><li>cvNamedWindow(char*) </li></ul><ul><li>cvCreateImage </li></ul><ul><li>cvCaptureFromCAM(index) </li></ul>
  19. 19. Image Processing Functions <ul><li>cvCopy </li></ul><ul><li>cvFlip </li></ul><ul><li>cvCvtColor </li></ul><ul><li>cvNot </li></ul><ul><li>cvSmooth </li></ul><ul><li>cvZero </li></ul>
  20. 20. Memory Release functions <ul><li>cvReleaseImage </li></ul><ul><li>cvReleaseCapture </li></ul><ul><li>cvDestroyWindow </li></ul>
  21. 21. Program Steps <ul><li>Create Window </li></ul><ul><li>Create a capture stream </li></ul><ul><li>Grab a frame from the stream </li></ul><ul><li>Display frame on the screen </li></ul><ul><li>Release capture and Images </li></ul><ul><li>Destroy window </li></ul>
  22. 22. Sample Code <ul><li>CvCapture* cap = cvCaptureFromCAM(0); </li></ul><ul><li>cvNamedWindow(“Webcam”); </li></ul><ul><li>for(;;) </li></ul><ul><li>{ </li></ul><ul><li>IplImage* frame = cvQueryFrame(cap); </li></ul><ul><li>cvShowImage(“Webcam”,frame); </li></ul><ul><li>} </li></ul><ul><li>cvReleaseCapture(&cap); </li></ul><ul><li>cvDestroyWindow(“Webcam”); </li></ul>
  23. 23. <ul><li>THANK YOU </li></ul>