Understanding Compression

Data Compression for Modern Developers

Author: Colt McAnlis,Aleks Haecky

Publisher: "O'Reilly Media, Inc."

ISBN: 1491961481

Category: Computers

Page: 242

View: 5314

If you want to attract and retain users in the booming mobile services market, you need a quick-loading app that won’t churn through their data plans. The key is to compress multimedia and other data into smaller files, but finding the right method is tricky. This witty book helps you understand how data compression algorithms work—in theory and practice—so you can choose the best solution among all the available compression tools. With tables, diagrams, games, and as little math as possible, authors Colt McAnlis and Aleks Haecky neatly explain the fundamentals. Learn how compressed files are better, cheaper, and faster to distribute and consume, and how they’ll give you a competitive edge. Learn why compression has become crucial as data production continues to skyrocket Know your data, circumstances, and algorithm options when choosing compression tools Explore variable-length codes, statistical compression, arithmetic numerical coding, dictionary encodings, and context modeling Examine tradeoffs between file size and quality when choosing image compressors Learn ways to compress client- and server-generated data objects Meet the inventors and visionaries who created data compression algorithms

The Data Compression Book

Author: Mark Nelson,Jean-Loup Gailly

Publisher: Wiley

ISBN: 9781558514348

Category: Computers

Page: 576

View: 3945

The Data Compression Book Second Edition The Data Compression Book is the most authoritative guide to data compression techniques available. This second edition has been updated to include fractal compression techniques and all the latest developments in the compression field. All the code in the previous edition has been updated to run with today's compilers and has been tested on multiple platforms to ensure flawless performance. You'll learn to write C programs for nearly any environment as you explore different compression methods. Nelson and Gailly discuss the theory behind each method and apply the techniques involved to shrink data down to a minimum. Each technique is illustrated with a complete, functional C program that not only demonstrates how data compression works, but it also can be incorporated into your own data compression programs. You'll also get detailed benchmarks demonstrating the speed and compression ability of each technique. The code in this book has been tested on a variety of platforms and compilers including Microsoft Visual C++ 1.5 with MS-DOS 5.0 and 6.22; Borland C++ 4.0 and 4.5 with MS-DOS 5.0 and 6.22; Symantec C++ 6.0 and 7.0 with MS-DOS 5.0 & 6.22; Interactive Unix System 3.2 with the portable C compiler; Solaris 2.4 with the SunSoft compiler; and Linux 1.1 with the Gnu C Compiler. Topics Include: The Shannon-Fano and Huffman coding techniques Adaptive Huffman coding techniques Lossy compression The JPEG compression algorithm Fractal compression techniques Arithmetic coding Dictionary compression methods

Introduction to Data Compression

Author: Khalid Sayood

Publisher: Morgan Kaufmann

ISBN: 0128097051

Category: Computers

Page: 790

View: 7197

Introduction to Data Compression, Fifth Edition, builds on the success of what is widely considered the best introduction and reference text on the art and science of data compression. Data compression techniques and technology are ever-evolving with new applications in image, speech, text, audio and video. This new edition includes all the latest developments in the field. Khalid Sayood provides an extensive introduction to the theory underlying today’s compression techniques, with detailed instruction for their applications using several examples to explain the concepts. Encompassing the entire field of data compression, the book includes lossless and lossy compression, Huffman coding, arithmetic coding, dictionary techniques, context based compression, and scalar and vector quantization. The book provides a comprehensive working knowledge of data compression, giving the reader the tools to develop a complete and concise compression package. Explains established and emerging standards in- depth, including JPEG 2000, JPEG-LS, MPEG-2, H.264, JBIG 2, ADPCM, LPC, CELP, MELP, iLBC and the new HEVC standard Includes more coverage of lattices in vector quantization Contains improved and expanded end-of-chapter problems Source code is provided via a companion website that gives readers the opportunity to build their own algorithms and choose and implement techniques in their own applications

The H.264 Advanced Video Compression Standard

Author: Iain E. Richardson

Publisher: John Wiley & Sons

ISBN: 1119965306

Category: Science

Page: 346

View: 8127

