You are on page 1of 50

IMAGE COMPRESSION AND DECOMPRESSION USING WAVELET TRANSFORM

A PROJECT REPORT Submitted by BHARATHI A.L.N. RAJU G. (41501106023) HARI B.V.S. (41501106036) PAVAN KIRAN .KOTTU (41501106063) PAVAN KISHORE .KOTTU (41501106064)

in partial fulfillment for the award of the degree of BACHELOR OF ENGINEERING in ELECTRONICS AND COMMUNICATION ENGINEERING

S.R.M. ENGINEERING COLLEGE, KATTANKULATHUR-603 203, KANCHEEPURAM DISTRICT. ANNA UNIVERSITY : CHENNAI - 600 025 MAY 2005

BONAFIDE CERTIFICATE

Certified

that

this

project

report

"IMAGE

COMPRESSION

AND

DECOMPRESSION USING WAVELET TRANSFORM" is the bonafide work of "BHARATHI A.L.N. RAJU G. (41501106023), HARIB.V.S. (41501106036), PAVAN KIRAN .KOTTU (41501106063) and PAVAN KISHORE .KOTTU

(41501106064)" who carried out the project work under my supervision.

Prof. Dr. S. JAYASHRI HEAD OF THE DEPARTMENT ELECTRONICS AND COMMUNICATON ENGG. S.R.M. Engineering College Kattankulathur - 603 203 Kancheepuram District

Mr. R. RAMESH SUPERVISOR Lecturer ELECTRONICS AND COMMUNICATON ENGG. S.R.M. Engineering College Kattankulathur - 603 203 Kancheepuram District

ACKNOWLEDGEMENT We would like to express our gratitude to our chairman,

Thiru.T.R.Pachamuthu for having provided us with all the facilities to build our project successfully. We sincerely thank our honorable principle, Prof.R.Venkataramani whose solicit presence gave us immense boost to complete this project.

We earnestly thank Prof. Dr. S.Jayashri, Head of the Department, E.C.E, for her constant advice, support and valuable guidance. We are indebted to both our internal guide Mr.R.RAMESH and our external guide, Mr.S.THAMINMUN ANSARI, for their support in accomplishing this project. We are obliged to our teaching and non-teaching staff for their kind assistance. We also express our profound gratitude towards the persons who have directly or indirectly helped us in completing this project successfully. ABSTRACT The aim of the project is to implement the Wavelet Transform to any time varying signal and analyze the signal obtained. The sharp discontinuities / spikes present in the signal can be viewed due to the special property of wavelet transforms which is to indicate at what time what frequency is present. The ultimate goal is to implement its typical and most common application to an image and show excellent results of compression using wavelets and how information in the image is retained. There are two closely interlinked reasons for compression. Firstly, to reduce the size of stored or transmitted files to manageable sizes, or to reduce the time it would take to transmit these files. Secondly, to reduce the real-time bandwidth required to transmit time-sensitive video data across a communication link. The more efficient the compression technique, the more complicated the algorithm will be and thus, requires more computational resources or more time to decompress. This tends to affect the speed of the process. With the use of a DSP processor we can

overcome the limitation that occurs in the process. The DSP processor we worked with, in this project is TMS320VC5416. TABLE OF CONTENTS CHAPTER NO. ABSTRACT LIST OF FIGURES LIST OF ABBREVATIONS 1 INTRODUCTION TO IMAGE COMPRESSION 1.1 1.2 1.3 2 Introduction Need for Image Compression Basic Types of Compression 2 3 4 PAGE NO. iii vi vii

TITLE

WAVELET TRANSFORM TECHNIQUE 2.1 Wavelet Transform 2.1.1 Introduction 2.1.2 Comparison of signals using Fourier Transform 2.1.3 Adoption of STFT 2.1.4 Conclusion 8 8 9 11 12

PROCESS INVOLVED IN COMPRESSION TECHNIQUE 3.1 Image Compression & Decompression Process 3.1.1 3.1.2 3.1.3 3.1.4 BMP File Wavelet Forward Transform Thresholding Run Length Encoding and Decoding Techniques 3.1.5 Inverse Wavelet Transform 14 14 16 20 21 24

DIGITAL SIGNAL PROCESSOR 4.1 4.2 Introduction to DSP TMS320C5416 DSP Processor 4.2.1 Description 4.2.2 Architecture and Specifications 4.3 Application Areas of DSP 26 27 27 28 32

TMS320C5416 ASSEMBLY LANGUAGE PROGRAM 5.1 5.2 Extraction of Pixel and Header Information Wavelet Forward Transform 5.2.1 Row Forward 5.2.2 Column Forward 5.3 5.4 5.5 5.6 Thresholding Run Length Encoding Decoding Wavelet Inverse Transform 5.6.1 Inverse Column Forward 5.6.2 Inverse Row Forward 5.7 5.8 5.9 Implementation using DSP Processor Real time Application using TMS320C5416 Result 34 34 34 35 36 36 37 38 38 39 39 41 54 56 58 LIST OF FIGURES

6 7

CONCLUSION REFERENCES

FIGURE NO. 1.1 1.2 2.1 2.2

TITLE Representation of Compression Techniques Coding Techniques Tree Graphical Representation of a Stationary Signal Graphical Representation of a Non Stationary Signal 5

PAGE NO. 5 6 8 9

2.3 2.4 3.1 3.2 3.3 4.1

Graphical Representation of Fourier Transformed Stationary Signal Graphical Representation of Fourier Transformed NonStationary Signal Steps involved in Compression Technique BMP File Format Types of BMP Files Architecture of TMS320C5416 DSP Processor LIST OF ABBREVIATIONS ALU BMP CB CAB CPU DB DAB DCT EB EAR EOF FT ISDN RLE STFT ---------------Arithmetic Logic Unit BIT MAP C Bus C Address Bus Central Processing Unit D Bus D Address Bus Discreet Cosine Transform E Bus EAB Address Register End Of Flow Fourier Transform Integrated Switching Device Network Run-Length Encoding Short Term Fourier Transform

