OpenCV图像处理笔记[05]
26. sobel理论基础
27. sobel算计及其函数使用
dst = cv2.Sobel( src, ddepth, dx, dy, [ ksize ])
dst, 计算结果 src, 原始图像
ddepth, 处理结果图像深度
dx, x轴方向
dy, y轴方向
ksize, 核大小
- ddepth, 处理结果图像深度
通常情况下,可以将该参数的值设置为-1,让处理结果与原始图像保持一致
实际操作中,计算梯度值可能会出现负数。通常处理的图像是np.unit8类型,如果结果也是该类型,所有负数会自动截断为0,发生信息丢失。所以通常计算时,使用更高的数据类型,cv.CV_64F, 取绝对值后,再转换为np.unit8(cv2.CV_8U)类型。
dst = cv2.convertScaleAbs( src [, alpha [ , beta]])
作用: 将原始图像src转换为256色位图
公式: 目标图像 = 调整 ( 原始图像 * alpha + beta )
直接调整: 目标图像 = cv2.convertScaleAbs( 原始图像 )
-
dx , x 轴方向
-
dy , y 轴方向
计算x方向梯度 : 【dx = 1, dy =0]
计算y方向梯度 : 【dx = 0, dy =1]
-
计算sobel结果
-
-
方式1
dx = 1, dy = 1
dst = cv2.Sobel( src, ddepth, 1, 1 )
-
-
-
方式2
dx = cv2.Sobel( src, ddepth, 1, 0 )
dy = cv2.Sobel( src, ddepth, 0, 1 )
dst = dx + dy
dst = dx * 系数1 + dy * 系数2
函数
dst = cv2.addWeighted(src1,alpha,src2,beta,gamma)功能: 计算两幅图像的权重和
dst,计算结果 src1, 源图像1
alpha, 源图像1的系数
src2, 源图像2
beta, 源图像2的系数
gamma, 修正值
关系 dst( I ) = saturate ( src1 ( I ) * alpha + src2( I ) * beta + gamma)
例: dst = cv2.addWeighted(src1,0.5,src2,0.5,0) -
-
28. scharr算子函数及其使用
使用3 * 3的sobel算子时,可能不太精准,scharr算子效果更好
dst = Scharr ( src , ddpeth, dx, dy )
dst,计算结果 src1, 原始图像 ddepth, 处理结果图像深度 dx, x轴方向 dy, y轴方向
ddepth, 处理结果图像深度
dst = Scharr ( src, cv2.CV_64F, dx, dy )
dst = cv2.convertScaleAbs( dst )
dx, x轴方向 dy, y轴方向 dst = Scharr ( src, ddpeth, dx = 1, dy = 0 ) dst = Scharr ( src, ddpeth, dx = 0, dy = 1 ) 两个方向的梯度 = dx + dy scharrxy = cv2.addWeighted ( scharrx, 0.5, scharry, 0.5, 0 )
满足条件: dx >= 0 && dy >= 0 && dx + dy == 1
dst = Scharr ( src , ddpeth, dx, dy )
等价于
dst = cv2.Sobel( src, ddepth, dx, dy, -1)
29. sobel算子和scharr算子的比较
不同之处:系数不同
相同: 使用的卷积核大小一样,运算速度一样
scharr更精密一点
30. laplacian算子及其使用
拉普拉斯算子类似于二阶sobel导数。实际上,在OpenCV中通过调用sobel算子来计算拉普拉斯算子。
一阶导数 sobel算子 = |左 - 右| + |下 - 上| scharr算子 = |左 - 右| + |下 - 上|
二阶导数 Laplacian算子 = |左 - 右| + |下 - 上| + |左 - 右| + |下 - 上|
-
dst = cv2.Laplacian( src, ddepth )
-
dst , 结果图像
-
src , 原始图像
-
ddepth , 图像深度
-
通常情况下,可以将该参数的值设为-1,让处理结果与原始图像保持一致。
-
实际操作中,计算梯度值可能会出现负数。
通常处理的图像是np.uint8类型,如果结果也是该类型,所有负数会自动截断为0,发生信息丢失。
所以,通常计算时,使用更高的数据类型cv2.CV_64F,取绝对值后,再转换为np.uint8(cv2℃v81-J)类型。出现负数时:dst = cv2.convertScaIeAbs(src)
将原始图像调整为256色位图。
示例:目标图像 = cv2.convertScaleAbs(原始图像)
-
-
本文作者:Hecto
本文链接:https://www.cnblogs.com/tow1/p/16546329.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术