第9章 图像梯度 -- 9.2 Scharr 算子

相关链接:


Scharr 算子

  1. Scharr 算子 和 Sobel算子
    Scharr 算子相对Sobel算子而言,具有更高的精度
    在这里插入图片描述

  1. Scharr 算子函数原型:
dst_img = cv2.Scharr(src_img, ddepth, dx, dy, scale, delta)

参数:

  • dst_img:结果图像
  • src_img:原始图像
  • ddepth:输出图像的深度,
  • dx:x方向上的求导阶数,值为0时,表示在该方向上没有求导
  • dy:y方向上的求导阶数,值为0时,表示在该方向上没有求导
  • scale:代表计算导数值时的缩放因子。默认值是1,表示没有缩放。
  • delta:代表加到目标图像上的亮度值。默认值是0。
  1. 函数cv2.Sobel() 的参数ksize=-1时,会使用Scharr滤波器。所以,dst = cv2.Sobel(src_img, depth, fx, fy, -1)和dst = cv2.Scharr(src_img, depth, fx, fy)是等价的

  2. 与函数cv2.Sobel() 不同的是,不能同时设置dx=1,dy=1。 否则会报错

  3. 举例:

import cv2
import numpy as np

src_img = cv2.imread("/Users/manmi/Desktop/lena.bmp", 0)

sobel_x = cv2.Sobel(src_img, cv2.CV_64F, 1, 0, ksize=3)
sobel_x = cv2.convertScaleAbs(sobel_x)
sobel_y = cv2.Sobel(src_img, cv2.CV_64F, 0, 1, ksize=3)
sobel_y = cv2.convertScaleAbs(sobel_y)
sobel_xy = cv2.addWeighted(sobel_x, 0.5, sobel_y, 0.5, 0)

scharr_x = cv2.Scharr(src_img, cv2.CV_64F, 1, 0)
scharr_x = cv2.convertScaleAbs(scharr_x)
scharr_y = cv2.Scharr(src_img, cv2.CV_64F, 0, 1)
scharr_y = cv2.convertScaleAbs(scharr_y)
scharr_xy = cv2.addWeighted(scharr_x, 0.5, scharr_y, 0.5, 0)


cv2.imshow('sobel_xy', sobel_xy)
cv2.imshow('scharr_xy', scharr_xy)
cv2.waitKey()
cv2.destroyAllWindows()

输出为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Enzo 想砸电脑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值