This book provides broad coverage of digital signal processing and image processing and related subjects, within the context of embedded systems development.
The book itself includes 15 chapters and an index, and provides links to 2 more chapters and 3 appendices online. The print chapters are divided thus:
- Introduction (1 chapter)
- Data security / Encryption (1 chapter)
- Error Detection / Error Correcting Codes (2 chapters)
- Data Compression (1 chapter)
- Digital signal processing (5 chapters, including 2 specifically on speech and audio)
- Digital Communications (1 chapter)
- Image processing (4 chapters, including 2 specifically on video)
The online material covers embedded systems programming, and uses the Blackfin architecture as its reference.
The writing is practical, answering enough questions to promote understanding and allow implementation, but avoids needless detail on theory. Algorithms are written to economize compute time. Subjects which are somewhat off of the DSP/image processing path (encryption, for instance) are well covered and current. I like the use of C for code examples, since these will be immediately useful for embedded developers, and should be readily translatable to other languages if necessary.
Digital Media Processing provides a broad overview of DSP algorithms from many different disciplines. I liked how the author provided implementations of each algorithm written in the C programming language. The examples are easy to understand, and well written. I also enjoyed how the examples and some embedded programming principles were explained using a Blackfin DSP from Analog Devices, although sometimes it did feel like an advertisement. I guess this was to be expected since the author is employed by Analog Devices. My main criticism of the text is that it only provides an overview of many topics. Having experience in the industry, the text left something to be desired. Some of the included topics are data security and encryption, error detection, data compression, and signal processing.
Overall, I thought this book provides a good overview of each topic and would highly recommend this book to entry-level engineers wanting to learn about DSP Algorithms. I would not recommend this book for engineers with extensive experience in the industry. You would be better off purchasing a book about the specific topic in which you are interested
on April 5, 2013
The job of an embedded programmer covers a lot more ground than it once did. Whether it's a general-purpose processor with math capabilities or a math processor with general-purpose abilities, one programmer may now do the job previously done by a complete team. This means that--after writing the display subroutines and the knob subroutines and the ISRs--the engineer now has DSP ahead. This is a great book to help get there.
While targeted toward the popular Blackfin series, this book is not so restricted that it can't be helpful with a ARM or a SHARC. It presents a number of perennial problems (filters, transforms, etc) in such a way that you have the tools to reduce the problem toward your particular platform. The very first example is the basic dot-product. Author Malepati codes and recodes the solution, more and more specifically to the target processor. Along the way is a discussion of memory architecture, number of multiply/accumulates, parallelism and so on. A good engineer will be able to apply this sort of thinking to any processor.
The bulk of the book deals with all sorts of applications, from data compression to image processing to communications to error correction. Some elementary calculus is required, but the reader will not face page upon page of equations. There's an elegant description of the Fourier Transform, beginning with the DCT and moving finally to the FFT. At each casting of the problem, we find ourselves getting closer to the machine that runs the math. Only at the very end do we see source code. At that point, the engineer is ready for whatever architecture is at hand.
There aren't that many books that successfully bridge the gap between theory and practice. There are cookbooks that give inefficient source code and there are books that bury the user in math. Malepati finds a nice place that helps the user understand the problem and cast it towards the particular iron that will run the solution.
on September 25, 2012
Let me just say I struggle with the pseudo-code. I wish there was the C/C++ code before all the bit manipulaton. However, the explanations and example for CRC and BCH was impressive. I actually understand this a bit clearer now. Thanks Mr Malepati
Digital Media Processing, DSP Algorithms Using C by Hazarathaiah Malepati is a very well presented technical compendium of materials relevant to the efficient implementation of computer techniques for audio, video and other media. The author is an employee of Analog Devices and this text features examples using Analog Devices' BlackFin processor. This is a particularly fruitful choice in that media processing often relies on embedded processors such as the BlackFin. The choice of the C programming language and in particular the programming style make for a very readable and understandable code.
A wide range of relevant algorithms are covered with sufficient conceptual background to be quite useful to the professional software engineer. Among the topics covered in some depth are data security, error correction, compression, signal and image processing, speech and audio processing and video processing. There is little mention of game related issues such as speech recognition, depth sensing, game physics and so forth. Perhaps a subsequent text by this author will cover some of these topics.
The presentation is thoughtful and complete. All of the material is presented in a way that a professional or diligent student will be able to follow and successfully implement the algorithms. The analysis of computational cost is particularly relevant for the professional software engineer. I recommend this text highly.
First of all many of you have heard the term "Gaussian", which is often used to describe something so unbelievably complicated, that we use the term referring to the mathematics of Carl Gauss, a mid-19th century mathematician. His understanding of statistics, waveforms and complex mathematics, probably rivaled Nicola Tesla, and maybe even exceeded him. I bring that up here because despite the 150 year span of their development, many of his mathematical treatment of waveforms, is actually used in Digital Signal Processing. Difficult to understand integrations, linear algebra with complex matrices, and calculations for various filtering, are true "Gaussian" concepts put in this book. If you don't like math to some degree, stay clear of this book, it's for tech savvy people only, to implement the content.
Based on the title, I was expecting a lot more C language examples, of how to implement signal processing. In the beginning sections, data security, then data error correction, and finally lossless data compression, there was a lot of C code examples, to help you implement your own application. Once we get into signals, transforms, filters, digital communications, speech, then audio, and digital processing, most of the code disappears. In it's place, some very complex math, topical layouts, schematics, and waveform diagrams. I think the book lets us down here, at the very least. they should have included a companion CD containing more sample code. It's difficult to implement complex mathematics in any programming language, except perhaps MatLab or some other math-specific modeling product. I was looking to see some of these complex matrices, integral expressions, statistical formula's, broken down, and implemented in C. I was disappointed to say the least.
If you have a career with the phone company as an engineer, a CATV engineer, a sound or video engineer, or even a programmer of cell phones, and other infotainment devices, this book will at least give you a start. It will cover the topics you need to chew on, if you need to implement some complex form of digital communication. You are still going to need to get, the correct, specific treatments in your field, so this is not the best self-contained book. It is great to have on the reference shelf if you work in one of those fields, otherwise it's just taking up valuable reference space. If you are a math student or engineering major, cross reference this with your physics, differential equations, advanced calculus, or linear algebra classes. If you understand it all, and even crave more, it may be time to apply to Cal Tech or MIT!
The book is setup in 4 main sections:
1) Data processing
2) Digital Signal and Image Processing
3) Digital Speech and Augio Processing
4) Digital Video Processing.
Section 2 and 3 are the most useful and detailed sections. The Data processing section gives you a quick overview of Cryptography, Data error correction and lossless data compression. The digital Video processing section explains video coding (MPEG-2 and H.264) while the Video post-processing section is mostly overview.
Each chapter in the book gives you a solid overview of the topic being covered, useful graphics to illustrate the algorithms and the problem being solved and code snippets. I have not tried any of the code snippets yet so I can not say how good or bad the code straight from the book. But, the code seems quite reasonable based on quick review of the code snippets. For the signal, image and speech processing, the author does a very good job of providing mathetical basis for the algorithms. The code is not object oriented and will not some adjustment for most modern systems (aka object-oriented).
If you are looking a solid introduction to some of the currently common digital media processing challenges, this book is a good book to start your research with.
on March 27, 2011
"Digital Media Processing" is excellent, with an effective blend of theory, impementation and some code thrown in as well. Its breadth of topics is also wide, yet deep. Well worth my time reading.
The author almost does a disservice by attempting a comprehensive guide - the book covers a lot of topics, but falls short of the depth of understanding one really needs to produce applications using these algorithms. For instance, the very first query I had was MP3 file encoding and processing. I turned to that section and there is a really good explanation of audio sampling and encoding methods, enabling you to understand the sort of logic that goes into MP3s, yet the closest the book comes to helping you deal with MP3 files is a small diagram of MPEG frame structure. The book can prepare you for writing your own audio codec, but not for dealing with existing ones. For this reason I find the book more appropriate for academic pursuit rather than practical application. Also, another example - despite a very nice section on image processing techniques, I found only a page or two on the Fourier transform - an essential tool, one I recall spending several classes on in college, yet barely discussed in this book.
The C code itself strikes me as rather outdated and not accessible to beginner coders. Rather than easily readable, they went with better performing; bitshifts are used often rather than more obvious basic power/multiply functions; variables do not carry significant names and are reused often to hold very different information than they held three lines ago. Granted, this style of code is fantastic if you're dealing with limited memory or CPU cycle resources, but realistically these small savings won't make much of a difference to most coders nowadays (excepting some real-time applications).
Overall, the book is a valuable resource, but it cannot serve as your only resource or even your main resource for digital media processing tasks.
The field of digital media processing is very large. The field encompasses various aspects of data processing, including data compression, encryption, and data error correction, and digital signal, image, speech, audio and video processing. No author could hope to cover all of these aspects of digital media processing in one book, so an author must choose to cover only one aspect to completion or cover all of the above aspects of digital media processing to an advanced intermediate stage. The author of Digital Media Processing has chosen the latter approach. However, in covering these topics, the author makes some assumptions about his audience. He assumes you are a proficient C language programmer; you should be able to do bit manipulations in C with ease to understand this book. Also, he assumes a certain level of mathematical maturity. A reader of this book should be at ease with trigonometry, calculus, the summation notation and some aspects of matrix manipulation. While the author does no "hand holding" in this book, I feel he does a good job of explaining these digital media processing concepts. I was especially interested in the digital signal processing chapters and I felt I was able to understand what he was talking about. While this is not a book for beginners, I highly recommend it for programmers with some mathematical maturity who have been tasked with implementing digital media processing algorithms in there code.