梯度计算中的一些算子

一、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)
相关推荐
花酒锄作田3 小时前
Pydantic校验配置文件
python
hboot3 小时前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
ZhengEnCi14 小时前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi16 小时前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab
曲幽16 小时前
你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南
python·fastapi·web·graphql·route·cors·rest·strawberry
用户83580861879117 小时前
基于 Self-RAG 与列表级重排序的进阶 RAG 系统设计与实现
python
Warson_L1 天前
Python `Annotated` 与 LangGraph Reducer 学习笔记
python
韩师傅1 天前
海天线算法的前世今生
python·计算机视觉
韩师傅1 天前
当你的甲方设备过烂,要如何快速出效果?
python·计算机视觉
Warson_L1 天前
LangGraph的MessageState and HumanMessage
python