- 李亦杨 10195101467: 后端(基于直方图的图像分析与图像增强、图像分割、图像去噪)、前端
- 刁泽皓 10195101470: 后端(图像的基本操作、图像的平滑与锐化、图像形态学操作)
- 后端在根目录下。
- 前端在目录
/static
下。 - 针对年龄变换项目的技术理解报告在
/report
下,可以直接下载pdf文件阅读已编译好的pdf文件。 - 项目功能文档为根目录下的README文件,即本文件,也可以参考前端项目的主界面介绍,可以直接在Release中下载编译完成的前端文件。
- 后端:
cd
到根目录/ImgProcess
下,使用命令flask run
启动。请勿改变后端端口。 - 前端:
cd
到目录/ImgProcess/static
下,使用命令npm run serve
启动;或者也可以在Release下载打包好的前端文件dist.zip
,解压后使用浏览器打开dist
文件夹内的index.html
文件即可。
也可以在选择好安装了Python 3.8与Vue 3的环境后,运行根目录/ImgProcess
下的run.sh
来运行。
- 前端:9091
- 后端:5000
- 前端:
- Vue: 2.6.11
- element-ui: 2.15.8
- vue-router: 3.5.4
- 后端:
- Python: 3.8
- Flask: 2.1.2
- Flask-Cord: 3.0.10
- Pillow: 9.1.1
- matplotlib: 3.5.2
- numpy: 1.22.4
- opencv-python: 4.55.64
本项目实现了基础的图片处理功能。
项目实现的功能大致可以分为以下几个部分:
- 图像的基本操作
- 基于直方图的图像分析
- 图像分割
- 图像的平滑与锐化
- 图像形态学操作
- 图像去噪
-
图像的灰度化
-
图像的二值化
-
两张图片的逻辑与操作
仅支持灰度图。
-
两张图片的逻辑或操作
仅支持灰度图。
-
图片的逻辑非操作
仅支持灰度图。
-
两张图像的加法
-
两张图像的减法
-
两张图片的乘法
-
两张图片的除法
-
图像的翻转
可自选三种反转方向:水平翻转、垂直翻转、对角翻转。
-
图像的平移
可自选平移的像素值,可自选平移的方向。
-
图像的旋转
可自选旋转的角度,实现了图像旋转后自动调整大小以防止图像部分缺失。
-
图像的放缩
可自选图像在x、y方向上的放缩比例。
-
图像的灰度直方图
同时输出灰度图中像素值的最值。
-
图像的彩色直方图
将图像b、g、r三个通道的直方图绘制于同一张图中,同时输出各自的像素值的最值。
-
图像边缘检测
实现了基于多种算子的边缘检测功能:
-
Roberts算子
支持自定义处理后的两张图像的权值与偏置。
-
Sobel算子
支持自定义处理后的两张图像的权值与偏置。
-
Laplacian算子
支持自定义高斯滤波的卷积核大小与偏差值,以及Laplacian算子的核大小。
-
LoG算子
-
Canny算子
支持自定义高斯滤波的卷积核大小与偏差值。
-
-
图像的线条变化检测
实现了基于
HoughLines
与HoughLinesP
的线条变化检测功能。
-
空域平滑
实现了多种平滑方法:
-
领域平均法
可自定义计算单元核数。
-
中值滤波法
可自定义计算单元核数。
-
-
空域锐化
实现了基于多种算子的空域锐化方法;
- Robert算子
- Laplacian算子
- Sobel算子
- Prewitt算子
-
频域平滑
实现了对灰度图的多种平滑方法:
-
理想低通滤波
可自定阈值。
-
巴特沃斯低通滤波
可自定阈值与阶数。
-
指数低通滤波
可自定阈值与阶数。
-
-
频域锐化
实现了对灰度图的多种锐化方法:
-
理想高通滤波
可自定阈值。
-
巴特沃斯高通滤波
可自定阈值与阶数。
-
指数高通滤波
可自定阈值与阶数。
-
- 腐蚀
- 膨胀
- 开运算
- 闭运算
以上功能均可自定义结构元类型与大小。
-
添加高斯噪声
-
添加椒盐噪声
可自定义椒盐噪声范围。
-
均值滤波
实现了多种滤波器:
-
算术均值滤波器
-
几何均值滤波器
-
谐波均值滤波器
可自定义滤波器大小。
以上均支持自定义滤波器大小.
-
-
统计滤波
实现了多种滤波器:
- 中值滤波器
- 最大值滤波器
- 最小值滤波器
-
频域滤波
考虑到低通滤波器、高通滤波器、带通滤波器、带阻滤波器的本质差别只在于允许通过的像素点范围,因而本项目将其综合为一个通用的频域滤波器,可自定义允许通过的一段像素范围,以及未通过的像素的新值。
基于实际应用的考虑,本项目利用Vue实现了一个前端,允许用户在手动上传图片,并跳转到所需执行的功能对应的界面后,选择已上传的图片并自定义部分参数完成对图片的处理功能。
目前而言,本项目已实现的可用于图片处理的功能主要包括:翻转、旋转、灰度化、二值化、反色、去噪、边缘检测等。