H.264 Advanced Video Coding or MPEG-4 Part 10 is fundamental to a growing range of markets such as high definition broadcasting, internet video sharing, mobile video and digital surveillance. This book reflects the growing importance and implementation of H.264 video technology. Offering a detailed overview of the system, it explains the syntax, tools and features of H.264 and equips readers with practical advice on how to get the most out of the standard. Packed with clear examples and illustrations to explain H.264 technology in an accessible and practical way. Covers basic video coding concepts, video formats and visual quality. Explains how to measure and optimise the performance of H.264 and how to balance bitrate, computation and video quality. Analyses recent work on scalable and multi-view versions of H.264, case studies of H.264 codecs and new technological developments such as the popular High Profile extensions. An invaluable companion for developers, broadcasters, system integrators, academics and students who want to master this burgeoning state-of-the-art technology. "[This book] unravels the mysteries behind the latest H.264 standard and delves deeper into each of the operations in the codec. The reader can implement (simulate, design, evaluate, optimize) the codec with all profiles and levels. The book ends with extensions and directions (such as SVC and MVC) for further research." Professor K. R. Rao, The University of Texas at Arlington, co-inventor of the Discrete Cosine Transform

Introduction to Information Theory and Data Compression, Second Edition

Author: D.C. Hankerson,Greg A. Harris,Peter D. Johnson, Jr.

Publisher: CRC Press

ISBN: 9781584883135

Category: Mathematics

Page: 384

View: 5001

An effective blend of carefully explained theory and practical applications, this text imparts the fundamentals of both information theory and data compression. Although the two topics are related, this unique text allows either topic to be presented independently, and it was specifically designed so that the data compression section requires no prior knowledge of information theory. The treatment of information theory, while theoretical and abstract, is quite elementary, making this text less daunting than many others. After presenting the fundamental definitions and results of the theory, the authors then apply the theory to memoryless, discrete channels with zeroth-order, one-state sources. The chapters on data compression acquaint students with a myriad of lossless compression methods and then introduce two lossy compression methods. Students emerge from this study competent in a wide range of techniques. The authors' presentation is highly practical but includes some important proofs, either in the text or in the exercises, so instructors can, if they choose, place more emphasis on the mathematics. Introduction to Information Theory and Data Compression, Second Edition is ideally suited for an upper-level or graduate course for students in mathematics, engineering, and computer science. Features: Expanded discussion of the historical and theoretical basis of information theory that builds a firm, intuitive grasp of the subject Reorganization of theoretical results along with new exercises, ranging from the routine to the more difficult, that reinforce students' ability to apply the definitions and results in specific situations. Simplified treatment of the algorithm(s) of Gallager and Knuth Discussion of the information rate of a code and the trade-off between error correction and information rate Treatment of probabilistic finite state source automata, including basic results, examples, references, and exercises Octave and MATLAB image compression codes included in an appendix for use with the exercises and projects involving transform methods Supplementary materials, including software, available for download from the authors' Web site at www.dms.auburn.edu/compression

H.264 and MPEG-4 Video Compression

Video Coding for Next-generation Multimedia

Author: Iain E. Richardson

Publisher: John Wiley & Sons

ISBN: 0470869607

Category: Science

Page: 306

View: 3538

Following on from the successful MPEG-2 standard, MPEG-4 Visual is enabling a new wave of multimedia applications from Internet video streaming to mobile video conferencing. The new H.264 ‘Advanced Video Coding’ standard promises impressive compression performance and is gaining support from developers and manufacturers. The first book to cover H.264 in technical detail, this unique resource takes an application-based approach to the two standards and the coding concepts that underpin them. Presents a practical, step-by-step, guide to the MPEG-4 Visual and H.264 standards for video compression. Introduces the basic concepts of digital video and covers essential background material required for an understanding of both standards. Provides side-by-side performance comparisons of MPEG-4 Visual and H.264 and advice on how to approach and interpret them to ensure conformance. Examines the way that the standards have been shaped and developed, discussing the composition and procedures of the VCEG and MPEG standardisation groups. Focussing on compression tools and profiles for practical multimedia applications, this book ‘decodes’ the standards, enabling developers, researchers, engineers and students to rapidly get to grips with both H.264 and MPEG-4 Visual. Dr Iain Richardson leads the Image Communication Technology research group at the Robert Gordon University in Scotland and is the author of over 40 research papers and two previous books on video compression technology.

Professional JavaScript for Web Developers

Author: Nicholas C. Zakas

Publisher: John Wiley & Sons

ISBN: 1118233093

Category: Computers

Page: 960

View: 1683

This book provides a developer-level introduction along with more advanced and useful features of JavaScript. Coverage includes: JavaScript use with HTML to create dynamic webpages, language concepts including syntax and flow control statements variable handling given their loosely typed nature built-in reference types such as object and array object-oriented programing powerful aspects of function expressions Browser Object Model allowing interaction with the browser itself detecting the client and its capabilities Document Object Model (DOM) objects available in DOM Level 1 how DOM Levels 2 and 3 augmented the DOM events, legacy support, and how the DOM redefined how events should work enhancing form interactions and working around browser limitations using the canvas tag to create on-the-fly graphics JavaScript API changes in HTML5 how browsers handle JavaScript errors and error handling features of JavaScript used to read and manipulate XML data the JSON data format as an alternative to XML Ajax techniques including the use of XMLHttpRequest object and CORS complex patterns including function currying, partial function application, and dynamic functions offline detection and storing data on the client machine techniques for JavaScript in an enterprise environment for better maintainability This book is aimed at three groups of readers: Experienced object-oriented programming developers looking to learn JavaScript as it relates to traditional OO languages such as Java and C++; Web application developers attempting to enhance site usability; novice JavaScript developers. Nicholas C. Zakas worked with the Web for over a decade. He has worked on corporate intranet applications used by some of the largest companies in the world and large-scale consumer websites such as MyYahoo! and the Yahoo! homepage. He regularly gives talks at companies and conferences regarding front-end best practices and new technology.

JPEG2000 Standard for Image Compression

Concepts, Algorithms and VLSI Architectures

Author: Tinku Acharya,Ping-Sing Tsai

Publisher: John Wiley & Sons

ISBN: 0471653756

Category: Computers

Page: 296

View: 8073

JPEG2000 Standard for Image Compression presents readers with the basic background to this multimedia compression technique and prepares the reader for a detailed understanding of the JPEG2000 standard, using both the underlying theory and the principles behind the algorithms of the JPEG2000 standard for scalable image compression. It introduces the VLSI architectures and algorithms for implementation of the JPEG2000 standard in hardware (not available in the current literature), an important technology for a number of image processing applications and devices such as digital camera, color fax, printer, and scanners.

Data Compression

The Complete Reference

Author: David Salomon

Publisher: Springer

ISBN: 3642860923

Category: Computers

Page: 823

View: 9056

viii • The second new chapter, Chapter 6, discusses video compression. The chapter opens with a general description of CRT operation and basic analog and digital video concepts. It continues with a general discussion of video compression, and it concludes with a description of MPEG-1 and H.261. • Audio compression is the topic of the third new chapter, Chapter 7. The first topic in this chapter is the properties of the human audible system and how they can be exploited to achieve lossy audio compression. A discussion of a few simple audio compression methods follows, and the chapter concludes with a description of the three audio layers of MPEG-1, including the very popular mp3 format. Other new material consists of the following: • Conditional image RLE (Section 1.4.2). • Scalar quantization (Section 1.6). • The QM coder used in JPEG, JPEG 2000, and JBIG is now included in Sec tion 2.16. • Context-tree weighting is discussed in Section 2.19. Its extension to lossless image compression is the topic of Section 4.24. • Section 3.4 discusses a sliding buffer method called repetition times. • The troublesome issue of patents is now also included (Section 3.25). • The relatively unknown Gray codes are discussed in Section 4.2.1, in connection with image compression. • Section 4.3 discusses intuitive methods for image compression, such as subs- pling and vector quantization.

Practical Algorithms for Programmers

Author: Andrew Binstock

Publisher: Addison-Wesley Professional

ISBN: 9780201632088

Category: Computers

Page: 577

View: 8840

Provides a comprehensive, non-academic treatment of the algorithms commonly used in advanced application development, shows how professional programmers actually use algorithms in their daily work, and requires no previous familiarity with the theory of algorithms. Original. (Advanced).

Understanding Machine Learning

From Theory to Algorithms

Author: Shai Shalev-Shwartz,Shai Ben-David

Publisher: Cambridge University Press

ISBN: 1107057132

Category: Computers

Page: 409

View: 8133

Introduces machine learning and its algorithmic paradigms, explaining the principles behind automated learning approaches and the considerations underlying their usage.

Android High Performance Programming

Author: Enrique Lopez Manas,Diego Grancini

Publisher: Packt Publishing Ltd

ISBN: 1785283383

Category: Computers

Page: 412

View: 9363

Build fast and efficient Android apps that run as reliably as clockwork in a multi-device world About This Book Wide coverage of various topics that help in developing optimal applications Explore the concepts of Advanced Native Coding in depth A must-have for professional-standard Android developers for whom performance failures and the sloppy use of resources are simply unacceptable Who This Book Is For This book is aimed at developers with an advanced knowledge of Android and who want to test their skills and learn new techniques to increase the performance of their applications. We assume they are comfortable working with the entire Android SDK, and have been doing it for a few years. They need to be familiar with frameworks such as NDK to use native code, which is crucial for app performance What You Will Learn Create Android applications that squeeze the most from the limited resource capacity of devices Swap code that isn't performing Efficient memory management by identifying problems such as leaks Reap the benefits of multithreaded and asynchronous programming Maximize the security and encryption mechanisms natively provided by Android Perform efficient network operations and techniques to retrieve data from servers Master the NDK to write native code that can perform faster operations In Detail Performant applications are one of the key drivers of success in the mobile world. Users may abandon an app if it runs slowly. Learning how to build applications that balance speed and performance with functionality and UX can be a challenge; however, it's now more important than ever to get that balance right. Android High Performance will start you thinking about how to wring the most from any hardware your app is installed on, so you can increase your reach and engagement. The book begins by providing an introduction to state–of-the-art Android techniques and the importance of performance in an Android application. Then, we will explain the Android SDK tools regularly used to debug and profile Android applications. We will also learn about some advanced topics such as building layouts, multithreading, networking, and security. Battery life is one of the biggest bottlenecks in applications; and this book will show typical examples of code that exhausts battery life, how to prevent this, and how to measure battery consumption from an application in every kind of situation to ensure your apps don't drain more than they should. This book explains techniques for building optimized and efficient systems that do not drain the battery, cause memory leaks, or slow down with time. Style and approach The book follows a tutorial-based approach to take the reader from the basic fundamentals of debugging to advanced performance-improvement concepts.

C# 6 and .NET Core 1.0: Modern Cross-Platform Development

Author: Mark J. Price

Publisher: Packt Publishing Ltd

ISBN: 1783558547

Category: Computers

Page: 550

View: 6002

Create powerful cross-platform applications using C# 6, .NET Core 1.0, ASP.NET Core 1.0, and Visual Studio 2015 About This Book Build modern, cross-platform applications with .NET Core 1.0 Get up-to-speed with C#, and up-to-date with all the latest features of C# 6 Start creating professional web applications with ASP.NET Core 1.0 Who This Book Is For Are you struggling to get started with C#? Or maybe you're interested in the potential of the new cross-platform features that .NET Core can offer? If so, C# 6 and .NET Core 1.0 is the book for you. While you don't need to know any of the latest features of C# or .NET to get started, it would be beneficial if you have some programming experience. What You Will Learn Build cross-platform applications using C# 6 and .NET Core 1.0 Explore ASP.NET Core 1.0 and learn how to create professional web applications Improve your application's performance using multitasking Use Entity Framework Core 1.0 and learn how to build Code-First databases Master object-oriented programming with C# to increase code reuse and efficiency Familiarize yourself with cross-device app development using the Universal Windows Platform and XAML Query and manipulate data using LINQ Protect your data by using encryption and hashing In Detail With the release of .NET Core 1.0, you can now create applications for Mac OS X and Linux, as well as Windows, using the development tools you know and love. C# 6 and .NET Core 1.0 has been divided into three high-impact sections to help start putting these new features to work. First, we'll run you through the basics of C#, as well as object-orient programming, before taking a quick tour through the latest features of C# 6 such as string interpolation for easier variable value output, exception filtering, and how to perform static class imports. We'll also cover both the full-feature, mature .NET Framework and the new, cross-platform .NET Core. After quickly taking you through C# and how .NET works, we'll dive into the internals of the .NET class libraries, covering topics such as performance, monitoring, debugging, internationalization, serialization, and encryption. We'll look at Entity Framework Core 1.0 and how to develop Code-First entity data models, as well as how to use LINQ to query and manipulate that data. The final section will demonstrate the major types of applications that you can build and deploy cross-device and cross-platform. In this section, we'll cover Universal Windows Platform (UWP) apps, web applications, and web services. Lastly, we'll help you build a complete application that can be hosted on all of today's most popular platforms, including Linux and Docker. By the end of the book, you'll be armed with all the knowledge you need to build modern, cross-platform applications using C# and .NET Core. Style and approach This book takes a step-by-step approach and is filled with exciting projects and fascinating theory. It uses three high-impact sections to equip you with all the tools you'll need to build modern, cross-platform applications using C# and .NET Core.

