程序在Windows操作系统上使用C++编写,界面使用Qt库(版本5.9.2),编译器使用MinGW(32位)。主要的图像处理方法都写在了MainWindow类中(mainwindow.h和mainwindow.cpp)。该程序实现了彩色图像读取和格式转换、彩色图像转灰度图、直方图均衡化处理、指数增强、中值滤波、图像相加、求反、缩放、Laplace锐化、旋转、四种边缘检测算子、傅里叶频谱图、傅里叶反变换。
打开图像之后,图像会被分配一个编号,并立即以多文档窗体的形式显示在程序中。要对图像进行操作,首先在右侧图像列表中选中某个编号,然后点击上方工具栏中的设为处理目标。之后再点左侧的处理工具按钮,就是对被设为目标的图像进行处理。下方的状态栏显示了当前图像总数和正在处理的图像编号。
相加是将处理目标图像和图像列表中当前选中的图像相加。FFT反变换只能用于频谱图。本程序对非基2长宽的图像,自动调用离散傅里叶变换,速度较慢。
图 1 (从左到右)原图,Laplace锐化 ,拉普拉斯算子边缘检测
图 2 0:原图;7:灰度图;10:指数增强(0.5);11:指数增强(2);12:直方图均衡化;13:中值滤波;14:原图的傅里叶变换(平移、灰度拉伸后结果);15:傅里叶反变换
图 3 展示缩放、旋转、求反、相加
图 4 快速傅里叶变换测试
图 5 边缘检测(从左到右)原图, Roberts,Sobel,Prewitt,Laplacian
fourier.cpp和fourier.h改写自谭升(Tony)的DIPpro;icons文件夹下所有图标来自阿里巴巴矢量图标库iconfont