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...

如下图所示

常见边缘检测算子极其实现(基于Python和OpenCV)

基本原理

边缘检测简单来说,就是对图像进行按模板进行卷积;边缘在图像上一般就表示为明暗交接的地方,从上面的图中看出,若我们将图像看为一个连续可导的函数,那么,对边缘检测,就是求突变的位置,在数学上,我们对这样连续可导图像是通过求导,因此,边缘也是通过同样的原理。但由于图像是离散矩阵形式,求导采用微分的形式。边缘检测中常见的数学方法如下图所示

常见边缘检测算子极其实现(基于Python和OpenCV)

2.常见的边缘检测算子

2.1Roberts算子

常见边缘检测算子极其实现(基于Python和OpenCV)

当对对角线方向的边缘感兴趣时,需要一个二维模板,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
View Code

相关文章:

  • 2021-08-05
  • 2022-02-02
  • 2022-12-23
  • 2021-11-16
  • 2021-07-31
  • 2021-05-16
  • 2022-02-10
  • 2022-12-23
猜你喜欢
  • 2021-11-30
  • 2022-12-23
  • 2021-05-09
  • 2021-11-04
  • 2021-08-23
  • 2020-02-01
相关资源
相似解决方案