Modern Web Development

Understanding domains, technologies, and user experience

Author: Dino Esposito

Publisher: Microsoft Press

ISBN: 1509300546

Category: Computers

Page: 432

View: 8858

Master powerful new approaches to web architecture, design, and user experience This book presents a pragmatic, problem-driven, user-focused approach to planning, designing, and building dynamic web solutions. You’ll learn how to gain maximum value from Domain-Driven Design (DDD), define optimal supporting architecture, and succeed with modern UX-first design approaches. The author guides you through choosing and implementing specific technologies and addresses key user-experience topics, including mobile-friendly and responsive design. You’ll learn how to gain more value from existing Microsoft technologies such as ASP.NET MVC and SignalR by using them alongside other technologies such as Bootstrap, AJAX, JSON, and JQuery. By using these techniques and understanding the new ASP.NET Core 1.0, you can quickly build advanced web solutions that solve today’s problems and deliver an outstanding user experience. Microsoft MVP Dino Esposito shows you how to: Plan websites and web apps to mirror real-world social and business processes Use DDD to dissect and master the complexity of business domains Use UX-Driven Design to reduce costs and give customers what they want Realistically compare server-side and client-side web paradigms Get started with the new ASP.NET Core 1.0 Simplify modern visual webpage construction with Bootstrap Master practical, efficient techniques for running ASP.NET MVC projects Consider new options for implementing persistence and working with data models Understand Responsive Web Design’s pros, cons, and tradeoffs Build truly mobile-friendly, mobile-optimized websites About This Book For experienced developers and solution architects who want to plan and develop web solutions more effectively Assumes basic familiarity with the Microsoft web development stack

High Performance Browser Networking

What every web developer should know about networking and web performance

Author: Ilya Grigorik

Publisher: "O'Reilly Media, Inc."

ISBN: 1449344720

Category: Computers

Page: 400

View: 3194

How prepared are you to build fast and efficient web applications? This eloquent book provides what every web developer should know about the network, from fundamental limitations that affect performance to major innovations for building even more powerful browser applications—including HTTP 2.0 and XHR improvements, Server-Sent Events (SSE), WebSocket, and WebRTC. Author Ilya Grigorik, a web performance engineer at Google, demonstrates performance optimization best practices for TCP, UDP, and TLS protocols, and explains unique wireless and mobile network optimization requirements. You’ll then dive into performance characteristics of technologies such as HTTP 2.0, client-side network scripting with XHR, real-time streaming with SSE and WebSocket, and P2P communication with WebRTC. Deliver superlative TCP, UDP, and TLS performance Speed up network performance over 3G/4G mobile networks Develop fast and energy-efficient mobile applications Address bottlenecks in HTTP 1.x and other browser protocols Plan for and deliver the best HTTP 2.0 performance Enable efficient real-time streaming in the browser Create efficient peer-to-peer videoconferencing and low-latency applications with real-time WebRTC transports

The Tomes of Delphi

Algorithms and Data Structures

Author: Julian Bucknall

Publisher: Wordware

ISBN: 9781556227363

Category: Computers

Page: 525

View: 3379

Featuring a wealth of code examples appropriate for practicing developers, this advanced-level guide provides comprehensive coverage of such topics as arrays, binary trees, data compression. The CD includes the author's highly successful freeware library, EZDSL, along with the code from the book.

Compression Algorithms for Real Programmers

Author: Peter Wayner

Publisher: Morgan Kaufmann

ISBN: 9780127887746

Category: Computers

Page: 240

View: 3649

In life, time is money, and on the Internet, the size of data is money. Small programs and small files take less disk space and cost less to send over the Internet. Compression Algorithms for Real Programmers describes the basic algorithms and approaches for compressing information so you can create the smallest files possible. These new algorithms are making it possible for people to take impossibly large audio and video files and compress them enough that they can flow over the Internet. * Examines the classic algorithms like Huffman coding, arithmetic compression, and dictionary-based schemes in depth * Describes the basic approaches used to squeeze audio and video signals by factors of as much as 100:1 * Discusses the philosophy of compression to illustrate the underlying trade-offs in the algorithms * Explores the use of wavelets and other modeling techniques that use repetitive functions to squeeze audio and video * Shows how programming solutions like Adobe PostScript can save space and make networks more efficient * Describes new approaches using fractals and grammars just being explored by the compression community * Shows how to extend the algorithms and use them for copyright protection

