Programming Cameras and Pan-Tilts
with DirectX and Java
- 1st Edition - December 19, 2002
- Latest edition
- Authors: Larry Wolff, Ioannis Pavlidis, Vassilios Morellas, Pete Roeber
- Language: English
The rapid rise of PC-based cameras has lead to the enormous growth of software applications that use real-time video programming. These applications include video conferencing,… Read more
Purchase options
World Book Day celebration
Where learning shapes lives
Up to 25% off trusted resources that support research, study, and discovery.
Description
Description
The rapid rise of PC-based cameras has lead to the enormous growth of software applications that use real-time video programming. These applications include video conferencing, computer games, scientific research, automated security and surveillance, industrial inspection, and Web cameras. Previously, developers had to search through manufacturer manuals or research papers in computer vision or image processing to learn how to program devices for these applications.
Programming Cameras and Pan-Tilts with DirectX and Java is the first book to offer practical tools and techniques for those struggling to gain an in-depth understanding of programming computer vision applications with live camera streams and pan-tilt devices. It shows how to build DirectShow filters from scratch and introduces computer vision concepts as needed to understand the code. Special emphasis is devoted to DirectShow programming and popular computer vision applications such as segmentation and tracking.
Programming Cameras and Pan-Tilts with DirectX and Java is the first book to offer practical tools and techniques for those struggling to gain an in-depth understanding of programming computer vision applications with live camera streams and pan-tilt devices. It shows how to build DirectShow filters from scratch and introduces computer vision concepts as needed to understand the code. Special emphasis is devoted to DirectShow programming and popular computer vision applications such as segmentation and tracking.
Key features
Key features
- Shows step-by-step how to program cameras for a variety of applications in both Visual C++ .NET and the Java Media Framework (JMF).
- Describes programming methods proven in industrial and research settings that can be used with any camera that connects to a PC through a DirectShow-compliant frame grabber.
- Provides easy-to-understand explanations of the underlying concepts of the code examples suitable for those studying computer vision, image processing, or multimedia.
Readership
Readership
Professional developers working in the area of computer video programming. Undergraduate or graduate students taking courses in image processing, computer vision, and multimedia.
Table of contents
Table of contents
Forword
Preface
1 Introduction
1.1 Ubiquitous Cameras and Computers—A Technological Revolution
1.2 Hardware Architecture
1.3 Software
1.4 Summary
2 The DirectShow Software Development Kit and the Component Object Model
2.1 Overview
2.2 The COM
2.3 COM Interfaces
2.4 COM Objects
2.5 Our First DirectShow Application—Playing an AVI File
2.6 How to Write a DirectShow Filter
2.7 Summary
3 A Video Preview Application—Source and Render Filters
3.1 The GraphEdit Utility
3.2 Building the Video Preview Filter Graph
3.3 The Property Pages of Filters
3.4 The AVI Decompressor
3.5 Summary
4 A Custom Filter for Video Processing
4.1 A Simple Change Detection Filter
4.2 Define and Instantiate Our Filter's Class
4.3 Override the Appropriate Base Class Member Functions
4.4 Access Additional Interfaces
4.5 Create the Property Page
4.6 Create Registry Information
4.7 Summary
5 A Simple Video-Based Security Application
5.1 Building the Application Shell
5.2 The Document-View Programming Architecture
5.3 The CCDAppApp Class
5.4 The CMainFrame Class
5.5 The CCDAppView Class
5.6 Summary
6 A Custom Filter for Pan-Tilt Manipulation
6.1 Device Driver Categorization
6.2 Class CSerial: The Low-Level Serial Device Driver
6.3 Class CPanTiltDevice: The High-Level Driver
6.4 The CPanTiltFilter Source Filter
6.5 Running the CPanTiltFilter Using the GraphEdit Utility
6.6 Summary
7 A Custom Filter for Object Tracking
7.1 The Theory of Mean-Shift Algorithm
7.2 A Practical Implementation of the Mean-Shift Algorithm
7.3 The Mean-Shift Tracking Algorithm
7.4 The Color Histogram CColorHistogramIndex Class
7.5 The CModelParameters Class
7.6 Implementation of the Mean-Shift Object-Tracking Filter
7.7 Summary
8 An Object-Tracking Application
8.1 Introduction
8.2 Running the PTTracking Application
8.3 Main Control Dialog
8.4 PTTracking Application Window
8.5 Summary
9 Computer-Camera Programming in Java
9.1 Understanding JMF
9.2 The Java Live Viewer Application—Video Acquisition and Display Using Java
9.3 The Java Video Filter Application—Pixel Manipulation Using Java
9.4 Video Data Transmission for the Web Using Real-Time Transfer Protocol
9.5 Summary
Appendix A Component Software Setup
A.1 Visual Studio .NET Installation
A.2 DirectX 8.1 Software Development Kit Installation
A.3 Configuring the Application Environment
A.4 Camera Drivers
Appendix B Accessing a Live Device in JMStudio
B.1 Live Devices in JMStudio
Bibliography
Index
Preface
1 Introduction
1.1 Ubiquitous Cameras and Computers—A Technological Revolution
1.2 Hardware Architecture
1.3 Software
1.4 Summary
2 The DirectShow Software Development Kit and the Component Object Model
2.1 Overview
2.2 The COM
2.3 COM Interfaces
2.4 COM Objects
2.5 Our First DirectShow Application—Playing an AVI File
2.6 How to Write a DirectShow Filter
2.7 Summary
3 A Video Preview Application—Source and Render Filters
3.1 The GraphEdit Utility
3.2 Building the Video Preview Filter Graph
3.3 The Property Pages of Filters
3.4 The AVI Decompressor
3.5 Summary
4 A Custom Filter for Video Processing
4.1 A Simple Change Detection Filter
4.2 Define and Instantiate Our Filter's Class
4.3 Override the Appropriate Base Class Member Functions
4.4 Access Additional Interfaces
4.5 Create the Property Page
4.6 Create Registry Information
4.7 Summary
5 A Simple Video-Based Security Application
5.1 Building the Application Shell
5.2 The Document-View Programming Architecture
5.3 The CCDAppApp Class
5.4 The CMainFrame Class
5.5 The CCDAppView Class
5.6 Summary
6 A Custom Filter for Pan-Tilt Manipulation
6.1 Device Driver Categorization
6.2 Class CSerial: The Low-Level Serial Device Driver
6.3 Class CPanTiltDevice: The High-Level Driver
6.4 The CPanTiltFilter Source Filter
6.5 Running the CPanTiltFilter Using the GraphEdit Utility
6.6 Summary
7 A Custom Filter for Object Tracking
7.1 The Theory of Mean-Shift Algorithm
7.2 A Practical Implementation of the Mean-Shift Algorithm
7.3 The Mean-Shift Tracking Algorithm
7.4 The Color Histogram CColorHistogramIndex Class
7.5 The CModelParameters Class
7.6 Implementation of the Mean-Shift Object-Tracking Filter
7.7 Summary
8 An Object-Tracking Application
8.1 Introduction
8.2 Running the PTTracking Application
8.3 Main Control Dialog
8.4 PTTracking Application Window
8.5 Summary
9 Computer-Camera Programming in Java
9.1 Understanding JMF
9.2 The Java Live Viewer Application—Video Acquisition and Display Using Java
9.3 The Java Video Filter Application—Pixel Manipulation Using Java
9.4 Video Data Transmission for the Web Using Real-Time Transfer Protocol
9.5 Summary
Appendix A Component Software Setup
A.1 Visual Studio .NET Installation
A.2 DirectX 8.1 Software Development Kit Installation
A.3 Configuring the Application Environment
A.4 Camera Drivers
Appendix B Accessing a Live Device in JMStudio
B.1 Live Devices in JMStudio
Bibliography
Index
Product details
Product details
- Edition: 1
- Latest edition
- Published: January 4, 2003
- Language: English
About the authors
About the authors
IP
Ioannis Pavlidis
Ioannis Pavlidis holds a Ph.D. and a M.S. degree in computer science from the University of Minnesota, a M.S. degree in robotics from the Imperial College of the University of London, and a B.S. degree in electrical engineering from the Democritus University in Greece. He is currently an associate professor in the computer science department at the University of Houston.
Affiliations and expertise
University of HoustonVM
Vassilios Morellas
Vassilios Morellas holds a Ph.D. in mechanical engineering from the University of Minnesota, an M.S. in mechanical engineering from Columbia University and a Diploma in mechanical engineering from the National Technical University of Athens, Greece. Currently, he is a senior research scientist at Honeywell laboratories developing high-end automated surveillance systems.
Affiliations and expertise
Honeywell LaboratoriesPR
Pete Roeber
Pete Roeber holds a B.S. degree in computer science from the University of Minnesota. He is currently a software engineer at Vital Images, Inc., in Plymouth Minnesota, where he works on the development of 3D medical imaging software.
Affiliations and expertise
Vital Images, Inc.