图像处理-边缘检测算子

边缘检测算子汇总(计算机视觉前瞻)

边缘检测其实比较简单,就是对于一张图像上的所有像素点都乘以一个算子的3*3矩阵模板,这个模板对于不同的算子就有不同的表现形式。下面我们使用python脚本来对这些算子进行汇总。

  1. 一阶算子
    对于一阶算子,需要分别在X方向和Y方向进行算子矩阵的乘法;其通用的代码函数可以写为:
def One_order_edge(img,kernelx,kernely,flag=False,threshold=20,r=0):
    '''
       一阶算子的分割
       :param img: 原始图片
       :param kernelx,kernely: 一阶算子模板
       :param 二值化处理变量
       :param:二值化处理的阈值
       :param:二值化处理后的颜色R
       :return:
       '''
    # 使用opencv的卷积运算
    x = cv2.filter2D(img, cv2.CV_16S, kernelx)
    y = cv2.filter2D(img, cv2.CV_16S, kernely)
    # 限定再uint8内
    absX = cv2.convertScaleAbs(x)
    absY = cv2.convertScaleAbs(y)
    #城区距离计算
    res = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
    h, w, c = res.shape
    if flag:
        for i in range(h):
            for j in range(w):
                value = int(int(res[i][j][0]) + int(res[i][j][1]) + int(res[i][j][2]))
                value = value / 3
                if value > threshold:
                    res[i][j] = [0, 0, r]
                else:
                    res[i][j] = [255, 255, 255]
    res = cv2.convertScaleAbs(res)
    return res

上面中的二值化处理可以不进行操作,这样最终处理后的图片可能会比较杂乱。

  1. 二阶算子
    二阶算子的计算则不需要分别在X和Y轴上进行操作,它只需要一个函数模板即可,所以这里可以使用一个函数来表达二阶算子的边缘检测算法。
def edge_Laplacian(img,flag=False,threshold=65,r=0):
    '''
          二阶算子Laplacian
          :param img: 原始图片
          :param 二值化处理变量
          :return:
     '''
    H = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]], dtype=int)
    res = cv2.filter2D(img, cv2.CV_16S, H)
    res = cv2.convertScaleAbs(res)
    h, w, c = res.shape
    if flag:
        for i in range(h):
            for j in range(w):
                value = int(int(res[i][j][0]) + int(res[i][j][1]) + int(res[i][j][2]))
                value = value / 3
                if value > threshold:
                    res[i][j] = [0, 0, r]
                else:
                    res[i][j] = [255, 255, 255]
    res = cv2.convertScaleAbs(res)
    return res
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值