SuperResolution-CoreLight用于“芯光”队的项目管理以及进展的记录,其主要包含软件模块 (Software)、硬件模块 (Hardware)、相关文档和资源汇总(Resources) 、**会议讨论和项目进展的记录 (Progress.md)**等方面。下面分别队不同模块的功能进行介绍。
主要用于维护项目中软件开发相关的工程,包含针对超分辨率问题的不同实现算法、实现语言和实现方式,此外还包含针对开发板中硬核的嵌入式开发,具体组织和描述如下:
Edge-Directed_Interpolation:存放NEDI (New Edge directed Interpolation) 的Python实现代码,目前包含了图片降采样、各类线性插值算法、原始版本的NEDI算法、加入了边缘检测算法的NEDI算法的实现,未来将继续针对NEDI进行优化。此外还包含PSNR、SSIM指标的计算。
wavelet_super_resolution:使用matlab实现了利用小波变换来完成超分辨率的算法,通过实验发现结果不太好,具体原因有待进一步研究。(原项目地址:https://github.com/rteammco/wavelet-super-resolution-tests)
zoom:使用C语言实现了对BMP和JPEG文件的操作,实现了针对JPEG文件的最邻近插值算法(流式处理、多线程)、简单二次线性插值算法(流式处理、多线程)、双三次插值算法(流式处理)。
主要用于维护项目中硬件相关的工程,主要包括针对超分辨率算法的硬件实现、外围硬件的实现等。
汇总在项目进行中收集到的有用的资料,方便队员之间的资源共享。
Progress.md主要用于记录队伍的进展情况、遇到的问题和接下来的计划,即时总结和归纳问题,确保队伍沿着正确的方向前进。
本部分主要介绍如何快速部署和使用软件模块 (Software)和硬件模块 (Hardware)。
- Ubuntu 18.04
- gcc 7.5.0
- Python 3.6.9
- Tensorflow 2.6.2
- Opencv 4.5.5.62
- Matlab
-
Zoom
可以在Makefile文件中加入对-DTEST_MODE参数来完成对宏定义TEST_MODE的赋值,TEST_MODE可以选择以下不同的模式:
- 0:使用 jpeg_zoom 整幅图读入缩放(临近点插值)
- 1:使用 jpeg + zoom 流模式缩放(临近点插值、双线性插值、双三次插值)
- 2:使用 jpeg + zoom 整图加载多线程处理模式(临近点插值、双线性插值)
- 3:用于测试对BMP图片(24bpp、32bpp)的操作(读、写)
make libs # 用于构建对JPEG图片操作的库
make target # 完成应用程序的构建
- Edge-Directed_Interpolation (Python)
python3 edi_gray.py # 完成针对灰度图像的NEDI插值
python3 edi_rgb.py # 完成针对RGB图像的NEDI插值,可以配置边缘检测算法
python3 inedi_rgb.py # 完成针对RGB图像的改进NEDI插值算法(还存在问题)
- wavelet_super_resolution (Matlab)
run % 使用DWT算法完成图像超分辨率算法
testSRAlgorithms % 运行各类基于小波变换的图像超分辨率算法
- Zoom (C)
- TEST_MODE = 0 (整幅图读入缩放)
./app 缩放文件 缩放倍数(0~1缩小,等于1不变,大于1放大) ./app ./in.jpg 0.25 // 完成对in.jpg图片使用最近距离插值缩小4倍 ./app ./in.jpg 4 // 完成对in.jpg图片使用最近距离插值放大4倍
- TEST_MODE = 1 (流模式缩放)
./app 缩放文件 缩放倍数(0~1缩小,等于1不变,大于1放大) 缩放方式(0/近距离插值 1/双线性插值 2/双三次插值) ./app ./in.jpg 0.25 0 // 完成对in.jpg图片使用最近距离插值缩小4倍 ./app ./in.jpg 5.0 1 // 完成对in.jpg图片使用双线性插值放大5倍 ./app ./in.jpg 4.0 2 // 完成对in.jpg图片使用双三次插值放大4倍
- TEST_MODE = 2 (整图加载多线程处理模式)
./app 缩放文件 缩放倍数(0~1缩小,等于1不变,大于1放大) 缩放方式(0/近距离插值 1/双线性插值) ./app ./in.jpg 0.25 0 // 完成对in.jpg图片使用最近距离插值缩小4倍 ./app ./in.jpg 5.0 1 // 完成对in.jpg图片使用双线性插值放大5倍
- TEST_MODE = 3 (BMP图片(24bpp、32bpp)的读写操作)
./app 源BMP文件 目标BMP文件 // 测试BMP(24bpp,32bpp)的读取和写入功能的正确性 ./app ./in.bmp ./out.bmp // 读取24bpp的in.bmp文件并将其重新写入到out.bmp文件中 ./app ./in_32.bmp ./out_32.bmp // 读取32bpp的in_32.bmp文件并将其重新写入到out_32.bmp文件中
- TEST_MODE = 0 (整幅图读入缩放)
- Vivado 2018.3
- lenna (512*512)
方法 | PSNR | SSIM |
---|---|---|
Linear | 24.310425 | 0.6465203 |
Bicubic | 23.659489 | 0.62899595 |
NEDI | 26.702093 | 0.70439243 |
NEDI_Sobel | 26.70276 | 0.7044268 |
NEDI_Lenna | 26.514889 | 0.6937633 |