图像处理——blackfin 533(九)
0赞边缘检测常用的算子有:Roberts算子、Sobel算子、Prewitt算子和拉普拉斯算子。其中Sobel是最常用的边缘检测器使用的算子,它采用3x3邻域可以避免在像素之间内插点上计算梯度。利用几种不同的算法进行比较之后发现边缘检测伪边缘点比较少,效果比较好。Sobel是一种计算梯度幅值的算子:
Sobel边缘检测算子使用两个模板,(一个水平的,一个是垂直的),每一个逼近一个偏导数:
因此,上式中偏导数对的计算公式为:
其中ai,i=0,2...7为某像素点的邻域像素的灰度值。
Sobel算子实现思路如下:对输入图像分别使用水平和垂直模板做卷积计算,对得到的两个处理结果求平方和,该平方和与阈值的平方比较。只有当某点的两种卷积的平方大于阈值的平方,且水平占优(水平模板卷积结果大于垂直模板卷积的结果,且该点的卷积平方大于其左右两点的卷积平方和)或者垂直占优(垂直模板卷积的结果大于水平模板卷积的结果,且该点的卷积平方和大于其上下两点的卷积平方和)时,该点的输出结果为255,否则为0。输出的结果为二值图像。第一行和最后一行本来就是图像边界,不包括可用信息,因此相应的输出为0,按照这个思路课题编写了相应的Sobel算子实现程序,程序流程图如下图所示:
Sobel算子边缘检测程序流程图
课题对编写完的程序进行了测试,程序中阈值为966,测试效果如下图所示:
(a)原始图片 (b)边缘检测后的图片
BF533边缘检测效果