一、了解边缘检测
边缘检测的目的是标识数字图像中亮度变化明显的点。图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。常用的边缘检测模板有Laplacian算子、Roberts算子、Sobel算子、log(Laplacian-Gauss)算子、Kirsch算子和Prewitt算子等。
Sobel算子是常用的边缘检测模板,算法比较简单,实际应用中效率比 canny 边缘检测效率要高,但是边缘不如 Canny 检测的准确.
边缘检测效果:
二、边缘检测原理
Sobel 边缘检测提供了x水平和y垂直两个方向的滤波模板
,可以只检测竖直边缘或垂直边缘或都检测。
实现步骤:
1.采用上面的模板对原图像A 进行卷积。得到 Gx 为水平横向梯度幅值,Gy为垂直方向梯度幅值。(梯度:灰度值的变化情况,梯度幅值相当于2个相邻像素灰度值之间的差异。)
2. 由横向灰度值 Gx 和纵向灰度值 Gy,计算该点的灰度值:
FPGA是不擅长做平方和开根运算的,可以采用近似计算方法:
梯度方向的计算: