http:^^www.cs.washington.edu^education^courses^457^projects^writeup^
来自「This data set contains WWW-pages collect」· EDU^EDUCATION^COURSES^457^PROJECTS^WRITEUP^ 代码 · 共 161 行
EDU^EDUCATION^COURSES^457^PROJECTS^WRITEUP^
161 行
Date: Mon, 02 Dec 1996 16:09:56 GMTServer: NCSA/1.4.2Content-type: text/html<html><title>Sample write-up</title><img src = "../../images/cse457.gif" align = left alt="CSE 457"><br><hr noshade><center><img src = "../../images/title.gif" alt="Introduction to Computer Graphics"><hr noshade><font size=-2><b>1996 Autumn Quarter</b></font></center><br clear=left><blockquote><i>Below is a sample project write-up, written for a wavelet-basedimage compression program (a project in a previous offering of 457).Your write-up should use a similar outline:</i> <dl> <dt><b>Abstract</b> <dd>An introduction to the project: what it does, why it's useful, etc. <dt><b>Implementation</b> <dd>How your group implemented the project. You should discuss the basics of the algorithms and how they were implemented. <dt><b>Personal implementation</b> <dd>Discuss what you contributed to the project, including the required parts and any bells and whistles that you worked on. <dt><b>Results</b> <dd>How well does your program work? Does it produce interesting results? What might you change or add, given more time?</dl></blockquote><hr noshade><table width=100% cellpadding=0><tr><td align=left valign=bottom><font size = +1>Project 1 : <b>Wavelet</b></font></td><td align=center><font size = +1>Brad West<br></font>Group 6<br>10 Oct 95</td></tr></table><hr><h3>Abstract</h3>Wavelets, originally developed as a mathematical concept and a methodfor signal processing, are quickly becoming a standard tool incomputer graphics. The wavelet transform has many advantages: itallows the storage of information at multiple resolutions, is easy toimplement, and is very fast to compute.<p> In this project we investigated the use of wavelets for imagecompression. Wavelets are a natural tool for compression because theyisolate the parts of the image that contain a lot of detail. Withwavelets, it is possible in many cases to display a recognizable imageusing only five percent of the original data. In addition, thecoefficients of a wavelet-transformed image can be ordered from mostto least significant, allowing for progressive transmission inbandwidth-limited applications, such as when sending an image over theWeb.<h3>Implementation</h3>Our group implemented a wavelet compression program on an Indy R4400,using the <code>libui</code> user interface library. The programallows a user to load an <code>.rgb</code> image, and then compressthat image (with a selectable degree of compression) using the wavelettransform.<p> We chose to use the <i>Haar</i> wavelet basis because it is veryeasy to implement and fast to compute. To represent a signal in theHaar basis, the basic algorithm is to take two neighboring samples andaverage them. Then, in place of the two original samples, you insteadstore their average and difference. A two-dimensional image can betreated in the same way as a one-dimensional signal by concatenatingthe scan lines end to end. Performing this procedure recursively onthe computed averages transforms an image down to a single overallaverage and an array of differences. Though no information is savedin the transform itself, throwing out the smallest differencesprovides a compressed representation.<p> A compressed image, then, is basically an overall average, a fewimportant details, and a lot of zeroed-out coefficients. When savingthe transformed image to a file, we perform <i>run-length encoding</i>to get a concise representation.<h3>Personal implementation</h3>Though our group worked together on the basic wavelet-transformalgorithm, my personal responsibility was saving this transformedimage to a file (and, consequently, being able to read that file backin). This turned out to be a rather substantial task. First, itturns out that although the basic wavelet transform theoreticallyresults in no change in the amount of data, there is initially asubstantial <i>increase</i> in the amount of memory used. This isbecause an image is stored as an array of three-<i>byte</i> (8-bit)pixels, but a wavelet-transform results in an array ofthree-<i>float</i> (32-bit) values. Already we have increased theamount of memory required by a factor of four!<p> To actually reduce the total amount of storage, we first quantizedthe floats into 15-bit values. Though this is still almost twice theoriginal amount of storage required, with this change the subsequentcompression step, in which small coefficients are zeroed out, thenyields a net reduction in storage.<p> When writing the wavelet coefficients to disk, each value isproceeded by a flag bit that encodes whether the value is a waveletcoefficient (1) or a series of zeros (0). When the value represents aseries of zeros, the remaining 15-bits encode how many zeros in theseries.<h3>Results</h3>The biggest problem in achieving a high compression rate is inencoding the compressed image on disk. For example, compressing<code>mona.rgb</code> with a 3% loss of quality allowed us to discardabout 95% of the coefficients. The resulting file, however, was stillabout 33% the size of the original. Though we have achieved a fairlyhigh compression, it would seem that we should still be able to domuch better.<p> For future work, it would be interesting to investigate othermethods of tranforming the original two-dimensional data into aone-dimensional signal. For example, instead of simply reading thedata from left to right and top to bottom, we might try reading it ina "serpentine" order that goes first from left to right and then fromright to left as it goes down the screen, or in a space-filling-curveorder that winds through the image. Such methods might produce largerstrings of zeros, resulting in more compression. We also wanted totry using different amounts of compression on each color channel, forexample, compressing more of the blue channel (which our eyes are lesssensitive to) than the red.</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?