10 10 14 15 15 28

Chapter-1 Introduction to Image Compression 1.1 Introduction: Compression techniques are playing an important role in the world of telecommunication and multimedia systems where bandwidth is still a valuable commodity. Hence, image compression techniques are of prime importance for reducing the amount of information needed for the picture without losing much of its quality, judged by human viewers. The history of compression begins in the 1960s. An analogue videophone system had been tried out in the 1960s, but it required a wide bandwidth and the postcard-size black-and-white pictures produced did not add appreciably to voice communication! There are two closely interlinked reasons for compression. Firstly, to reduce the size of stored or transmitted files to manageable sizes, or to reduce the time it would take to transmit these files to another computer. Secondly, to reduce the real-time bandwidth required to transmit time-sensitive video data across a communication link. Communications equipment like modems, bridges, and routers use compression schemes to improve throughput over standard phone lines or leased lines. Compression is also used to compress voice telephone calls transmitted over leased lines so that more calls can be placed on those lines. As is the case with any form of communication, compressed data communication only works when both the sender and receiver of the information understand the encoding scheme. For example, this text makes sense only if the receiver understands that it is intended to be interpreted as characters representing the English language. Similarly, compressed data can only be understood if the decoding method is known by the receiver.

Text can typically be compressed to approximately 40% of its original size, and graphics files from 20% to 90%. Some files compress very little. It depends entirely on the type of file and compression algorithm used. Some schemes are reversible so that the original data can be reconstructed (lossless data compression), while others accept some loss of data in order to achieve higher compression (lossy data compression). 1.2 Need for image compression: An image, 1024 pixel x 1024 pixel x 24 bit, without compression, would require 3 MB of storage and 7 minutes for transmission, utilising a high speed, 64 Kbit/s, ISDN line. If the image is compressed at a 10:1 compression ratio, the storage requirement is reduced to 300 KB and the transmission time drops to under 6 seconds. Seven 1 MB images can be compressed and transferred to a floppy disk in less time than it takes to send one of the original files, uncompressed, over an AppleTalk network. In a distributed environment large image files remain a major bottleneck within systems. Compression is an important component of the solutions available for creating file sizes of manageable and transmittable dimensions. Increasing the bandwidth is another method, but the cost sometimes makes this a less attractive solution. Platform portability and performance are important in the selection of the compression/decompression technique to be employed. 1.3 Basic types of compression: Compression comes in two basic flavors: lossless (or information preserving) and lossy.

Lossless compression

With lossless compression, data is compressed

without any loss of data. It assumes you want to get everything back that you put in i.e., we can reconstruct a perfect reproduction of the original from the compression. Critical financial data files are examples where lossless compression is required.

Lossy compression

With lossy compression, it is assumed that some loss of

information is acceptable. When you reconstruct the information from the 8

compressed data, you get something close to but not exactly the same as the original. You can get more compression by allowing the algorithm to lose more information. Lossy compression algorithms usually have an adjustable parameter to control this compression vs. quality tradeoff. The best example is a videoconference where there is an acceptable amount of frame loss in order to deliver the image in real time. People may appear jerky in their movements, but you still have a grasp for what is happening on the other end of the conference. In the case of graphics files, some resolution may be lost in order to create a smaller file. The loss may be in the form of color depth or graphic detail. For example, high-resolution details can be lost if a picture is going to be displayed on a low-resolution device. Loss is also acceptable in voice and audio compression, depending on the desired quality.

Figure 1.1 Representation of compression techniques. Lossy compression can provide compression ratios of 100:1 to 200:1, depending on the type of information being compressed. Lossless compression ratios usually only achieve a 2:1 compression ratio. Lossy compression techniques are often "tunable" in that you can turn the compression up to improve throughput, but at a loss in quality. Compression can also be turned downed to the point at which there is little loss of image, but throughput will be affected.

Lossy compression is very useful for images, audio signals, or other information that is perceived through our senses. It is not, however, useful for text, numerical data,use of scanners to locate details in images, etc. where there is a precise meaning for the data. Even for images or other perceived signals, lossless compression is sometimes required, particularly for legal documents, medical images, etc. Imagine the field day a lawyer would have when he finds out that a patient was misdiagnosed from a "lossy"compressed image. It doesn't seem to matter that the lossy version may be perceptually indistinguishable from the lossless version--the very term "lossy" sends the doctors and lawyers scurrying. Some of the data compression techniques:

Lossless coding techniques


o o o o

Run length encoding Huffman encoding Entropy coding (Lempel/Ziv) Area coding Transform coding (DCT/Wavelets/Gabor) Vector quantization Segmentation and approximation methods Spline approximation methods (BilinearInterpolation/Regularisation) Fractal coding (texture synthesis, iterated functions system [IFS], recursive IFS [RIFS])

Lossy coding techniques


o o o o o

10

Figure 1.2 Coding Techniques Tree

11

Chapter-2 Wavelet Transform Technique 2.1. WAVELET TRANSFORM: 2.1.1. Introduction: The reason why we choose wavelet transform goes way down to other transforms like Fourier and short time Fourier transforms. So let us have a brief look of both these transforms starting with fourier transform: We generally have two types of signals. Stationary signals Non-stationary signals Stationary signals: Signals whose frequency content do not change in time are called stationary signals. In this case, one does not need to know at what times frequency components exist , since all frequency components exist at all times. For example the following signal: x(t)=cos(2*pi*10*t)+cos(2*pi*25*t)+cos(2*pi*50*t)+cos(2*pi*100*t) Equation -1 is a stationary signal, because it has frequencies of 10, 25, 50, and 100 Hz at any given time instant. This signal is plotted below:

