双非软件工程专业,毕业设计本想写一个 Huffman 编码器,简单又好水论文。结果提交给导师时,导师嫌我题太简单,把我的毕设题改成了 JPEG 编码器,然后直接提交系统了。
现在我是没接触过图像编码或者处理(学校软件工程没开相关的课),就得从零开始学习,请问学些什么开始比较容易入手?
1
misaka19000 2022-02-23 13:59:37 +08:00 1
先把 JPEG 协议读一下?
|
2
3dwelcome 2022-02-23 14:01:27 +08:00 1
JPEG 编码需要转换到频域操作,完全没学过,从头开始还是挺繁琐的,概念和细节很多。
你不如和导师建议,把 JPEG 改成 PNG 编码器,反正都是邻居。 PNG 也就是 Huffman 套个马甲,那个简单多了。 |
3
westoy 2022-02-23 14:01:32 +08:00 1
我要没记错,jpg 就是基于 huffman 编码的........
|
4
krixaar 2022-02-23 14:03:03 +08:00 1
前几天 ytb 莫名其妙的算法刚推给我一个 jpeg 科普: 看完感觉好像确实懂了一点
|
6
jamesfreeman 2022-02-23 14:05:52 +08:00 1
jpeg 的原理上是不复杂的,看懂 DCT (离散余弦变换)即可。可以参考: 更数学一点的话,可以看大名鼎鼎的 Gilbert Strang 的线性代数中的这一课:
|
7
thedrwu 2022-02-23 14:16:27 +08:00 via Android 1
学个 DCT 就够了
|
8
mikewang OP #2 @3dwelcome 感谢建议,如果 JPEG 确实不好做的话,我去再去找导师想办法。因为毕设题提交系统就不太好改了...有点尴尬(导师说,题目小改一下,JPEG 有什么难的 啊这)
#3 @krixaar 感谢!我去看一看 #6 @jamesfreeman 谢谢资料,学习学习 #7 @thedrwu 感谢指路 |
9
coderluan 2022-02-23 14:25:31 +08:00 1
直接改 libjpeg 或者上 github 找个就行了,改下文件结构函数名之类的,没必要自己写,本科毕设并没有什么实际价值,让导师面子上过的去就行了,怎么省事怎么来就行。
|
11
est 2022-02-23 15:12:56 +08:00 2
@westoy JPEG 其实按标准除了 Huffman table 还得支持 arithmetic coding 。但是这玩意当年 JPEG 和 IBM 有专利卡着,所以 netscape 和微软等厂家就不支持。结果流行的 jpeg 容器都仅支持 Huffman 了。
jpeg 这玩意麻烦之处还在于可以搞多个 pass 。我是不想碰。 |
12
booboo 2022-02-23 16:31:25 +08:00 1
编解码的核心就那点东西,其他罗罗嗦嗦的规格慢慢读标准就可以。至于本科论文,搞个开源库研究清楚转换一下应该也可以过得去
|
13
AyaseEri 2022-02-23 16:33:31 +08:00 1
huffman 那都是数据压缩这一步了,前面还有各种滤波去除人眼不敏感的信息
|
14
murmur 2022-02-23 16:52:40 +08:00 1
jpeg 编码开源的太多了,出成果完全不是问题,你现在就是学习理论知识完善论文
本科就不求创新了,这个东西的难点在于,你咋提现工作量啊,我不认为现在一般本科生有写出无 bug jpeg 编解码的能力 工程和理论差太多了 |
15
mikewang OP #14 @murmur 其实导师要求有个成果,然后把毕业设计所需要的材料论文等都写好就行。而且也比较隐晦的提示了,如果真写不出来,调库或者引用开源代码都是可以的。其实也就是为了毕业。
当然,我还是想学点东西的,工作量估计大多还是在论文上吧。 |
16
bitdepth 2022-02-24 10:14:55 +08:00 1
教你最簡單的,用硬體加速器。Hantro H1/G1 的 JPEG encoder/decoder 在好多設備上有,暫存器也是半公開的。
基本上就填寫一個 JPEG header 就完工了,而且有可以看起來很複雜,都用硬體實現了 |