Embedded Image Processing on the TMS320C6000 DSP : Examples in Code Composer Studio and MATLAB (Hardcover)

Shehrzad Qureshi




Embedded Image Processing on the TMS320C6000™ DSP: Examples in Code Composer Studio™ and MATLAB focuses on efficient implementations of advanced image processing algorithms for resource-constrained embedded DSP systems. Featuring the popular Texas Instruments TMS320C6000TM line of Digital Signal Processors, it utilizes a proven methodology of beginning with a high-level algorithmic point-of-view, proceeding to develop prototype code in MATLAB and Visual Studio, and concluding with an efficient implementation suitable for deployment on an embedded DSP system.

Aside from image processing, the author also explains the uses and rationale behind a plethora of technologies, most notably several industry-standard and essential TI developer technologies, including the Code Composer Studio™ IDE. Highlights include numerous debugged MATLAB and C/C++ Visual Studio prototype applications and efficient C implementations of real-world algorithms tested on both the C6416 DSK and C6701 EVM development platforms.

Packaged with the book is a CD-ROM which includes the source code, tested and debugged using the latest versions of developer tools, as well as sample image data. The CD-ROM contains a number of projects, spanning a diverse range of image processing applications such as, spatial processing techniques, image filtering, edge detection and segmentation schemes, and wavelet-based algorithms, among others.

Embedded Image Processing on the TMS320C6000™ DSP: Examples in Code Composer Studio™ and MATLAB is an essential book for professional signal & image processing engineers working with TI DSPs where real-time constraints are present and performance is at a premium. Imaging software developers and DSP users will also find this book applicable, as it covers a variety of image and signal processing building blocks that appear in a diverse set of real-world applications, including medical imaging, satellite imaging, digital photography, and pattern recognition, to name a few. It may also serve as a reference work for advanced image processing, computer vision, and DSP students working in labs that use TI development kits or MATLAB.



Table of Contents:

