基于MATLAB的多功能图像预处理与形状识别系统
项目简介
本项目是一个基于MATLAB平台开发的综合性数字图像处理与分析系统。该系统集成了图像处理领域的多种经典算法,涵盖了从基础的灰度变换、噪声去除、图像复原,到高级的小波分析、形态学处理以及基于几何特征的自动形状识别。代码采用模块化设计,通过一个主入口函数依次演示六大核心功能,旨在直观展示不同算法在改善图像质量和提取特征信息方面的效果,适用于计算机视觉算法的验证与演示。
功能特性
本项目包含六个独立但逻辑递进的功能模块,每个模块针对特定的图像处理任务:
1. 图像灰度变换与对比度增强
该模块主要用于改善图像的视觉效果,通过调整灰度级分布来增强对比度。
- 线性变换:通过线性拉伸公式(斜率k=1.5,截距b=-0.2)扩展图像的动态范围。
- 非线性变换:
*
对数变换:扩展图像中的暗像素值,增强暗部细节。
*
指数变换 (Gamma校正):使用Gamma=0.5对图像进行非线性映射。
- 直方图均衡化 (HE):自动重新分配像素值,使直方图分布趋于均匀,显著增强图像全局对比度。
2. 图像滤波 (空间域与频域)
该模块演示了如何在不同域中去除图像噪声,保留重要细节。
- 噪声模拟:分别为图像添加椒盐噪声和高斯噪声以模拟真实环境退化。
- 空间域滤波:
*
中值滤波:利用3x3窗口有效去除椒盐噪声,同时保护边缘。
*
均值滤波:平滑图像,但会产生一定的模糊。
*
高斯滤波:针对高斯噪声进行平滑处理。
*
巴特沃斯低通滤波器:通过快速傅里叶变换 (FFT) 将图像变换到频域,应用2阶巴特沃斯低通滤波器截断高频噪声(截止频率D0=30),最后通过逆傅里叶变换 (IFFT) 重构图像。
3. 图像复原
该模块建立图像退化模型并使用逆过程恢复图像清晰度。
- 退化模型:模拟运动模糊(长度21,角度11度)并叠加高斯白噪声。
- 维纳滤波 (Wiener Filtering):计算信号功率与噪声功率的比值(信噪比估算),使用
deconvwnr函数进行最小均方误差复原,相比直接逆滤波能更有效地抑制噪声放大。
4. 小波变换
该模块利用多分辨率分析技术处理图像。
- 离散小波变换 (DWT):使用
haar 小波基对图像进行单层二维分解。 - 多尺度系数可视化:将图像分解为四个频带:
*
近似分量 (LL):图像的低频概貌。
*
水平细节 (LH):强调水平方向边缘。
*
垂直细节 (HL):强调垂直方向边缘。
*
对角细节 (HH):强调对角线纹理。
5. 形态学处理
该模块应用于二值图像的几何结构调整与骨架提取。
- 数据构建:生成带有随机噪点和中心孔洞的合成二值图像。
- 基础运算:
*
腐蚀 (Erosion):收缩目标区域,消除边界微小突起。
*
膨胀 (Dilation):扩张目标区域,填补边界凹陷。
*
开运算 (Open):先腐蚀后膨胀,成功去除孤立的小噪点。
*
闭运算 (Close):先膨胀后腐蚀,有效填充物体内部的孔洞。
- 骨架提取:将二值图像细化为单像素宽度的骨架,提取目标的拓扑结构。
6. 形状识别系统
该模块实现了从图像输入到几何形状分类的完整流程。
- 样本生成:自动生成包含矩形、圆形、三角形的合成图像,并施加椒盐噪声干扰。
- 预处理流水线:
* 使用中值滤波去除噪声。
* 应用Canny算子进行边缘检测。
* 使用填充算法 (
imfill) 将边缘转化为实心区域。
- 特征提取:利用连通域分析 (
regionprops) 计算每个目标的面积、周长、质心、外接矩形、凸度 (Solidity) 和占空比 (Extent)。 - 自动分类逻辑:
*
圆形判定:基于圆度公式 (4 * pi * Area / Perimeter^2),阈值设为 > 0.85。
*
矩形判定:基于占空比 (Extent),阈值设为 > 0.8。
*
三角形判定:结合高凸度 (> 0.8) 和较低的占空比 (< 0.7)。
- 结果可视化:在图像上绘制分类结果的边界框、质心位置及类别标签。
关键算法与实现细节分析
- 自适应环境检测
代码开头包含异常处理机制,如果在当前路径下找不到标准测试图(如
pout.tif),会自动生成合成图像作为替代,增强了代码的鲁棒性。
- 频域滤波实现
在模块2中,通过
fftshift将零频分量移至频谱中心,构建距离矩阵
D来生成中心对称的滤波器传递函数
H,展示了标准的频域处理流程。
- 形状分类器的几何特征度量
模块6摒弃了复杂的深度学习方法,采用了经典的几何特征工程。
*
圆度 (Circularity):利用等周不等式原理,圆的该指标最接近1。
*
占空比 (Extent):目标面积与其外接矩形面积之比,矩形的该指标接近1,而三角形约为0.5。
*
凸度 (Solidity):目标面积与其凸包面积之比,用于区分凹多边形和凸多边形(如三角形和矩形均为高凸度,需结合占空比区分)。
系统与环境要求
- 软件版本:MATLAB R2016a 及以上版本。
- 工具箱依赖:
* Image Processing Toolbox (图像处理工具箱)
* Wavelet Toolbox (小波工具箱)
* Signal Processing Toolbox (部分基础信号处理函数)
使用方法
- 确保MATLAB已正确安装上述必需的工具箱。
- 将
main.m 文件放置于MATLAB的当前工作目录下。 - 确保目录下存在或MATLAB路径中包含以下标准测试图像文件(如缺失,代码会尝试使用备用逻辑或报错,建议准备好素材):
*
pout.tif
*
cameraman.tif
*
peppers.png
- 在MATLAB命令行窗口输入
main 并回车。 - 系统将依次弹出6个窗口,分别展示各模块的处理结果。