BOOK
Embedded Image Processing on theTMS320C6000™DSP
Texas Instruments recommended course textThe MathWorks, Inc. MATLAB & Simulink Based Book
Texas Instruments recommended course text
The MathWorks, Inc. MATLAB & Simulink Based Book
Embedded Image Processing on the TMS320C6000™ DSP (Examples in Code Composer Studio™ and MATLAB) is the first book of its kind. While there are numerous application-oriented texts that cover embedded signal processing algorithms on a variety of DSP platforms, and countless image processing books, there are none that focus exclusively on implementing image processing algorithms on resource-constrained DSP platforms in an efficient manner. Imaging algorithms consume huge amounts of data and are compute-intensive; hence it becomes a challenge to go from a prototype implementation running on a desktop workstation (perhaps coded in MATLAB or C/C++) to an embedded target such as the hugely popular C6000 series of Digital Signal Processors from Texas Instruments. This book describes and includes source code for a plethora of image processing applications, all of which have been tested on the C6416 DSK and/or C6701 EVM DSP development platforms. In addition, there are many MATLAB and Visual Studio .NET 2003 C/C++ prototypes included on the book CD-ROM. If you are interested in learning more about the book, please click on the link to your left, where you will find a further information under book detail and a gallery of images from the book.
Embedded Image Processing on the TMS320C6000™ DSP (Examples in Code Composer Studio™ and MATLAB) is the first book of its kind. While there are numerous application-oriented texts that cover embedded signal processing algorithms on a variety of DSP platforms, and countless image processing books, there are none that focus exclusively on implementing image processing algorithms on resource-constrained DSP platforms in an efficient manner. Imaging algorithms consume huge amounts of data and are compute-intensive; hence it becomes a challenge to go from a prototype implementation running on a desktop workstation (perhaps coded in MATLAB or C/C++) to an embedded target such as the hugely popular C6000 series of Digital Signal Processors from Texas Instruments.
This book describes and includes source code for a plethora of image processing applications, all of which have been tested on the C6416 DSK and/or C6701 EVM DSP development platforms. In addition, there are many MATLAB and Visual Studio .NET 2003 C/C++ prototypes included on the book CD-ROM. If you are interested in learning more about the book, please click on the link to your left, where you will find a further information under book detail and a gallery of images from the book.
BOOK DETAIL
This book's original subtitle was Examples in Code Composer Studio™, MATLAB, and Visual Studio .NET 2003. As you might imagine, this unwieldly subtitle was shortened due to its length. Nevertheless, it sums up the book in a nutshell. Developing efficient implementations of computationally intensive algorithms in an embedded environment is difficult, more difficult than developing such algorithms to run on desktop environments, where the developer has access to practically unlimited amounts of memory, and very often does not need concern themselves with low-level hardware and processor specific issues. Moreover, even though embedded integrated development environments (IDEs), such as TIs Code Composer Studio, have progressed by leaps and bounds in recent years, they still at times lag when compared to their desktop counterparts. Hence it stands to reason that getting an efficient embedded DSP implementation of complicated image processing algorithms should follow a multi-step process. In this book, a tried-and-true procedure is followed for all image processing algorithms covered in the book: A solid presentation of the underlying theory behind the algorithm is first given. While the book is primarily application-oriented and is not meant as a substitute for canonical texts like Gonzales and Woods Digital Image Processing, without a firm theoretical background it is difficult to understand how to optimize a given algorithm to take advantage of the DSP architecture. More......
This book's original subtitle was Examples in Code Composer Studio™, MATLAB, and Visual Studio .NET 2003. As you might imagine, this unwieldly subtitle was shortened due to its length. Nevertheless, it sums up the book in a nutshell. Developing efficient implementations of computationally intensive algorithms in an embedded environment is difficult, more difficult than developing such algorithms to run on desktop environments, where the developer has access to practically unlimited amounts of memory, and very often does not need concern themselves with low-level hardware and processor specific issues. Moreover, even though embedded integrated development environments (IDEs), such as TIs Code Composer Studio, have progressed by leaps and bounds in recent years, they still at times lag when compared to their desktop counterparts. Hence it stands to reason that getting an efficient embedded DSP implementation of complicated image processing algorithms should follow a multi-step process. In this book, a tried-and-true procedure is followed for all image processing algorithms covered in the book:
A solid presentation of the underlying theory behind the algorithm is first given. While the book is primarily application-oriented and is not meant as a substitute for canonical texts like Gonzales and Woods Digital Image Processing, without a firm theoretical background it is difficult to understand how to optimize a given algorithm to take advantage of the DSP architecture.
More......
BOOK IMAGES
BIO
Shehrzad has worked in a number of industries; defense, life sciences, medical, and telecommunications since graduating in 1996 with a B.S. in Computer Science (minor in Applied Mathematics) from the University of California at Davis. Upon graduation, he went to work for Applied Signal Technology, a defense telecommunications firm. During his time there, he worked on a variety of signal intelligence products. Also during that time, Shehrzad completed his Masters in Computer Engineering from Santa Clara University (1999). Upon completion of his M.S., Shehrzad went to do medical imaging work at a small Silicon Valley company, Accuray, where he worked on a variety of medical imaging applications. He is a co-inventor on two patents that flowed out of his tenure there: "Apparatus and method for registering 2D radiographic images with 2D reconstructed images of 3D CT scan data" and "Image guided radiosurgery method and apparatus using registration of 2D X-ray images with digitally reconstructed radiographs of 3D CT scan data".Following Accuray, he had a four-year stint as the lead software engineer at Labcyte, a Silicon Valley biotech instrumentation company. His primary function was the development of novel acoustic signal processing algorithms fundamental to the operation of the microfluidics instrumentation and the underlying technology, "ADE" or Acoustic Drop Ejection. In particular, he was a key member of the team that developed the Echo 550 compound reformatter, an instrument selected by R&D Magazine as one of the 100 most technologically significant products introduced in 2004. He was the primary systems and algorithm engineer for the follow-on Echo 380 auditor, and spearheaded the development of this next-generation instrument. Shehrzad engineered the video and imaging subsystem for Labcyte's prototype MALDI (Matrix-Assisted Laser Desorption/Ionization) Spotter instrument, which has been in active use since 2002. During his four fruitful years at Labcyte, Shehrzad led the software team and acted as the main software architect, and is a co-inventor on key patent filings (and at the time of this writing, one issuance) pertaining to the instrument's technological heart.From 2005 until Jan 2010, Shehrzad was the Director of Software Engineering at Restoration Robotics, a Silicon Valley startup developing a robotic system that autonomously (with limited human intervention) performs hair transplant operations. His primary goal, aside from building the team, was the research and development of novel and efficient video and imaging algorithms. His issued US patent 7,477,782 was the first patent issued to Restoration Robotics. He is an inventor or co-inventor on multiple issued patents and applications stemming from this work. He left Restoration Robotics to strike out on his own.Shehrzad has consulted for a number of companies, on a variety of products/platforms/architectures (H.264 DSP codec, sampled data compression, flow cytometry, X-ray imaging, to name a few). Shehrzad currently lives in Palo Alto, California with his wife and two sons. He is a frequent contributor to software trade industry magazines such as Dr. Dobb's Journal and C/C++ Users Journal.
Shehrzad has worked in a number of industries; defense, life sciences, medical, and telecommunications since graduating in 1996 with a B.S. in Computer Science (minor in Applied Mathematics) from the University of California at Davis. Upon graduation, he went to work for Applied Signal Technology, a defense telecommunications firm. During his time there, he worked on a variety of signal intelligence products. Also during that time, Shehrzad completed his Masters in Computer Engineering from Santa Clara University (1999). Upon completion of his M.S., Shehrzad went to do medical imaging work at a small Silicon Valley company, Accuray, where he worked on a variety of medical imaging applications. He is a co-inventor on two patents that flowed out of his tenure there: "Apparatus and method for registering 2D radiographic images with 2D reconstructed images of 3D CT scan data" and "Image guided radiosurgery method and apparatus using registration of 2D X-ray images with digitally reconstructed radiographs of 3D CT scan data".
Following Accuray, he had a four-year stint as the lead software engineer at Labcyte, a Silicon Valley biotech instrumentation company. His primary function was the development of novel acoustic signal processing algorithms fundamental to the operation of the microfluidics instrumentation and the underlying technology, "ADE" or Acoustic Drop Ejection. In particular, he was a key member of the team that developed the Echo 550 compound reformatter, an instrument selected by R&D Magazine as one of the 100 most technologically significant products introduced in 2004. He was the primary systems and algorithm engineer for the follow-on Echo 380 auditor, and spearheaded the development of this next-generation instrument. Shehrzad engineered the video and imaging subsystem for Labcyte's prototype MALDI (Matrix-Assisted Laser Desorption/Ionization) Spotter instrument, which has been in active use since 2002. During his four fruitful years at Labcyte, Shehrzad led the software team and acted as the main software architect, and is a co-inventor on key patent filings (and at the time of this writing, one issuance) pertaining to the instrument's technological heart.
From 2005 until Jan 2010, Shehrzad was the Director of Software Engineering at Restoration Robotics, a Silicon Valley startup developing a robotic system that autonomously (with limited human intervention) performs hair transplant operations. His primary goal, aside from building the team, was the research and development of novel and efficient video and imaging algorithms. His issued US patent 7,477,782 was the first patent issued to Restoration Robotics. He is an inventor or co-inventor on multiple issued patents and applications stemming from this work. He left Restoration Robotics to strike out on his own.
Shehrzad has consulted for a number of companies, on a variety of products/platforms/architectures (H.264 DSP codec, sampled data compression, flow cytometry, X-ray imaging, to name a few). Shehrzad currently lives in Palo Alto, California with his wife and two sons. He is a frequent contributor to software trade industry magazines such as Dr. Dobb's Journal and C/C++ Users Journal.
PATENTS
US Patent 7,354,141"Acoustic Assessment of Characteristics of a Fluid Relevant to Acoustic Ejection"US Patent 7,204,640"Apparatus and Method for Registering 2D Radiographic Images withImages reconstructed from 3D Scan Data".US Patent 7,477,782"System and Method For Classifying Follicular Units"US Patent7,627,157"Method for acoustically ejecting a droplet of fluid from a reservoir by an acoustic fluid ejection apparatus"More patent related links:USPTO Granted PatentsUSPTO Patent Applications
US Patent 7,354,141
"Acoustic Assessment of Characteristics of a Fluid Relevant to Acoustic Ejection"
US Patent 7,204,640
"Apparatus and Method for Registering 2D Radiographic Images withImages reconstructed from 3D Scan Data".
US Patent 7,477,782
"System and Method For Classifying Follicular Units"
US Patent7,627,157
"Method for acoustically ejecting a droplet of fluid from a reservoir by an acoustic fluid ejection apparatus"
More patent related links:
USPTO Granted Patents
USPTO Patent Applications
PUBLICATIONS
Shehrzad is a frequent contributor to software trade industry magazines such as Dr. Dobb's Journal and C/C++ Users Journal. A list of his published articles follow (note that you need to register with the CMP Media web site to have access to the online versions of the articles):
•Ellson et. al, "In Situ DMSO Hydration Measurements of HTS Compound Libraries," Combinatorial Chemistry & High Throughput Screening, Sept. 2005, Volume 8, Number 6 (pp. 489-498).
•Quality Control of HTS Tube Stores, SBS 2005.
•Use of focused acoustics for auditing assembled assay plates - A QC validation in HTS, Lab Automation 2005.
•Gamma correction of RGB images using TI DSPs, June 2005. You can download the source code (MATLAB, Host C#, and Target Code Composer Studio) that accompanies this article by clicking on this link.
•64-Bit Computing & DSPs, Dr. Dobbs Journal, pp. 78-83, Mar 2005. This article was adapted from portions of Embedded Image Processing on the TMS320C6000™ DSP (mostly Appendix B).
•C#, COM Objects, & Interop Services, Dr. Dobbs Journal, pp. S1-S5, Sept 2004.
•Motion Estimation and MPEG Encoding, Dr. Dobbs Journal, pp. 33-37, May 2004.
•Policy-Driven Design & the Intel IPP Library, C/C++ Users Journal, pp. 38-42, Jan 2004.
•Cross-Correlation and Matched Filters, Dr. Dobbs Journal, pp. 52-56, Apr. 2003.
•Slice Iterators, Windows Developer Magazine, pp. 10-23, July 2002.
•Optimization and Fixed-Point Iteration, Dr. Dobbs Journal, pp. 115-117, Dec. 2001.
•Image Rotation Using OpenGL Texture Maps, C/C++ Users Journal, pp. 10-17, Sept. 2001.
MEDALLION SOLUTIONS LLC
Medallion Solutions LLC can work with you to provide custom, best-in-class, solutions for your signal-processing or software needs, be it video codecs or adaptive equalizers running on embedded platforms or desktop workstations. A sampling of the custom solutions Medallion has delivered in the past include:Real-time H.264 codec (baseline profile)CUDA optimized sampled data codecHighly optimized equalizer for wireless communicationsDigital Image stabilizationX-Ray image enhancementFeature extraction from flow cytometry imagesAudio search engine acceleration via CUDA and OpenCL GPUIn addition, Medallion Solutions LLC partners with a number of companies here in the Silicon Valley, with specialized expertise in a variety of domains (mechanical, electrical, SQA, system integration). Please contact us using the contact page for more information.
Medallion Solutions LLC can work with you to provide custom, best-in-class, solutions for your signal-processing or software needs, be it video codecs or adaptive equalizers running on embedded platforms or desktop workstations. A sampling of the custom solutions Medallion has delivered in the past include:
In addition, Medallion Solutions LLC partners with a number of companies here in the Silicon Valley, with specialized expertise in a variety of domains (mechanical, electrical, SQA, system integration). Please contact us using the contact page for more information.
CONTACT
MATLAB has become the lingua franca of technical computing, and for each image processing algorithm MATLAB prototypes are given, with the source code of course provided on the accompanying CD-ROM. Some of these prototypes utilize various toolboxes, most notably the Image Processing Toolbox. However, in almost every case, care has been taken to present an alternative MATLAB implementation that doesnt rely on the toolbox. While MATLAB prototypes are wonderful for gaining a deeper understanding of how an imaging algorithm goes about doing its job, by their very nature they are quite distinct from what the eventual embedded DSP implementation will look like. To that end, in many cases MATLAB code is then ported over to C/C++, with all the source code built, tested, and debugged using Microsoft Visual Studio .NET 2003. In many instances, floating-point MATLAB routines are converted to fixed-point at this stage, with an eye towards an eventual efficient implementation targeting the C6416 DSP. All example applications are of the testbench variety, featuring some form of graphical user interface, implemented using a combination of MFC and GDI+. Of course, a book on embedded image processing would not be complete without actual source code built, debugged, and tested on the DSP. By this point, much of the algorithms higher-level operation should be understood, and here it is incumbent upon the programmer to now deal with all the idiosyncrasies that embedded development brings to bear. Important topics like memory management (via DMA and proper construction of the linker command file or DSP/BIOS configuration), low-level code optimization that takes advantage of the C6000s unique architecture (packed data optimizations and compiler intrinsics), and data transfer (RTDX or HPI) now factor into play and are thoroughly explained in the context of their usage. Numerous algorithms in the book are turned into fully functional applications, with a desktop application visualizing the results of interacting with an embedded DSP target that goes about performing the image processing grunt work. Some of the applications are built using Visual Studio and communicate either via RTDX or HPI, while others are MATLAB GUIs that again use standard TI data-transfer tools to shuttle data to and from the DSP. More information about the book can be found on the publishers site. Some of the tools and technologies employed in this book follow. Note that all source code is provided on the CD-ROM, and has all been thoroughly debugged. In particular, the embedded imaging algorithms have been tested on either the fixed-point C6416 DSP Starter Kit (DSK) or floating-point C6701 EVM, and sometimes multiple versions are given. Texas Instruments Tools and TechnologiesCode Composer Studio IDE DSP/BIOS (real-time operating system) DSPLIB and IMGLIB (one-dimensional signal processing and image processing libraries). CSL (Chip Support Library) and EVM support library. RTDX (Real-Time Data Exchange) HPI (Host Port Interface) MATLAB Tools and TechnologiesGUIDE GUI builder MEX files (a means of interfacing MATLAB with C/C++ code) Image Processing Toolbox Wavelet Toolbox Link for Code Composer Studio™ (a collection of objects and functions for interfacing MATLAB with the TI IDE) Visual Studio and C/C++ Tools, Frameworks, and LibrariesMicrosoft Foundation Classes (MFC, for building GUIs) GDI+ (for rendering of the 2D bitmapped images) Intel Integrated Performance Primitives (a library used to aid in development of ultra-fast signal and image processing algorithms on the Pentium platform). COM (Component Object Model, for interfacing C++ code with TIs RTDX COM objects to achieve data transfer)
MATLAB has become the lingua franca of technical computing, and for each image processing algorithm MATLAB prototypes are given, with the source code of course provided on the accompanying CD-ROM. Some of these prototypes utilize various toolboxes, most notably the Image Processing Toolbox. However, in almost every case, care has been taken to present an alternative MATLAB implementation that doesnt rely on the toolbox.
While MATLAB prototypes are wonderful for gaining a deeper understanding of how an imaging algorithm goes about doing its job, by their very nature they are quite distinct from what the eventual embedded DSP implementation will look like. To that end, in many cases MATLAB code is then ported over to C/C++, with all the source code built, tested, and debugged using Microsoft Visual Studio .NET 2003. In many instances, floating-point MATLAB routines are converted to fixed-point at this stage, with an eye towards an eventual efficient implementation targeting the C6416 DSP. All example applications are of the testbench variety, featuring some form of graphical user interface, implemented using a combination of MFC and GDI+.
Of course, a book on embedded image processing would not be complete without actual source code built, debugged, and tested on the DSP. By this point, much of the algorithms higher-level operation should be understood, and here it is incumbent upon the programmer to now deal with all the idiosyncrasies that embedded development brings to bear. Important topics like memory management (via DMA and proper construction of the linker command file or DSP/BIOS configuration), low-level code optimization that takes advantage of the C6000s unique architecture (packed data optimizations and compiler intrinsics), and data transfer (RTDX or HPI) now factor into play and are thoroughly explained in the context of their usage.
Numerous algorithms in the book are turned into fully functional applications, with a desktop application visualizing the results of interacting with an embedded DSP target that goes about performing the image processing grunt work. Some of the applications are built using Visual Studio and communicate either via RTDX or HPI, while others are MATLAB GUIs that again use standard TI data-transfer tools to shuttle data to and from the DSP.
More information about the book can be found on the publishers site. Some of the tools and technologies employed in this book follow. Note that all source code is provided on the CD-ROM, and has all been thoroughly debugged. In particular, the embedded imaging algorithms have been tested on either the fixed-point C6416 DSP Starter Kit (DSK) or floating-point C6701 EVM, and sometimes multiple versions are given.
Texas Instruments Tools and Technologies
Code Composer Studio IDE
DSP/BIOS (real-time operating system)
DSPLIB and IMGLIB (one-dimensional signal processing and image processing libraries).
CSL (Chip Support Library) and EVM support library.
RTDX (Real-Time Data Exchange)
HPI (Host Port Interface)
MATLAB Tools and Technologies
GUIDE GUI builder
MEX files (a means of interfacing MATLAB with C/C++ code)
Image Processing Toolbox
Wavelet Toolbox
Link for Code Composer Studio™ (a collection of objects and functions for interfacing MATLAB with the TI IDE)
Visual Studio and C/C++ Tools, Frameworks, and Libraries
Microsoft Foundation Classes (MFC, for building GUIs)
GDI+ (for rendering of the 2D bitmapped images)
Intel Integrated Performance Primitives (a library used to aid in development of ultra-fast signal and image processing algorithms on the Pentium platform).
COM (Component Object Model, for interfacing C++ code with TIs RTDX COM objects to achieve data transfer)
SHEHRZAD QURESHI
Blog