梯度计算中的一些算子

一、sobel算子

算子矩阵:

复制代码
# sobel算子 算梯度
# Gx = 右边-左边;Gy = 下边 - 上边
import cv2

def cv_show(name, img):
    cv2.imshow(name, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

img_people = cv2.imread('people.png', cv2.IMREAD_GRAYSCALE)
cv_show('img_people', img_people)
原图结果:

# dst = cv2.Sobel(src, ddepth, dx, dy, ksize)
# ddepth:图像的深度,ksiz是sobel算子的大小,cv2.CV_64F 是一种浮点数类型,表示为64位的浮点数
# 1, 0 表示的就是在x方向上做,而y方向上不做
sobelx = cv2.Sobel(img_people, cv2.CV_64F, 1, 0, ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
Gx的结果:

sobely = cv2.Sobel(img_people, cv2.CV_64F, 0, 1, ksize=3)
sobely = cv2.convertScaleAbs(sobely)
Gy的结果:

cv_show('Gx', sobelx)
cv_show('Gy', sobely)
# G = Gx+Gy
# 分别计算x与y,再求和
sobelxy = cv2.addWeighted(sobelx,0.5, sobely, 0.5, 0)
cv_show('G', sobelxy)
G的结果:
# 不建议直接计算
# 计算效果提取出来的边缘不明显
sobelxy = cv2.Sobel(img_people, cv2.CV_64F, 1, 1, ksize=3)
# 有正有负,使用convertScaleAbs
sobelxy = cv2.convertScaleAbs(sobelxy)
cv_show('直接计算G', sobelxy)

G直接计算的结果:

二、Scharr算子与laplacian算子

计算矩阵中的数值变得更大,代码执行的结果更为丰富。laplacian算子,对噪声更敏感。

Scharr算子:

laplacian算子:

复制代码
# 不同算子的差异
sobelx = cv2.Sobel(img_people, cv2.CV_64F, 1, 0, ksize=3)
sobelx = cv2.convertScaleAbs(sobelx)
sobely = cv2.Sobel(img_people, cv2.CV_64F, 0, 1, ksize=3)
sobely = cv2.convertScaleAbs(sobely)
sobelxy = cv2.addWeighted(sobelx,0.5, sobely, 0.5, 0)

Scharr算子:
scharrx = cv2.Scharr(img_people, cv2.CV_64F, 1, 0)
scharrx = cv2.convertScaleAbs(scharrx)
scharry = cv2.Scharr(img_people, cv2.CV_64F, 0, 1)
scharry = cv2.convertScaleAbs(sobely)
scharrxy = cv2.addWeighted(sobelx,0.5, scharry, 0.5, 0)

laplacian算子:(没有x与y方向)
laplacian = cv2.Laplacian(img_people, cv2.CV_64F)
laplacian = cv2.convertScaleAbs(laplacian)
res = np.hstack((sobelxy, scharrxy, laplacian))
cv_show('res', res)
相关推荐
青少儿编程课堂1 小时前
后缀自动机解析:本质不同子串与最长重复片段统计
c++·python·算法·bfs·信息学竞赛
怕浪猫2 小时前
LLM 面试必问的 8 个问题,答不上来直接淘汰
人工智能·python·面试
老歌老听老掉牙3 小时前
从三维旋转的深度解析到Python实现:绕任意轴旋转的奥秘
python·三维旋转
乐迪信息3 小时前
港口船舶逆行怎么管?AI防爆摄像机搭载智能检测算法
大数据·人工智能·深度学习·算法·计算机视觉
打工仔折腾 AI3 小时前
工业场景下时序库与实时计算一体化架构选型实践对比
java·开发语言·后端·python·性能优化·架构·ai agent 实战
梦幻精灵_cq3 小时前
sumdir——一个伪python.built-in的“术法”打造
python
weixin_440730505 小时前
函数return、参数、参数组、递归函数、高阶函数等小结
开发语言·python
天赐范式5 小时前
天赐范式第181天:让视图开始切换——PBFT视图切换与从safety到liveness的跨越
python·pbft·数字生命·天赐范式·动态运行时·拜占庭容错
sugarzhangnotes5 小时前
【无标题】
开发语言·人工智能·python
xailorliu6 小时前
SLIC_超像素算法
c++·opencv·目标检测·机器学习·计算机视觉