OpenCV [OpenCV] is an open
source (see http://opensource.org) computer vision library available from
http://SourceForge.net/projects/opencvlibrary. The library is written in C and
C++ and runs under Linux, Windows and Mac OS X. There is active development on
interfaces for Python, Ruby, Matlab, and other languages. OpenCV was designed
for computational efficiency and with a strong focus on real- time
applications. OpenCV is written in optimized C and can take advantage of multi core
processors. If you desire further automatic optimization on Intel architectures
[Intel], you can buy Intel’s Integrated Performance Primitives (IPP) libraries
[IPP], which consist of low-level optimized routines in many different
algorithmic areas. OpenCV automatically uses the appropriate IPP library at
runtime if that library is installed. One of OpenCV’s goals is to provide a
simple-to-use computer vision infrastructure that helps people build fairly
sophisticated vision applications quickly. The OpenCV library contains over 500
functions that span many areas in vision, including factory product inspection,
medical imaging, security, user interface, camera calibration, stereo vision,
and robotics. Because computer vision and machine learning often go hand-in-
hand, OpenCV also contains a full, general-purpose Machine Learning Library
(MLL). This sublibrary is focused on statistical pattern recognition and
clustering. The MLL is highly useful for the vision tasks that are at the core
of OpenCV’s mission, but it is gen- eral enough to be used for any machine
learning problem.
Purpose :-
Computer vision is a rapidly
growing field, partly as a result of both cheaper and more capable cameras,
partly because of affordable processing power, and partly because vision
algorithms are starting to mature. OpenCV itself has played a role in the
growth of computer vision by enabling thousands of people to do more productive
work in vision. With its focus on real-time vision, OpenCV helps students and
professionals efficiently implement projects and jump-start research by
providing them with a computer vision and machine learning infrastructure that
was previously available only in a few mature research labs. The purpose of
this text is to:
• Better document
OpenCV—detail what function calling conventions really mean and how to use them
correctly.
• Rapidly give the reader an
intuitive understanding of how the vision algorithms work.
• Give the reader some sense
of what algorithm to use and when to use it.
• Give the reader a boost in
implementing computer vision and machine learning algorithms by providing many
working coded examples to start from.
• Provide intuitions about
how to fix some of the more advanced routines when something goes wrong. Simply
put, this is the text the authors wished we had in school and the coding
reference book we wished we had at work. This book documents a tool kit,
OpenCV, that allows the reader to do interesting and fun things rapidly in
computer vision. It gives an intuitive understanding as to how the algorithms
work, which serves to guide the reader in designing and debugging vision ix
applications and also to make the formal descriptions of computer vision and
machine learning algorithms in other texts easier to comprehend and remember.
After all, it is easier to
understand complex algorithms and their associated math when you start with an
intuitive grasp of how those algorithms work.
The Origin of
OpenCV:-
OpenCV grew out of an Intel
Research initiative to advance CPU-intensive applications. Toward this end,
Intel launched many projects including real-time ray tracing and 3D display
walls. One of the authors working for Intel at that time was visiting
universities and noticed that some top university groups, such as the MIT Media
Lab, had well developed and internally open computer vision
infrastructures—code that was passed from student to student and that gave each
new student a valuable head start in developing his or her own vision
application. Instead of reinventing the basic functions from scratch, a new
student could begin by building on top of what came before. Thus, OpenCV was
conceived as a way to make computer vision infrastructure universally
available. With the aid of Intel’s Performance Library Team, Chief among the
Russian team members was Vadim Pisarevsky, who managed, coded, and optimized
much of OpenCV and who is still at the center of much of the OpenCV effort.
Along with him, Victor Eruhimov helped develop the early infrastructure, and Valery
Kuriakin managed the Russian lab and greatly supported the effort. There were several
goals for OpenCV at the outset:
• Advance vision research by
providing not only open but also optimized code forbasic vision infrastructure.
No more reinventing the wheel.
• Disseminate vision
knowledge by providing a common infrastructure that developers could build on,
so that code would be more readily readable and transferable.
• Advance vision-based
commercial applications by making portable, performance optimized code
available for free—with a license that did not require commercial applications
to be open or free themselves. Those goals constitute the “why” of OpenCV.
Enabling computer vision applications would increase the need for fast
processors. Driving upgrades to faster processors would generate more income
for Intel than selling some extra soft ware. Perhaps that is why this open and
free code arose from a hardware vendor rather than a soft ware company. In some
sense, there is more room to be innovative at soft ware within a hardware
company. In any open source effort, it’s important to reach a critical mass at
which the project becomes self-sustaining. There have now been approximately
two million downloads of OpenCV, and this number is growing by an average of
26,000 downloads a month. The user group now approaches 20,000 members. OpenCV
receives many user contributions, and central development has largely moved
outside of Intel boom and bust and also by numerous changes of management and
direction. During these fluctuations, there were times when OpenCV had no one
at Intel working on it at all. However, with the advent of multicore processors
and the many new applications of computer vision, OpenCV’s value began to rise.
Today, OpenCV is an active area of development at several institutions, so
expect to see many updates in multi camera calibration, depth perception,
methods for mixing vision with laser range finders, and better pattern
recognition as well as a lot of support for robotic vision needs. Because
OpenCV was “housed” within the Intel Performance Primitives team and several
primary developers remain on friendly terms with that team, OpenCV exploits the
hand-tuned, highly optimized code in IPP to speed itself up. The improvement in
speed from using IPP can be substantial. OpenCV is written in
performance-optimized C and C++ code. It does not depend in any way on IPP. If
IPP is present, however, OpenCV will automatically take advantage of IPP by
loading IPP’s dynamic link libraries to further enhance its speed.
OpenCV Structure
and Content:-
The CV component contains the basic image
processing and higher-level computer vision algorithms; ML is the machine
learning library, which includes many statistical classifiers and clustering
tools. HighGUI contains I/O routines and functions for storing and loading
video and images, and CXCore contains the basic data structures and content.
| http://www.nanocdac.com/ |
No comments:
Post a Comment