基于Canny算子的自适应边缘检测系统
项目介绍
本项目实现了经典的Canny边缘检测算法。通过完整的工作流程(高斯平滑、梯度计算、非极大值抑制、双阈值连接),将输入的灰度图像转换为高质量的二值边缘图。系统支持通过调节高斯核标准差(sigma)参数,自适应地控制图像平滑程度,从而在抑制噪声与保留真实边缘之间取得平衡。
功能特性
- 多尺度高斯平滑:使用可配置的sigma参数构建高斯滤波器,有效滤除图像噪声。
- 梯度幅值与方向计算:采用Sobel算子进行卷积,精确计算图像梯度,并对梯度方向进行量化分类。
- 非极大值抑制:沿梯度方向细化边缘,精准定位边缘像素。
- 自适应双阈值滞后连接:通过高、低阈值机制连接边缘片段,动态保证边缘的连续性。
使用方法
- 准备一张灰度图像(uint8类型的M×N矩阵)。
- 调用主函数,输入图像矩阵和期望的sigma值(推荐范围0.5~3.0)。
- 函数返回二值边缘图(logical矩阵),其中边缘像素标记为true。
- (可选)可获取中间结果,包括梯度幅值图(double矩阵)和量化后的梯度方向图。
系统要求
- 运行环境:MATLAB
- 依赖:仅需基础MATLAB函数库,无额外工具箱依赖。
文件说明
主程序文件封装了Canny边缘检测算法的全部核心逻辑。它负责读取输入参数,依次执行高斯滤波平滑、梯度计算与方向量化、非极大值抑制以及基于双阈值的边缘连接等关键步骤,并最终输出处理后的二值边缘图像。此外,该文件也提供了获取梯度幅值与方向等中间结果的可选功能。