苦苦挣扎了5个月的毕业论文,从2007.1~2007.5,最后的结果竟是一个闹剧:让我啼笑皆非的jpeg压缩结果。拖佛的洪福,好歹还是有了结果,估计是huffman表出问题了,现在没有时间继续做了,只能写毕业论文了。呵呵,也算了了我一个心愿啊!
目 录
摘要 I
Abstract II
第一章 绪论 1
第二章 压缩算法 3
2.1 数据压缩概述 3
2.2 Huffman压缩算法 4
2.3 动态Huffman压缩算法 5
2.4 范式Huffman压缩 7
2.5 Run-Length编码 8
2.6 JPEG压缩算法 8
第三章 JPEG标准 9
3.1 JPEG概述 9
3.2 JPEG编码流程 9
3.3 DCT余弦变化 10
3.4 量化 11
3.5 行程编码 12
3.6 熵编码 12
第四章 BMP文件分析 15
4.1 BMP概述 15
4.2 位图文件存储格式 15
4.3 BitmapFileHeader 16
4.4 BitmapInfo 17
4.5 BitmapInfoHeader 17
4.6 BitmapData 18
4.7 保存位图为文件 18
4.8 从文件加载位图 18
第五章 JPEG文件分析 19
5.1 SOI 19
5.2 APP0 19
5.3 DQT 20
5.4 SOF0 20
5.5 DHT 21
5.6 SOS 22
5.7 EOI 23
5.8 数据分析 23
第六章 JPEG实现 26
6.1 bitmap模块 26
6.2 fdct模块 27
6.3 quantization模块 27
6.4 rle模块 28
6.5 entropy模块 29
6.6 encoder模块 29
6.7 jpeg模块 29
第七章 结束语 31
参考文献 32
附录 33
附录A 经典Huffman编码实现 34
A.1 IEncoder界面 34
A.2 IEncoder实现 34
A.3 BaseNode 35
A.4 HNode 36
A.5 HuffTree 37
A6. IOAgent界面 44
A7. IOAgent实现 45
附录B 动态Huffman编码实现 49
B.1 DHNode 49
B.2 DynamicHuffTree 50
附录C DCT余弦变换实现 55
C.1 IDCT 55
C.2 FDCT 56
C.3 BDCT 56
附录D 量化实现 57
D.1 IQuantization 57
D.2 YQuantization 58
D.3 YDeQuantization 59
D.4 UVQuantization 60
D.5 UVDeQuantization 61
附录E 行程编码实现 62
E.1 ZigZag 62
E.2 RLE 63
附录F JPEG实现 66
F.1 JPEG界面 66
F.2 JPEG实现 66
F.3 JPEGObjectFactory界面 68
F.4 JPEGObjectFactory实现 68
附录G BMP文件操作实现 69
G.1保存位图为文件 69
G.2从文件加载位图 70
//================================================================
code counter,winlin
(统计程序员编写的代码行数,c/c++/c#)
[0:29 2007-1-6]
winlin,枚举所有文件和目录,统计代码行数:
//================================================================
文件D:\Documents\UniLabs\paper\projects\bitmap\DIB.cpp[238行代码]
文件D:\Documents\UniLabs\paper\projects\bitmap\DIB.h[51行代码]
文件D:\Documents\UniLabs\paper\projects\bitmap\loader.cpp[46行代码]
文件D:\Documents\UniLabs\paper\projects\bitmap\resource.h[23行代码]
文件D:\Documents\UniLabs\paper\projects\encoder\Encoder.cpp[278行代码]
文件D:\Documents\UniLabs\paper\projects\encoder\Encoder.h[1615行代码]
文件D:\Documents\UniLabs\paper\projects\encoder\loader.cpp[122行代码]
文件D:\Documents\UniLabs\paper\projects\entropy\entropy.cpp[307行代码]
文件D:\Documents\UniLabs\paper\projects\entropy\entropy.h[315行代码]
文件D:\Documents\UniLabs\paper\projects\entropy\loader.cpp[10行代码]
文件D:\Documents\UniLabs\paper\projects\fdct\DCT.CPP[20行代码]
文件D:\Documents\UniLabs\paper\projects\fdct\DCT.h[126行代码]
文件D:\Documents\UniLabs\paper\projects\fdct\loader.cpp[34行代码]
文件D:\Documents\UniLabs\paper\projects\jpeg\ColorAgent.h[91行代码]
文件D:\Documents\UniLabs\paper\projects\jpeg\JPEG.cpp[364行代码]
文件D:\Documents\UniLabs\paper\projects\jpeg\JPEG.h[50行代码]
文件D:\Documents\UniLabs\paper\projects\jpeg\loader.cpp[13行代码]
文件D:\Documents\UniLabs\paper\projects\quantization\loader.cpp[52行代码]
文件D:\Documents\UniLabs\paper\projects\quantization\Quantization.cpp[31行代码]
文件D:\Documents\UniLabs\paper\projects\quantization\Quantization.h[309行代码]
文件D:\Documents\UniLabs\paper\projects\rle\loader.cpp[80行代码]
文件D:\Documents\UniLabs\paper\projects\rle\RLE.CPP[20行代码]
文件D:\Documents\UniLabs\paper\projects\rle\RLE.H[261行代码]
总代码行数:4456行

图1 原图像

图2 被我压的面目全非的灰度图像

图3 没有实现的彩色图像
按照人月神话的分析:
1.是否有清晰的目标?是的,jpeg压缩。
2.是否有技术准备?没有。
3.是否有资源?是的,很多。
4.是否有足够的人力?是的,我足够了。
5.是否有足够的时间?不是的,要写论文了,有点不足。
6.是否有组织有交流?这个没概念,一个人而已。
因此,时间和技术不足,让这个工程成为了闹剧--啼笑皆非,我再次感叹。
发表于 @ 2007年05月15日 14:09:00|评论(loading...)|编辑