mikewang
V2EX  ›  Java

从零开始写一个 JPEG 编码器需要学习哪些知识?

  •  
  •   mikewang ·
    MikeWang000000 · Feb 23, 2022 · 4234 views
    This topic created in 1719 days ago, the information mentioned may be changed or developed.

    双非软件工程专业,毕业设计本想写一个 Huffman 编码器,简单又好水论文。结果提交给导师时,导师嫌我题太简单,把我的毕设题改成了 JPEG 编码器,然后直接提交系统了。

    现在我是没接触过图像编码或者处理(学校软件工程没开相关的课),就得从零开始学习,请问学些什么开始比较容易入手?

    17 replies  •  2022-02-24 14:31:41 +08:00
    misaka19000
    misaka19000
    Feb 23, 2022❤️1
    1
    先把 JPEG 协议读一下?
    3dwelcome
    3dwelcome
    Feb 23, 2022❤️1
    2
    JPEG 编码需要转换到频域操作,完全没学过,从头开始还是挺繁琐的,概念和细节很多。

    你不如和导师建议,把 JPEG 改成 PNG 编码器,反正都是邻居。

    PNG 也就是 Huffman 套个马甲,那个简单多了。
    westoy
    westoy
    Feb 23, 2022❤️1
    3
    我要没记错,jpg 就是基于 huffman 编码的........
    krixaar
    krixaar
    Feb 23, 2022❤️1
    4
    前几天 ytb 莫名其妙的算法刚推给我一个 jpeg 科普:
    看完感觉好像确实懂了一点
    duke807
    duke807
    Feb 23, 2022 via Android❤️1
    5
    @krixaar
    +1 ,我也收到這個推送,大概看了一下,還要抽時間再仔細看一下算法那一段
    jamesfreeman
    jamesfreeman
    Feb 23, 2022❤️1
    6
    jpeg 的原理上是不复杂的,看懂 DCT (离散余弦变换)即可。可以参考:
    更数学一点的话,可以看大名鼎鼎的 Gilbert Strang 的线性代数中的这一课:
    thedrwu
    thedrwu
    Feb 23, 2022 via Android❤️1
    7
    学个 DCT 就够了
    mikewang
    mikewang
    OP
    Feb 23, 2022
    8
    #2 @3dwelcome 感谢建议,如果 JPEG 确实不好做的话,我去再去找导师想办法。因为毕设题提交系统就不太好改了...有点尴尬(导师说,题目小改一下,JPEG 有什么难的 啊这)

    #3 @krixaar 感谢!我去看一看

    #6 @jamesfreeman 谢谢资料,学习学习

    #7 @thedrwu 感谢指路
    coderluan
    coderluan
    Feb 23, 2022❤️1
    9
    直接改 libjpeg 或者上 github 找个就行了,改下文件结构函数名之类的,没必要自己写,本科毕设并没有什么实际价值,让导师面子上过的去就行了,怎么省事怎么来就行。
    mikewang
    mikewang
    OP
    Feb 23, 2022
    10
    #9 @coderluan 哈哈哈真实,是这样的,不过至少得学点东西,答辩也有得讲,不然太假了
    est
    est
    Feb 23, 2022❤️2
    11
    @westoy JPEG 其实按标准除了 Huffman table 还得支持 arithmetic coding 。但是这玩意当年 JPEG 和 IBM 有专利卡着,所以 netscape 和微软等厂家就不支持。结果流行的 jpeg 容器都仅支持 Huffman 了。


    jpeg 这玩意麻烦之处还在于可以搞多个 pass 。我是不想碰。
    booboo
    booboo
    Feb 23, 2022❤️1
    12
    编解码的核心就那点东西,其他罗罗嗦嗦的规格慢慢读标准就可以。至于本科论文,搞个开源库研究清楚转换一下应该也可以过得去
    AyaseEri
    AyaseEri
    Feb 23, 2022❤️1
    13
    huffman 那都是数据压缩这一步了,前面还有各种滤波去除人眼不敏感的信息
    murmur
    murmur
    Feb 23, 2022❤️1
    14
    jpeg 编码开源的太多了,出成果完全不是问题,你现在就是学习理论知识完善论文

    本科就不求创新了,这个东西的难点在于,你咋提现工作量啊,我不认为现在一般本科生有写出无 bug jpeg 编解码的能力

    工程和理论差太多了
    mikewang
    mikewang
    OP
    Feb 23, 2022
    15
    #14 @murmur 其实导师要求有个成果,然后把毕业设计所需要的材料论文等都写好就行。而且也比较隐晦的提示了,如果真写不出来,调库或者引用开源代码都是可以的。其实也就是为了毕业。
    当然,我还是想学点东西的,工作量估计大多还是在论文上吧。
    bitdepth
    bitdepth
    Feb 24, 2022❤️1
    16
    教你最簡單的,用硬體加速器。Hantro H1/G1 的 JPEG encoder/decoder 在好多設備上有,暫存器也是半公開的。
    基本上就填寫一個 JPEG header 就完工了,而且有可以看起來很複雜,都用硬體實現了
    mikewang
    mikewang
    OP
    Feb 24, 2022
    17
    #16 @bitdepth 哈哈哈哈 确实能行 不过这样我论文就没东西写了(作为备用手段记下来了)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1599 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 12:33 · PVG 20:33 · LAX 04:33 · JFK 07:33
    ♥ Do have faith in what you're doing.