灰度图像分割/压缩的STC和RNAM算法实现

C++课程大作业

灰度图像压缩STC和RNAM算法

​ 传统的图像表示方法主要是二维数组(矩阵)表示方法。但由于图像处理在各方面的广泛应用和其它学科的飞速发展,对图像处理的研究提出了处理速度和存贮空间的更高要求。这样,二维数组的空间效率及其“样点—样点”的运算方式已不能适应发展的需要,取而代之的应该是既紧凑又便于做各种图像处理运算的表示方法。本项目提供灰度图像压缩的STC和RNAM算法,RNAM算法采用的是对角线优先的策略。RNAM算法和STC算法编码时间复杂度为 O(nlogn),解码时间复杂度为 O(n)。

内容列表

安装

Github Release

使用说明

程序运行示意图

  1. 打开图片:菜单栏—打开图片或在点击界面上半部分的打开图像按钮。

  2. 编辑参数:在程序界面上半部分输入算法需要的参数。

  3. 点击主界面上的Start按钮,算法即开始执行。

  4. 算法执行完毕后在主界面的下半部分查看结果。

  5. 保存图片:菜单栏—保存图片或点击界面下半部分的保存按钮。

项目结构

  • 图形化界面采用Qt开发,算法实现采用C++和OpenCV 4,测试采用Google Test。

  • 项目文件采用Visual Studio 2022

  • 类结构:

    1. Class TreeNode:树的节点,存储树的数据结构。

    2. Class Tree:内部包含树的数据结构类TreeNode,存储树的数据结构。Tree类主要提供树的方法,例如addChild、levelOrder等。

    3. Class TreeIterator: 树的迭代器。

    4. Class Algo:实现算法流程。

    5. Class Calculate:计算算法执行结果。

    6. Class DPInterface:RNAM的算法接口,图形化界面通过调用此类下面的静态函数来调用RNAM算法。

    7. Class STCInterface:STC算法接口,使用方法同上。

    8. Class Segment:存储分割有关数据,提供区域分割方法。

    9. Class Variables:存储STC算法执行时需要的输入信息,提供一部分内联函数。
    10. Class AlgoThread:创建新线程,执行算法。
    11. Class Window:图形化界面。
  • 程序流程:

    程序流程图

维护者

@liukanshan1

贡献者

感谢以下参与项目的人:

@Palettone

@kkxx0v0

@haohao1103

如何贡献

非常欢迎你的加入!提一个 Issue 或者提交一个 Pull Request。

本项目遵循 Contributor Covenant 行为规范。

使用许可

MIT License © SCUT-CS/team-11

References

2010

  1. 一种新的灰度图像表示算法研究
    郑运平, and  陈传波
    计算机学报, 2010