使用C++11及以上的特性,多线程执行高斯模糊、边缘检测和亮度提取的PNG图像处理程序。
启动exe或编译运行,进入命令行界面,支持如下指令
blur [from_path] [to_path]
高斯模糊(输出半分辨率)edge [from_path] [to_path]
边缘检测bright [from_path] [to_path]
亮度提取all [from_path] [to_path]
以上全部执行
其中 [from_path] [to_path]
可以省略,默认的路径分别为 "../source/"
和 "../result/"
。
对于 bright
以及 all
,需要额外提供一个亮度阈值参数(0-255)。
main.cpp
: 接收用户输入,调用PNGManager
接口PNGManager.h
: 储存路径,创建PNGBuffer
,分配多线程执行PNGMethod
PNGBuffer.h
: 依赖loadpng
库编解码图片,储存图片缓冲数据PNGMethod.h
: 定义图片处理方法
- 高斯模糊
- 边缘检测
- 在高斯模糊基础上,转灰度图
- 然后只计算R通道,对 sobel kernel 分离核函数
- 第一遍一次采样,输出 Gx_Horizontal 和 Gy_Horizontal,然后分别对这两个 buffer 计算最终 Gx 和 Gy,最后合并
- 上采样并输出
- 亮度提取
- 在降采样灰度图上计算
- 暂时只支持RGBA8格式PNG。