基于高斯滤波与脊追踪的Canny边缘检测器实现
项目介绍
本项目实现了一个完整的Canny边缘检测算法,能够将输入的二维灰度图像转换为清晰的二值边缘图。算法通过对高斯滤波平滑、梯度计算、脊线追踪和双阈值边缘链接等关键步骤的精细优化,在有效抑制噪声的同时保持了边缘细节的完整性。
功能特性
- 高斯滤波平滑降噪:使用可配置标准差的高斯滤波器对输入图像进行平滑处理
- 梯度与方向计算:通过Sobel算子计算像素点的梯度幅值和边缘方向
- 脊线追踪与非极大值抑制:沿边缘垂直方向进行脊线追踪,仅保留局部梯度最大值
- 双阈值边缘链接:采用高低阈值策略连接边缘片段,有效减少伪边缘和断裂边缘
使用方法
% 基本使用示例
inputImage = imread('input.jpg');
edgeMap = main(inputImage);
% 自定义参数使用
sigma = 1.5; % 设置高斯滤波标准差
edgeMap = main(inputImage, sigma);
输入参数:
inputImage:二维灰度图像矩阵(支持uint8、double等格式)sigma(可选):高斯滤波器标准差,默认值为1.0
输出结果:
- 二值边缘图像矩阵(逻辑类型),边缘像素值为1,非边缘像素值为0
系统要求
- MATLAB R2016b或更高版本
- Image Processing Toolbox(图像处理工具箱)
文件说明
主程序文件整合了完整的Canny边缘检测流程,包括图像预处理、梯度计算、非极大值抑制和双阈值处理等核心模块。它负责协调各算法组件的执行顺序,处理参数设置与验证,并最终生成符合标准的边缘检测结果。该文件提供了灵活的接口支持,用户可通过简单调用实现高质量的边缘提取功能。