Introduction.- 1.1 Structure and Organization of the Book.- 1.2 Prerequisites.- 1.3 Conventions and Nomenclature.- 1.4 CD-ROM.- 1.5 The Representation of Digital Images.- 1.6 DSP Chips and Image Processing.- 1.7 Useful Internet Resources.-
2. Tools.- 2.1 The TMS320C6000 Line of DSPs.- 2.1.1 VLIW and VelociTI.- 2.1.2 Fixed-Point versus Floating-Point.- 2.1.3 TI DSP Development Tools (C6701 EVM and C6416 DSK).- 2.2 TI Software Development Tools.- 2.2.1 EVM Support Libraries.- 2.2.2 Chip Support Library.- 2.2.3 DSP/BIOS.- 2.2.4 FastRTS.- 2.2.5 DSPLIB and IMGLIB.- 2.3 MATLAB.- 2.4. Visual Studio .NET 2003.- 2.4.1 Microsoft Foundation Classes (MFC).- 2.4.2 GDI+.- 2.4.3 Intel Integrated Performance Primitives (IPP).-
3. Spatial Processing Techniques.- 3.1 Spatial Transform Functions and the Image Histogram.- 3.2 Contrast Stretching.- 3.2.1 MATLAB Implementation.- 3.2.2 TI C67xx Implementation and MATLAB Support Files.- 3.3 Window/Level.- 3.3.1 MATLAB Implementation.- 3.3.2 A Window/Level Demo Application Built Using Visual Studio .NET 2003.- 3.3.3 Window/Level on the TI C6x EVM 83.- 3.4 Histogram Equalization.- 3.4.1 Histogram Specification.- 3.4.2 MATLAB Implementation.- 3.4.3 Histogram Specification on the TI C6x EVM.-
4. Image Filtering.- 4.1 Image Enhancement via Spatial Filtering.- 4.1.1 Image Noise.- 4.1.2 2D Convolution, Low-Pass and High-Pass Filters.- 4.1.3 Fast Convolution in the Frequency Domain.- 4.1.4 Implementation Issues.- 4.2 Linear Filtering of Images in MATLAB.- 4.3 Linear Filtering of Images on the TI C62xx/C67xx.- 4.3.1 2D Filtering Using the IMGLIB Library.- 4.3.2 Low-Pass Filtering Using DSPLIB.- 4.3.3 Low-Pass Filtering with DSPLIB and Paging.- 4.3.4 Low-Pass Filtering with DSPLIB and Paging via DMA.- 4.3.5 Full 2D Filtering with DSPLIB and DMA.- 4.4 Linear Filtering of Images on the TI C64x.- 4.4.1 Low-Pass Filtering with a 3x3 Kernel Using IMGLIB.- 4.4.2 A Memory-Optimized 2D Low-Pass Filter.- 4.5 Non-linear Filtering of Images.- 4.5.1 Image Fidelity Criteria and Various Metrics.- 4.5.2 The Median Filter.- 4.5.3 Non-Linear Filtering of Images in MATLAB.- 4.5.4 Visual Studio .NET 2003 Median Filtering Application.- Generating Noise with the Standard C Library.- Profiling Code in Visual Studio .NET 2003.- Various Median Filter C/C++ Implementations.- 4.5.5 Median Filtering on the TI C6416 DSK.- 4.6 Adaptive Filtering.- 4.6.1 The Minimal Mean Square Error Filter.- 4.6.2 Other Adaptive Filters.- 4.6.3 Adaptive Image Filtering in MATLAB.- 4.6.4 An MMSE Adaptive Filter Using the Intel IPP Library.- 4.6.5 MMSE Filtering on the C6416.-
5. Edge Detection and Segmentation.- 5.1 Edge Detection.- 5.1.1 Edge Detection in MATLAB.- 5.1.2 An Interactive Edge Detection Application with MATLAB, Link for Code Composer Studio, and RTDX.- DSP/BIOS.- C6416 DSK Target.- C6701 EVM Target.- Host MATLAB Application.- Ideas for Further Improvement.- 5.2 Segmentation.- 5.2.1 Thresholding.- 5.2.2 Autonomous Threshold Detection Algorithms.- 5.2.3 Adaptive Thresholding.- 5.2.4 MATLAB Implementation.- 5.2.5 RTDX Interactive Segmentation Application with Visual Studio and the TI C6416.- C6416 DSK Implementation.- Visual Studio .NET 2003 Host Application.-
6.Wavelets.- 6.1 Mathematical Preliminaries.- 6.1.1 Quadrature Mirror Filters and Implementing the 2D DWT in MATLAB.- 6.1.2 The Wavelet Toolbox.- 6.1.3 Other Wavelet Software Libraries.- 6.1.4 Implementing the 2D DWT on the C6416 DSK with IMGLIB.- Single-Level 2D DWT.- Multi-Level 2D DWT.- Multi-Level 2D DWT with DMA .- 6.2 Wavelet-Based Edge Detection.- 6.2.1 The Undecimated Wavelet Transform.- 6.2.2 Edge Detection with the Undecimated Wavelet Transform.- 6.2.3 Multiscale Edge Detection on the C6701 EVM and C6416 DSK.- Standalone Multiscale Edge Detector (C6701 EVM).- HPI Interactive Multiscale Edge Detector Application with Visual Studio and the TI C6701 EVM.- C6701 EVM Target.- Visual Studio .NET 2003 Host Application.- Standalone Multiscale Edge Detector (C6416 DSK).- 6.3 Wavelet Denoising.- 6.3.1 Wavelet Denoising in MATLAB.- 6.3.2 Wavelet Denoising on the C6x.- D4 DWT and IDWT functions on the C6416.- A C6416 Wavelet Denoising Implementation.-
Appendix A Putting it together: a streaming video application.- A.1 Creation and Debugging of MEX-files in Visual Studio .NET 2003.- A.1.1 The import_grayscale_image MEX-file.- A.1.2 A MEX-file for HPI communication between MATLAB and the C6x EVM.- A.2 The C6701 EVM Program.- A.3 MATLAB GUI.- A.4. Ideas for Further Improvement.-
Appendix B Code Optimization.- B.1 Intrinsics and Packed Data Processing.- B.1.1 Packed Data Processing.- B.1.2 Optimization of the Center of Mass Calculation on the C64x Using Intrinsics.- B.2 Intrinsics and the Undecimated Wavelet Transform.- B.3 Convolution and the DWT.