1.边缘检测类型和基本原理
在图像处理中,图像边缘常包括三种模型
1).台阶模型:相邻两个像素的灰度值快速变化;如:在离散灰度图像中,灰度值为...0,0,255,255,...就可视为台阶模型;
2).斜坡模型:图像中从亮到暗(或暗到亮)呈现一个类似于斜坡,如在离散灰度图像灰度:...,0,50,100,150,200,255,255...;
3).屋顶模型:...0,0,80,160,255,160,80,0,0,0...
如下图所示
基本原理
边缘检测简单来说,就是对图像进行按模板进行卷积;边缘在图像上一般就表示为明暗交接的地方,从上面的图中看出,若我们将图像看为一个连续可导的函数,那么,对边缘检测,就是求突变的位置,在数学上,我们对这样连续可导图像是通过求导,因此,边缘也是通过同样的原理。但由于图像是离散矩阵形式,求导采用微分的形式。边缘检测中常见的数学方法如下图所示
2.常见的边缘检测算子
2.1Roberts算子
当对对角线方向的边缘感兴趣时,需要一个二维模板,Roberts交叉梯度算子是最早尝试使用这样的具有对角优势的二维算子,具体的函数实现如下
#传入灰度图像 #返回处理后图像 def robert(self,img): #获取边界模板 roberX=roberY=np.zeros((2,2)) roberX[0][0]=-1;roberX[1][1]=1 roberY[0][1]=-1;roberY[1][0]=1 #计算图像大小 m,n=np.shape(img) gx=0 gy=0 M=img[:] for i in range(m): for j in range(n): gx=np.sum(img[i:i+2,j:j+2]*roberX) gy=np.sum(img[i:i+2,j:j+2]*roberY) M[i][j]=abs(gx)+abs(gy) return M