基于Canny算子的图像边缘检测系统
项目介绍
本项目实现了一个完整的Canny边缘检测系统,能够对输入的灰度图像进行自动、精确的边缘提取。系统严格遵循Canny算法的经典流程,通过高斯滤波去噪、Sobel算子计算梯度、非极大值抑制细化边缘以及双阈值连接边缘等步骤,有效平衡噪声抑制与边缘保留,最终生成高质量的二值边缘图像。用户可根据实际场景调整关键参数,以获得最佳检测效果。
功能特性
- 完整算法流程:完整实现了Canny边缘检测的四个核心模块:高斯滤波、梯度计算、非极大值抑制和双阈值检测。
- 噪声鲁棒性:采用高斯滤波平滑图像,有效抑制噪声干扰,避免误检。
- 边缘精确定位:通过非极大值抑制技术细化边缘,确保边缘宽度仅为单像素,提高定位精度。
- 边缘连接优化:使用双阈值机制连接强边缘并过滤弱边缘与噪声,有效减少边缘断裂。
- 多格式输入支持:支持常见的图像格式(如.jpg, .png, .bmp)作为输入。
- 辅助输出:除最终的二值边缘图外,还提供边缘强度分布图和梯度方向图,便于分析和调试。
- 参数可调:用户可自定义高斯滤波核大小、标准差以及双阈值参数,以适应不同图像特性与应用需求。
使用方法
- 准备输入图像:确保待处理的图像为单通道灰度图。若为彩色图像,请先进行灰度化转换。
- 设置参数:在主程序运行前,可根据需要修改高斯滤波参数(核大小、标准差)和双阈值参数(高阈值、低阈值)。
- 运行程序:执行主程序。系统将自动完成边缘检测的全部流程。
- 查看结果:程序运行后,将自动显示并保存三幅结果图像:
*
edge_map.png:最终的二值边缘检测结果图。
*
gradient_magnitude.png:边缘强度分布图。
*
gradient_orientation.png:梯度方向图。
系统要求
- 操作系统:Windows / Linux / macOS
- 软件环境:MATLAB R2016a 或更高版本
- 硬件建议:为确保计算效率,建议处理图像的分辨率在1000×1000像素以内。
文件说明
主程序文件整合了整个边缘检测系统的核心流程。其主要功能包括读取输入的灰度图像,依次调用高斯滤波器进行平滑去噪、使用Sobel算子计算图像的梯度幅值与方向、对梯度幅值进行非极大值抑制以细化边缘轮廓,并最终应用双阈值处理来连接真实的边缘并抑制虚假响应。完成所有计算后,该文件负责将生成的边缘图、梯度强度图及方向图进行可视化显示并保存至当前目录。