Figure 2.1 Graphical representation of a Stationary signal (equation-1)

12

Non Stationary signal: A signal with different frequency components at different time intervals, hence a nonstationary signal .The frequency content of non stationary signals change in time. In this case one should know what frequency components occur at what times.

Figure 2.2 Graphical representation of a non-stationary signal 2.1.2. Comparison of the signals using Fourier Transform: The top plot in Figure 2.3 is the (half of the symmetric) frequency spectrum of the signal in Figure 2.1. The bottom plot is the zoomed version of the top plot, showing only the range of frequencies that are of interest to us. Note the four spectral components corresponding to the frequencies 10, 25, 50 and 100 Hz.

Fourier transform of the stationary signal:

13

Figure 2.3 Graphical representation of Fourier Transformed stationary signal tFourier transform of non-stationary signal:

Figure 2.4 Graphical representation of Fourier transformed non-stationary signal

14

Now, compare the Figures 2.3 and 2.4. The similarity between these two spectrum should be apparent. Both of them show four spectral components at exactly the same frequencies, i.e., at 10, 25, 50, and 100 Hz. Other than the ripples, and the difference in amplitude (which can always be normalized), the two spectrums are almost identical, although the corresponding time-domain signals are not even close to each other. Both of the signals involves the same frequency components, but the first one has these frequencies at all times, the second one has these frequencies at different intervals. So, how come the spectrums of two entirely different signals look very much alike? Recall that the FT gives the spectral content of the signal, but it gives no information regarding where in time those spectral components appear. Therefore, FT is not a suitable technique for non-stationary signal. 2.1.3. Adoption of STFT: To overcome this we adopt SHORT TIME FOUTIER TRANSFORM (STFT), which is the modified version of Fourier transform. In STFT, the non stationary signal is divided into small portions, which are assumed to be stationary. This is done using a window function of a chosen width (i.e., fixed), which is shifted and multiplied with the signal to obtain the Short Time Fourier Transform of the signal. The problem with STFT goes back to Heisenberg uncertainty principle which states that it is impossible for one to obtain which frequencies exist at which time instance, but one can obtain the frequency bands existing in a time interval. This gives rise to resolution issue where there is trade off between the time resolution and frequency resolution. To assume stationary the window is supposed to be narrow, which results in a poor frequency resolution, i.e., it is difficult to know the exact frequency components that exist in the signal; only the band of frequencies that exist is obtained. If the width of the window is increased, frequency resolution improves but time resolution becomes poor, i.e., it is difficult to know what frequencies occur at which time intervals. Also, choosing a wide window may violate the condition of stationarity. 2.1.4. Conclusion: The Wavelet Transform solves the above problem to a certain extent. In contrast to STFT, which uses a single analysis window, the wavelet transform uses short windows at high frequencies and long windows at low frequencies. This results in 15

multi resolution analysis by which the signal is analyzed with different resolutions at different frequencies, i.e., both frequency resolution and time resolution vary in the time frequency plane without violating the Heisenberg inequality. Therefore, the wavelet transform can be defined as a mathematical tool that decomposes a signal into a representation that shows signal details and trends as a function of time. This representation can be used to characterise transient events, reduce noise, compress data, and perform many other operations. The main advantages of wavelet methods over traditional Fourier methods are the use of localised basis functions and the faster computation speed. Localised basis functions are ideal for analyzing real physical situations in which a signal contains discontinuities and sharp spikes. Wavelet transform (which was developed in last two decades) is capable of providing the time and frequency information simultaneously, hence giving a better timefrequency representation of the signal than any other existing transforms.

Chapter-3 Process involved in Compression Technique 3.1. Image Compression and Decompression Process: The basic block diagram showing the steps involved in the process of image compression and de-compression.

16

WAVELET FORWARD TRANSFORM

BMP FILE

EXTRACT HEADER & PIXEL INFO.

ROW FORWARD

COLUMN FORWARD

COLUMN FORWARD
WAVELET INVERSE TRANSFORM

THRESHOLD

INVERSE ROW FORWARD

INVERSE COLUMN FORWARD

DECODING

RUNLENGTH ENCODING

Figure 3.1 Steps involved in Compression Technique. 3.1.1 BMP FILE: A BMP file consists of two parts mainly. a) HEADER consists of information about the image and is same for all the images of its type. b) PIXEL is the content of the image and it varies depending upon the type and content of the image file.

HEADER BMP FILE PIXEL

INFORMATION ABOUT THE IMAGE CONTENT OF THE IMAGE


Figure 3.2 BMP file format.

17

Types of BMP Files:

BMP FILE

COLOUR IMAGE

GREY SCALE IMAGE Figure 3.3 Types of BMP files

BLACK & WHITE IMAGE

Colour Image: It consists of 54 bytes of header information. One pixel occupies 3 byte memory space in which Red, Green and Blue occupies 1 byte each. Grey Scale Image: An optical pattern consisting of discrete steps or shades of gray between black and white is known as grey scale image.It consists of 1078 bytes of header information. In this type of image one pixel occupies one byte memory and its values range from 0 to 255. 0 represents black and 255 represents white. Black & White Image: It consists of 1078 bytes of header information. This type of image also occupies one byte memory for every pixel. 0 represents black and 1 represents white. Extraction: This process includes the extraction of header information and pixel information from the input image file. Pixel information varies from image to image those results in the process where as the header information remains the same. 3.1.2 Wavelet Forward Transform: It is a mathematical tool that decomposes a signal into a representation that shows signal details and trends as a function of time. The wavelet transform or wavelet analysis is probably the most recent solution to overcome shortcomings of fourier transform. In this type of transform as frequency increases the time resolution

18

increases; likewise as frequency decreases the frequency resolution increases. Thus a certain high frequency component can be located more accurately in time than a low frequency component and a low frequency component can be located more accurately in frequency compared to a high frequency component. Types of wavelet algorithms: There are a wide variety of popular wavelet algorithms. Some of them are Haar Wavelets Daubechies Wavelets Mexican Hat Wavelets Morlet Wavelets Why Haar Wavelets? Of these algorithms, including Daubechies wavelets, Mexican Hat wavelets and Morlet wavelets have the advantage of better resolution for smoothly changing time series. But they have the disadvantage of being more expensive to calculate than the Haar wavelets. The higher resolution provided by these wavelets is not worth the cost for financial time series (no1n-stationary), which are characterized by jagged transitions. Haar Wavelets: The Haar wavelet algorithms are applied to time series1 where the number of samples is a power of two (e.g., 2, 4, 8, 16, 32, 64...) The Haar wavelet uses a rectangular window to sample the time series. The first pass over the time series uses a window width of two. The window width is doubled at each step until the window encompasses the entire time series. Each pass over the time series generates a new time series and a set of coefficients. The new time series is the average of the previous time series over the sampling window. The coefficients represent the average change in the sample window. For
1

A time series is simply a sample of a signal or a record of something, like

temperature, water level or market data (like equity close price).

19

example, if we have a time series consisting of the samples si, si+1, si+2... then the Haar wavelet equations is

where ci is the wavelet coefficient. The Haar transform preserves the average in the smoothed values (this is not true of all wavelet transforms). The scaling function produces a smoother version of the data set, which is half the size of the input data set. Wavelet algorithms are recursive and the smoothed data becomes the input for the next step of the wavelet transform. The Haar wavelet scaling function is

where ai is a smoothed value. Function of various Filters in Wavelet Transform: High pass filter In digital signal processing (DSP) terms, the wavelet function is a high pass filter. A high pass filter allows the high frequency components of a signal through while suppressing the low frequency components. For example, the differences that are captured by the Haar wavelet function represent high frequency change between an odd and an even value. Low pass filter In digital signal processing (DSP) terms, the scaling function is a low pass filter. A low pass filter suppresses the high frequency components of a signal and allows the low frequency components through. The Haar scaling function calculates the average of an even and an odd element, which results in a smoother, low pass signal.

20

In the wavelet literature this tree structured recursive algorithm is referred to as a pyramidal algorithm. Wavelets allow a time series to be viewed in multiple resolutions. Each resolution reflects a different frequency. The wavelet technique takes averages and differences of a signal, breaking the signal down into spectrum. All the wavelet algorithms work on time series a power of two values (e.g., 64, 128, 256...). Each step of the wavelet transform produces two sets of values: a set of averages and a set of differences (the differences are referred to as wavelet coefficients). Each step produces a set of averages and coefficients that is half the size of the input data. For example, if the time series contains 256 elements, the first step will produce 128 averages and 128 coefficients. The averages then become the input for the next step (e.g., 128 averages resulting in a new set of 64 averages and 64 coefficients). This continues until one average and one coefficient (e.g., 20) is calculated. The average and difference of the time series is made across a window of values. Most wavelet algorithms calculate each new average and difference by shifting this window over the input data. For example, if the input time series contains 256 values, the window will be shifted by two elements, 128 times, in calculating the averages and differences. The next step of the calculation uses the previous set of averages, also shifting the window by two elements. This has the effect of averaging across a four element window. Logically, the window increases by a factor of two each time. The Haar wavelet transform has a number of advantages:

It is conceptually simple. It is fast. It is memory efficient, since it can be calculated in place without a temporary array. It is exactly reversible without the edge effects that are a problem with other wavelet transforms. Works better (comparatively) for financial time series applications.

21

3.1.3 Thresholding: In certain signals, many of the wavelet coefficients are close or equal to zero. Through a method called thresholding, these coefficients may be modified so that the sequence of wavelet coefficients contains long strings of zeros. Through a type of compression known as entropy coding, these long strings may be stored and sent electronically in much less space. There are different types of thresholding. Hard thresholding Soft thresholding Quantile thresholding Hard Thresholding: In hard thresholding, a tolerance is selected. Any wavelet whose absolute value falls below the tolerance is set to zero with the goal to introduce many zeros without losing a great amount of detail. There is not a straight forward easy way to choose the threshold, although the larger the threshold that is chosen the more error that is introduced into the process. Soft Thresholding: This is another type of thresholding known as soft thresholding. Once again a tolerance, h, is selected. If the absolute value of an entry is less than the tolerance, than that entry is set to zero. All other entries, d, are replaced with sign(d)||d| - h|. Soft thresholding can be thought of as a translation of the signal toward zero by the amount h.

Quantile Thresholding: A third type of thresholding is quantile thresholding. In this method a percentage p of entries to be eliminated are selected. The smallest (in absolute value) p percent of entries are set to zero.

22

We generally use hard thresholding in order to obtain high output efficiency with out much loss and altering of data. 3.1.4 Run Length Encoding and Decoding Techniques: Run-length encoding (RLE) is a very simple form of data compression in which runs of data (that is, sequences in which the same data value occurs in many consecutive data elements) are stored as a single data value and count, rather than as the original run. This is most useful on data that contains many such runs; for example, simple graphic images such as icons and line drawings. Example: The string: "aaaabbcdeeeeefggggghhhiiiij" may be replaced with "a4b2c1d1e5f1g5h3i4j1". The numbers are in bold to indicate that they are values, not symbols. RLE works by reducing the physical size of a repeating string of characters. This repeating string, called a run, is typically encoded into two bytes. The first byte represents the number of characters in the run and is called the run count. In practice, an encoded run may contain 1 to 128 or 256 characters; the run count usually contains as the number of characters minus one (a value in the range of 0 to 127 or 255). The second byte is the value of the character in the run, which is in the range of 0 to 255, and is called the run value. A black-and-white image that is mostly white, such as the page of a book, will encode very well, due to the large amount of contiguous data that is all the same color. Make sure that your RLE encoder always stops at the end of each scan line of bitmap data that is being encoded. There are several benefits to doing so. Encoding only a simple scan line at a time means that only a minimal buffer size is required. Encoding only a simple line at a time also prevents a problem known as cross-coding. Cross-coding is the merging of scan lines that occurs when the encoded process loses the distinction between the original scan lines. If the data of the individual scan lines 23

is merged by the RLE algorithm, the point where one scan line stopped and another began is lost or, at least, is very hard to detect quickly. When an encoder is encoding an image, an end-of-scan-line marker is placed in the encoded data to inform the decoding software that the end of the scan line has been reached. This marker is usually a unique packet, explicitly defined in the RLE specification, which cannot be confused with any other data packets. End-of-scan-line markers are usually only one byte in length, so they don't adversely contribute to the size of the encoded data. Encoding Strings Encoding using RLE is fairly simple. The following process can be implemented to attain encoding: Step 1. Set the previous symbol equal to an unmatchable value. Step 2. Read the next symbol from the input stream. Step 3. If the symbol is an EOF exit. Step 4. Write out the current symbol. Step 5. If the symbol is an does not match the previous symbol, set the previous symbol to the current symbol, and go to step 2. Step 6. Read and count additional symbols until a non-matching symbol is found. This is the run length. Step 7. Write out the run length. Step 8. Write out the non-matching symbol. Step 9. Set the previous symbol to the non-matching symbol, and go to step 2.

Decoding strings Decoding is even easier than encoding. Not only are there less steps, but there are no caveats. To decode an encoded stream the following steps are followed: Step 1. Set the previous symbol equal to an unmatchable value. Step 2. Read the next symbol from the input stream.

24

Step 3. If the symbol is an EOF exit. Step 4. Write out the current symbol. Step 5. If the symbol is an does not match the previous symbol, set the previous symbol to the current symbol, and go to step 2. Step 6. Read the run length. Step 7. Write out the current symbol for the amount indicated by the run length. Step 8. Go to step 1.

3.1.5 INVERSE WAVELET TRANSFORM: The forward wavelet transform is an invertible mapping; in fact and this process is the inverse mapping of the forward wavelet transform. Let us consider ci, ci+1, .. as wavelet coefficients and ai, ai+1, . as wavelet averages or smoothed values, then the required original data si, si+1, can be obtained by the following inverse wavelet equations. si = ai + ci si+1 = ai - ci The obtained output data constitutes to the final decompressed image. Chapter-4 Digital Signal Processor 4.1 Introduction to DSP A signal is any variable that carries information. Examples of the types of signals of interest are Speech (telephony, radio, everyday communication). Biomedical signals (EEG brain signals). Sound and music. Video and image. Radar signals (range and bearing).

25

Digital signal processing (DSP) is concerned with the digital representation of signals and the use of digital processors to analyse, modify, or extract information from signals. Many signals in DSP are derived from analogue signals which have been sampled at regular intervals and converted into digital form. The key advantages of DSP over analogue processing are Guaranteed accuracy (determined by the number of bits used). Perfect reproducibility. No drift in performance due to temperature or age. Takes advantage of advances in semiconductor technology. Greater flexibility (can be reprogrammed without modifying hardware). Superior performance (linear phase response possible, and filtering algorithms can be made adaptive). Sometimes information may already be in digital form. There are however (still) some disadvantages Speed and cost (DSP design and hardware may be expensive, especially with high bandwidth signals) Finite wordlength problems (limited number of bits may cause degradation). 4.2 TMS320VC5416 DSP PROCESSOR 4.2.1 Description: The TMS320VC5416 fixed-point, digital signal processor (DSP) (hereafter referred to as the 5416 unless otherwise specified) is based on an advanced modified Harvard architecture that has one program memory bus and three data memory buses. This processor provides an arithmetic logic unit (ALU) with a high degree of parallelism, application-specific hardware logic, on-chip memory, and additional on-chip peripherals. The basis of the operational flexibility and speed of this DSP is a highly specialized instruction set. Separate program and data spaces allow simultaneous access to program instructions and data, providing a high degree of parallelism. Two read operations and one write 26

operation can be performed in a single cycle. Instructions with parallel store and application-specific instructions can fully utilize this architecture. In addition, data can be transferred between data and program spaces. Such parallelism supports a powerful set of arithmetic, logic, and bit-manipulation operations that can all be performed in a single machine cycle. The 5416 also includes the control mechanisms to manage interrupts, repeated operations, and function calls. Enhanced Harvard architecture built around one program bus, three data buses, and four address buses for increased performance and versatility. Advanced CPU design with a high degree of parallelism and application specific hardware logic for increased performance. A highly specialized instruction set for faster algorithms and for optimized high-level language operation. Modular architecture design for fast development of spinoff devices. Advanced IC processing technology for increased performance and low power consumption. Low power consumption and increased radiation hardness because of new static design techniques. These are some of the major advantages offered by C5416. 4.2.2 Architecture and Specifications

27