Mastering Algorithms with C

Useful Techniques from Sorting to Encryption

Author: Kyle Loudon

Publisher: "O'Reilly Media, Inc."

ISBN: 9780596551957

Category: Computers

Page: 562

View: 6063

There are many books on data structures and algorithms, including some with useful libraries of C functions. Mastering Algorithms with C offers you a unique combination of theoretical background and working code. With robust solutions for everyday programming tasks, this book avoids the abstract style of most classic data structures and algorithms texts, but still provides all of the information you need to understand the purpose and use of common programming techniques. Implementations, as well as interesting, real-world examples of each data structure and algorithm, are included. Using both a programming style and a writing style that are exceptionally clean, Kyle Loudon shows you how to use such essential data structures as lists, stacks, queues, sets, trees, heaps, priority queues, and graphs. He explains how to use algorithms for sorting, searching, numerical analysis, data compression, data encryption, common graph problems, and computational geometry. And he describes the relative efficiency of all implementations. The compression and encryption chapters not only give you working code for reasonably efficient solutions, they offer explanations of concepts in an approachable manner for people who never have had the time or expertise to study them in depth. Anyone with a basic understanding of the C language can use this book. In order to provide maintainable and extendible code, an extra level of abstraction (such as pointers to functions) is used in examples where appropriate. Understanding that these techniques may be unfamiliar to some programmers, Loudon explains them clearly in the introductory chapters. Contents include: Pointers Recursion Analysis of algorithms Data structures (lists, stacks, queues, sets, hash tables, trees, heaps, priority queues, graphs) Sorting and searching Numerical methods Data compression Data encryption Graph algorithms Geometric algorithms

Practical Digital Video With Programming Examples in C

Author: Phillip E. Mattison

Publisher: John Wiley & Sons Incorporated

ISBN: N.A

Category: Computers

Page: 522

View: 9303

Practical Digital Video with Programming Examples in C Written by an innovator in motion video, this practical, user-friendly guide synthesizes all the vital elements of PC motion video technology in an accessible, nonmathematical way. It helps software developers gain a comprehensive working knowledge of video and multimedia programming. Requiring an essential understanding of electronics and PCs, the book includes twenty software examples with source code to demonstrate state-of-the-art technology and the use of commercial products. This unique resource: * Details the differences between graphical and natural images, and the reasons for compressing image data * Describes and compares various kinds of computer displays, including their suitability to natural video * Explains various methods of color representation and their particular uses in multimedia * Highlights major data compression techniques and their application in multimedia * Discusses the full range of available video storage techniques * Presents several PC video hardware systems and illustrates their effective use * Covers two mainstream PC video environments--Microsoft Video for Windows and Apple Quicktime * Spotlights the various ways of processing video information * Includes detailed references for major digital video standards and storage formats

Computer Vision

Algorithms and Applications

Author: Richard Szeliski

Publisher: Springer Science & Business Media

ISBN: 9781848829350

Category: Computers

Page: 812

View: 5438

Computer Vision: Algorithms and Applications explores the variety of techniques commonly used to analyze and interpret images. It also describes challenging real-world applications where vision is being successfully used, both for specialized applications such as medical imaging, and for fun, consumer-level tasks such as image editing and stitching, which students can apply to their own personal photos and videos. More than just a source of “recipes,” this exceptionally authoritative and comprehensive textbook/reference also takes a scientific approach to basic vision problems, formulating physical models of the imaging process before inverting them to produce descriptions of a scene. These problems are also analyzed using statistical models and solved using rigorous engineering techniques. Topics and features: structured to support active curricula and project-oriented courses, with tips in the Introduction for using the book in a variety of customized courses; presents exercises at the end of each chapter with a heavy emphasis on testing algorithms and containing numerous suggestions for small mid-term projects; provides additional material and more detailed mathematical topics in the Appendices, which cover linear algebra, numerical techniques, and Bayesian estimation theory; suggests additional reading at the end of each chapter, including the latest research in each sub-field, in addition to a full Bibliography at the end of the book; supplies supplementary course material for students at the associated website, http://szeliski.org/Book/. Suitable for an upper-level undergraduate or graduate-level course in computer science or engineering, this textbook focuses on basic techniques that work under real-world conditions and encourages students to push their creative boundaries. Its design and exposition also make it eminently suitable as a unique reference to the fundamental techniques and current research literature in computer vision.