Git Product home page Git Product logo

jp2k_encoder_decoder_system's Introduction

模仿 JPEG2000 编写编解码器

项目github仓库地址:github仓库

参考资料:

数据集:

安装与使用

  1. 数据集准备

    请在项目根目录下创建img目录,并在其中创建src_imgtest_imgencoded_imgdecoded_img四个目录,将 kodok 数据集放在src_img目录下,最终结构如下所示:

    img
    ├─decoded_img
    ├─encoded_img
    ├─src_img
    │  │
    │  └─kodokkodim01.pngkodim02.pngkodim03.png
    │          ...
    │
    └─test_img
  2. 安装

    • 本项目使用 Python 3.9,推荐使用 Miniconda 或 Anaconda 创建一个虚拟环境:conda create -n ic python=3.9 -y
    • 激活虚拟环境:conda activate ic
    • 安装本项目所需的依赖包: pip install -r requirements.txt
  3. 使用

    • 如果需要运行 GUI 软件,请在 windows 环境下或具有桌面的 linux 下使用命令:python main.py
    • 如果需要查看代码运行案例,请查看 explain.ipynb notebook 文件

一、开发环境

运行 ipynb 文件所需的依赖包:

  • ipykernel:实现 notebook 方式
  • pandas:便于查看数据对象

核心功能所需安装的依赖包:

  • numpy
  • PyWavelets
  • pillow
  • opencv-python
  • bitarray

构建 GUI 所需的依赖包:

  • pyside6

评估编解码器性能所需的安装包:

  • scikit-image

二、主要内容

  • 编码过程
    • 色彩空间变换
    • 图像分块
    • 离散小波变换
    • 量化
    • 熵编码
    • 数据组织为二进制码流
    • 码流保存
  • 解码过程
    • 码流读取
    • 二进制码流解析
    • 逆熵编码
    • 逆量化
    • 逆离散小波变换
    • 图块合并
    • 色彩空间变换

三、GUI 设计

参考:PySide6 基础教程

使用 PySide6 来构建可视化界面。

由于需要可视化界面,因此后续开发将在 Windows 系统上进行。

工具程序所在目录:<anaconda环境根目录>\Lib\site-packages\PySide6

UI 内容:

  • 设置
    • 文件设置
      • 原图文件
      • 压缩文件
      • 解压文件
    • 压缩设置
      • 量化系数
      • 分块大小
  • 可视化展示
    • 图像展示
      • 原图
      • 压缩图像
      • 解压图像
      • 小波图像
    • 图表展示
      • 压缩率比较

常用工具:

  • designer.exe:UI 设计,用法 designer <*.ui>
  • uic.exe:根据 ui 文件生成 py 文件,用法 uic -g <python|cpp> <*.ui> -o <*.py>
  • rcc.exe:根据资源文件生成 py 文件,用法 rcc -g <cpp|python|python2> <*.qrc> -o <*.py>

四、工作进度

  • 编解码流程实现
  • 函数封装
  • 类封装
  • 用户界面封装
    • 原图像展示
    • 解码图像展示
    • 小波图像展示
    • 小波图像优化
    • 图片文件大小显示
    • 压缩率图表展示
  • 编解码器评估代码实现
  • [ ]: 编解码过程细化
    • [ ]: 直流平移
    • [ ]: 色彩分量变换
    • [ ]: 使用不同的小波变换
    • [ ]: 使用均匀标量量化
    • [ ]: EBCOT编码
      • [ ]: Tier1 层编码
      • [ ]: Tier2 层编码

五、其他说明

  • misc目录下存放了流程测试用的ipynb文件,以及部分所需的utils代码,完整的utils代码在src\core\utils.py文件中
  • scripts目录下提供便于linux(sh脚本)和windows(bat脚本)的开发脚本,也提供了运行单元测试的脚本(仅提供了基本测试),敬请参考。

jp2k_encoder_decoder_system's People

Contributors

mech-who avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.