Fig.4.1 Architecture of TMS320C54X DSP Processor It comprises the central processing unit (CPU), memory and on-chip peripherals. The 54x DSP`s use an advanced modified Harvard architecture that maximizes processing power with eight buses. Separate program and data spaces allow simultaneous access to program instructions and data, providing a high degree of parallelism. For example, 3 reads and 1 write can be performed in a single cycle. Instructions with parallel store and application-specific instructions fully utilize this architecture. In addition, data can be transferred between data and program spaces. Such parallelism supports a powerful set of arithmetic, logic and bit-manipulation 28

operations that can all be performed in a single machine cycle. Also, the 54x includes the control mechanisms to manage interrupts, repeated operations, and function calling. CPU Advanced multi-bus architecture with one program bus, three data buses and four address buses 40-bit arithmetic logic unit (ALU), including a 40-bit barrel shifter and two independent 40-bit accumulators 17-bit x 17-bit parallel multiplier coupled to a 40-bit dedicated adder for non-pipelined single-cycle multiply/accumulate (MAC) operation Exponent encoder to compute the exponent of a 40-bit accumulator value in a single cycle Two address generators, including eight auxiliary registers and two auxiliary registers arithmetic units

MEMORY 192K words x 16-bit addressable memory space (64K- words program, 64Kwords data and 64K-words I/O), with extended program memory. It has got high speed On chip memory. BUSES The 54x architecture is built around eight major 16-bit buses (four program/data buses and four address buses): The program bus (PB) carries the instruction code and immediate operands from program memory. Three data buses (CB, DB and EB) interconnect to various elements, such as the CPU, data address generation logic, program address generation, and onchip peripherals and data memory. The CB and DB carry the operands that are read from data memory. The EB carries the data to be written to memory. 29

Four address buses (PAB, CAB, DAB and EAB) carry the addresses needed for instruction execution. ADDRESSING MODES The 54x offers seven basic data addressing modes: Immediate addressing uses the instruction to encode a fixed value Absolute addressing uses the instruction to encode a fixed address Accumulator addressing uses accumulator A to access a location in program memory as data Direct addressing uses seven bits of the instruction to encode the lower seven bits of an address. The seven bits are used with the data page pointer (DP) or the stack pointer (SP) to determine the actual memory address Indirect addressing uses the auxiliary registers to access memory Memory-mapped registers addressing uses the memory-mapped registers without modifying either the current DP value or the current SP value Stack addressing manages adding and removing items from the system stack During the execution of instructions using direct, indirect or memory-mapped register addressing, the data-address generation logic (DAGEN) computes the addresses of data-memory operands. INSTRUCTION SET Single-instruction repeat and block repeat operations Block memory move instructions for better program and data management Instructions with a 32-bit long operand Instructions with 2- or 3-operand simultaneous reads Arithmetic instructions with parallel store and parallel load Conditional-store instructions Software-programmable wait-state generator Programmable bank switching External bus-off control to disable the external data bus, address bus and control signals 30

ON-CHIP PERIPHERALS

SPEED:

Data bus with a bus holder feature

25/20/15/12.5/10-ns execution time for a single-cycle, fixed-point instruction

FEATURES Advanced multi bus architecture with three separate 16- bit data memory buses and one program memory bus. 40-bit arithmetic logic unit (ALU) including a 40- bit barrel shifter and two independent 40- bit accumulators. Two address generators with eight auxiliary registers and two auxiliary registers arithmetic units (ARAUS). Data bus with a bus holder feature.

4.3 Application areas of DSP are considerable: Image processing (pattern recognition, robotic vision, image enhancement, facsimile, satellite weather map, animation). Instrumentation and control (spectrum analysis, position and rate control, noise reduction, data compression). Speech and audio (speech recognition, speech synthesis, text to speech, digital audio, equalisation). Military (secure communication, radar processing, sonar processing, missile guidance). Telecommunications (echo cancellation, adaptive equalisation, spread spectrum, video conferencing, data communication). Biomedical (patient monitoring, scanners, EEG brain mappers, ECG analysis, X-ray storage and enhancement).

31

Chapter-5 TMS320C5416 Assembly Language Program 5.1 Extraction of Pixel & Header Information: 1. Extract the header information from the input BMP file which consists 1078 bytes of header information. 2. Pixel information of the image is obtained by scanning and is stored in a 64x64 matrix. 3. This data which is in integer form is converted into hexadecimal form. 4. This is done in C program by using a simple logic of scanning the matrix and printing it into a file with the help of the following instruction. fprintf(fp1,"\t\t.word 0x0%04x\n",x); 5. This file is included in the program before we start simulation. 5.2 Wavelet Forward Transform: 5.2.1 Row Forward: 1. Initialize the auxiliary registers pointing to the specified memory locations. 2. Consider two auxiliary registers pointing two consecutive pixel values (say si, si+1). 3. Perform the operation of Haar-Wavelet to acquire smoothed values (averages, say ai, ai+1....) and store them in a different memory location. Syntax:

4. Also perform the operation of Haar-Wavelet to acquire wavelet coefficients (say ci, ci+1) for the same values pointed previously (i.e., for averages) and store them in a different memory location which is 20h locations next to the previous output memory.

5. Increment the input pointers by two times and the output pointers by one time.

32

6. Repeat the steps 3 to 5 by 32 times. 7. Repeat the steps 3 to 6 by 64 times. 5.2.2 Column Forward: 1. Initialize the auxiliary registers pointing to the specified memory locations. 2. Consider two auxiliary registers pointing two consecutive pixel values (say si, si+1). 3. Perform the operation of Haar-Wavelet to acquire smoothed values (averages, say ai, ai+1....) and store them in a different memory location.

4. Also perform the operation of Haar-Wavelet to acquire wavelet coefficients (say ci, ci+1) for the same values pointed previously (i.e., for averages) and store them in a different memory location which is 800h locations next to the previous output memory.

5. Increment the input pointers by two times and the output pointers by one time. 6. Repeat the steps 3 to 5 by 32 times. 7. Repeat the steps 3 to 6 by 32 times. 8. The second half of the image i.e., stored 32 locations next to the initial output memory is copied as it is without any processing. 5.3 Thresholding: 1. Initialize the auxiliary register pointing to the specified memory location. 2. Load the pointer value to accumulator A and check if A lies between 15 & 15. 3. If the condition is not satisfied go to step 5. 4. If the condition is satisfied append zero in that location. 5. Increment the pointer once.

33

6. Repeat steps 2 to 5 for the whole image i.e., 4096 times. 5.4 Run-Length Encoding: 1. 2. 3. 4. 5. 6. 7. 8. 9. Initialize the auxiliary registers pointing to the specified memory locations. Initialize the accumulator B by loading zero into it. Load the pointer value to accumulator A and check if it is zero. If the condition is not satisfied go to step 6. If the condition is satisfied add one to the value in B and go to step 11. Check if the value in B is equal to zero. If the condition is satisfied go to step 10. If the condition is not satisfied load zero to A and store the values of A and B in consecutive output memory locations. Once again initialize the accumulator B by loading zero. 10. Move the data from input memory to output memory location. 11. Increment the pointer once. 12. Repeat steps 2 to 12 for 4096 times. 5.5 Decoding: 1. 2. 3. 4. 5. 6. 7. 8. 9. Initialize the auxiliary registers pointing to the specified memory locations. Initialize a variable K by assigning a data pointer to it. Initialize the accumulator A by loading zero into it. Load the value of A to K. Load the input pointer value to A. Initialize the accumulator B and load some junk value into it. Subtract A from B and check if B is equal to zero. If the condition is satisfied jump to the next process. If the condition is not satisfied check the value of A.

10. If it is not zero go to step 15. 11. If it is zero, increment the pointer once and load its value to accumulator B. 12. Subtract one from the value of B and store it in the same input location. 34

13. Store the value in A i.e., zero in the output memory repeatedly for input pointer value times. 14. Increment the input pointer once and go to step 16. 15. Move the data directly from input memory to output memory location. 16. Go to step 5.

5.6 Wavelet Inverse Transform: 5.6.1 Inverse Column Forward: 1. 2. 3. 4. 5. 6. 7. 8. 9. Move the data directly from one memory location to another memory location (output). Initialize the auxiliary registers pointing to the specified memory locations. Initialize a variable K by assigning a data pointer to it. Initialize the accumulator A by loading zero into it. Load the value of A to K. Once again initialize the variable K and load the content of accumulator K to A. Load 20h to accumulator B and subtract A from B. If B is equal to zero then jump to the next process. If B is not equal to zero then go to the next step.

10. Add the input values pointed by the input pointers and store it in A. 11. Subtract the same and store it in B. 12. Store the content of A at some memory location and the content of B at some other memory location which is 64 locations next to the previous memory. 13. Increment both the input and output pointers once. 14. Repeat steps 10 to 13 for 31 times. 15. Now increment the input pointers by 32 times and output pointers by 95 times. 16. Update the variable K by adding one to it and go to step 6.

35

5.6.2 Inverse Row Forward: 1. 2. 3. 4. 5. 6. 7. 8. 9. Initialize the auxiliary registers pointing to the specified memory locations. Initialize a variable K by assigning a data pointer to it. Initialize the accumulator A by loading zero into it. Load the value of A to K. Once again initialize the variable K and load the content of accumulator K to A. Load 40h to accumulator B and subtract A from B. If B is equal to zero then jump to the next process. If B is not equal to zero then go to the next step. Add the input values pointed by the input pointers and store it in A.

10. Subtract the same and store it in B. 11. Store the values of A and B to the output memory and increment the input and output pointers once. 12. Repeat steps 9 to 11 for 31 times. 13. Now increment the input pointers by 32 times. 14. Update the variable K by adding one to it and go to step 5. 5.7 Implementation using DSP Processor: 1. 2. 3. Execute the program, there by, storing the data to the processor. Load the required data into the system by specifying the corresponding memory locations to the processor. Store the downloaded data into a file.

4. 5. 6.

Edit the file by allowing the required data and deleting the rest. Transfer the data from the file to a buffer. Convert the data which is in hexa-decimal format to integer format and store it in a file.

36

7. 8.

Now convert the data file into a BMP file, adding the header information to it. Changing the memory locations while downloading the data, we can obtain the necessary outputs in image format. 5.8 Real time application using TMS320VC5416

;******************************************************* ; IMAGE COMPRESSION & DECOMPRESSION .include "5416_iv.asm" .include "pix.asm" .def start .data K .word 0000h .text start SSBX SXM STM #1100h,AR2 STM #1101h,AR3 STM #2100h,AR0 STM #2120h,AR1 L1 LD #K,DP LD K,A LD #40h,B SUB A,B BC L2,BEQ STM #31,BRC RPTB LOOP1 ADD *AR2,*AR3,A SFTA A,-16 NOP 37 ;*******************************************************

NOP SFTA A,-1 SUB *AR2,*AR3,B SFTA B,-16 SFTA B,-1 NOP NOP STL A,*AR0+ NOP NOP STL B,*AR1+ NOP NOP RPT #1h MAR *AR2+ NOP NOP NOP RPT #1h MAR *AR3+ LOOP1 NOP RPT #31 MAR *AR0+ NOP NOP NOP RPT #31 MAR *AR1+ NOP NOP NOP LD #K,DP LD K,A 38

ADD #1h,A NOP NOP NOP STL A,K B L1 L2 LD #K,DP LD #0h,A STL A,K STM #2100h,AR2 STM #3100h,AR3 RPT #4095 MVDD *AR2+,*AR3+ NOP NOP NOP ;*****************COL COMP******************** STM #2100h,AR2 STM #2140h,AR3 STM #3100h,AR0 STM #3900h,AR5 STM #1001h,AR1 L3 LD #K,DP LD K,A LD #20h,B SUB A,B NOP BC L5,BEQ NOP NOP STM #31,BRC 39

RPTB LOOP2 ADD *AR2,*AR3,A NOP NOP NOP SFTA A,-16 NOP SFTA A,-1 SUB *AR2+,*AR3+,B NOP NOP SFTA B,-16 SFTA B,-1 NOP NOP STL A,*AR0+ NOP STL B,*AR5+ NOP NOP LOOP2 NOP RPT #31 MAR *AR0+ RPT #31 MAR *AR5+ RPT #95 MAR *AR2+ RPT #95 MAR *AR3+ LD #K,DP LD K,A NOP ADD #1h,A 40

STL A,K B L3 ;**********THRESHOLDING ************** L5 STM #3100h,AR2 STM 4095,BRC NOP NOP RPTB LOOP4 LD *AR2,A LD #0FFECh,B NOP NOP SUB A,B BC LOOP4,BGT NOP NOP LD #0020h,B SUB A,B BC LOOP4,BLT NOP NOP LD #0h,A STL A,*AR2 NOP NOP MAR *AR2+ NOP NOP LOOP4 NOP

41

;**********RUN LENGTH ENCODING*********** STM #4100h,AR3 LD #0h,A RPT #4095 STL A,*AR3+ NOP NOP NOP STM #3100h,AR2 STM #4100h,AR3 STM #4095,BRC LD #0h,B RPTB LOOP5 LD *AR2,A BC L6,ANEQ ADD #1h,B B LOOP5 L6 BC L7,BEQ LD #0h,A STL A,*AR3+ SUB #1h,B STL B,*AR3+ LD #0h,B MVDD *AR2,*AR3+ B LOOP5 L7 LOOP5 MVDD *AR2,*AR3+ NOP MAR *AR2+ LD #7FFFh,A STL A,*AR3 ;**********************DECODING************** 42

STM #3100h,AR3 STM #4100h,AR2 L8 LD *AR2,A LD #7FFFh,B SUB A,B NOP NOP BC L12,BEQ NOP NOP BC L10,ANEQ NOP LD #0h,A MAR *AR2+ NOP NOP RPT *AR2 STL A,*AR3+ NOP NOP MAR *AR2+ NOP B L11 L10 MVDD *AR2+,*AR3+ NOP NOP L11 B L8 NOP NOP L12 NOP STM #3100h,AR2 STM #4100h,AR3 43

RPT #4095 MVDD *AR2+,*AR3+ NOP NOP NOP ;****************COL INV*************************** LD #K,DP LD #0h,A STL A,K STM #3100h,AR2 STM #3900h,AR3 STM #4100h,AR4 STM #4140h,AR5 L13 LD #K,DP LD K,A LD #20h,B NOP SUB A,B NOP NOP BC L14,BEQ STM #31,BRC NOP NOP NOP RPTB LOOP6 ADD *AR2,*AR3,A NOP SFTA A,-16 NOP NOP SUB *AR2+,*AR3+,B NOP 44

SFTA B,-16 NOP NOP STL A,*AR4+ LOOP6 STL B,*AR5+ NOP NOP NOP RPT #31 MAR *AR2+ NOP NOP NOP RPT #31 MAR *AR3+ NOP NOP NOP RPT #95 MAR *AR4+ NOP NOP NOP RPT #95 MAR *AR5+ NOP NOP NOP LD #K,DP LD K,A 45

NOP NOP ADD #1h,A STL A,K B L13 L14 NOP

;*******************ROW INV************************ LD #K,DP LD #0h,A STL A,K STM #4100h,AR2 STM #4120h,AR3 STM #5100h,AR4 STM #5101h,AR5 L15 LD #K,DP LD K,A LD #40h,B SUB A,B NOP BC L16,BEQ NOP STM #31,BRC RPTB LOOP7 ADD *AR2,*AR3,A NOP SFTA A,-16 NOP NOP SUB *AR2+,*AR3+,B SFTA B,-16 NOP 46

STL A,*AR4+ NOP STL B,*AR5+ NOP MAR *AR4+ NOP NOP MAR *AR5+ LOOP7 NOP RPT #31 MAR *AR2+ NOP NOP NOP RPT #31 MAR *AR3+ NOP NOP NOP LD #K,DP LD K,A NOP NOP ADD #1h,A STL A,K B L15 NOP L16 F NOP STM #03h, GPIOCR STM #02h, GPIOSR

47

WAIT

NOP NOP NOP NOP B WAIT

5.9 Result: Input image:

Input grey scale image Contains 1078 bytes header information.

Image after compression:

Image after performing wavelet transform. The sharp discontinuities / spikes can be viewed.

Image after Decompression:

48

Image after performing

inverse wavelet transform. The final recovered image.

Chapter-6 Conclusion 6. Conclusion: Compression is the process of reducing the number of bits or bytes needed to represent a given set of data. Compression takes advantage of redundancies or similarities in the data file. By reducing the number of bits or bytes used to store a set of data, we not only reduce the space required to store it, we also reduce the bandwidth needed to transmit it. Compression does have its trade-offs. The more efficient the compression technique, the more complicated the algorithm will be and thus, requires more computational resources or more time to decompress. This tends to affect the speed. Speed is not so much of an importance to still images but weighs a lot in motion-pictures. The same process of compression technique can be applied to colour images by making necessary changes in the program. Here, we achieved a compression ratio of nearly 58% for the grey scale image. But in practice, such a large compression ratios cannot be obtained for audio, video or any other multimedia files. The most popular data compression techniques now in use are zip, RAR, etc.

49

Chapter-7 References References: Books : Donald B. Percival and Andrew T. Walden (2000), Wavelet Methods for Time Series Analysis, Cambridge University Press. Jensen and la Cour-Harbo, (2001), Ripples in Mathematics: the Discrete Wavelet Transform. Timothy C. Bell, Ian Witten, John Cleary (1990), Text Compression, Prentice Hall, ISBN 0139119914. Journals : DeVore, R.; Jawerth, B.; and Lucier, B., (1992), Images Compression through Wavelet Transform Coding, IEEE Trans. Information Th. 38, 719-746. Websites : http://www.arturocampos.com/ http://www.ti.com/corp/docs/home.htm ---TEXAS INSTRUMENTS. http://zone.ni.com/zone/jsp/zone.jsp ---NATIONAL INSTRUMENTS. http://www.bearcave.com http://users.rowan.edu/~polikar/homepage.html http://en.wikipedia.org/wiki/Run-length_encoding

50

You might also like