十六、计算机视觉-Scharr算子 和 Laplacian算子

文章目录


一、Scharr算子

Scharr算子和Sobel算子原理都一样,它是由Scharr在2002年提出的一种改进的Sobel算子。Scharr算子的优点在于它相对于Sobel算子有更好的旋转不变性和更小的边缘响应误差。

我们看下Scharr算子的水平卷积核:

可以看到其卷积核中的值比Sobel算子的对应值大,这使得Scharr算子在捕捉图像边缘细节时更加敏感。因为上节讲过原理了 这里就不在重复了,我们看下具体他是怎么实现的。

python 复制代码
import cv2
img = cv2.imread('./img/image.jpg',cv2.IMREAD_GRAYSCALE)
# 计算Scharr算子的水平和垂直梯度
scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0)  # x方向梯度
scharrx = cv2.convertScaleAbs(scharrx)

scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1)  # y方向梯度
scharry = cv2.convertScaleAbs(scharry)

# 结合水平和垂直梯度
scharrxy = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0)  # xy方向梯度

# 显示结果
cv2.imshow('Scharr Gradient', scharrxy)
cv2.waitKey(0)
cv2.destroyAllWindows()

参数就不讲了 可以参考sobel算子的参数

看下结果:

二、Laplacian算子

Laplacian 算子和之前讲的sobel和Scharr有些不同,我们看下Laplacian算子的卷积核

python 复制代码
  0   1   0
  1  -4   1
  0   1   0

我们看下它的操作流程:

首先,将3x3的卷积核以上面-4的位置为中心点依次对图像中的每个像素点进行卷积操作,这个和前面一样,将卷积结果作为图像的每个像素点的新像素值。

对于卷积结果,若像素值较大,则表示该像素点周围的灰度值变化较大,可能是图像中的边缘或轮廓。

那他的计算公式是什么?比如我们卷积核覆盖的图像的9个像素点如下

那p5的新值=(p2 + p4 + p6 + p8) - 4 * p5

●p2 p4 p6 p8 分别代表了卷积核中的四个相邻像素点的值。

●p5 是卷积核覆盖的中心像素点的值。

算式中的 4×p5 表示了中心像素点的值被乘以4,这是因为在Laplacian算子的卷积核中,中心像素点的系数是-4,因此需要将其乘以4进行加权。

最终的 p5 表示了中心像素点的新值,它等于周围相邻像素点的值之和减去中心像素点的值的四倍。这一过程会使图像中的边缘或轮廓区域得到突出,因为这些区域的像素值变化较大,而Laplacian算子会将这种变化放大。

我们进一步分析:

当p2 p4 p6 p8较大时也就是他的亮度(灰度)远大于中心点,也就是周围和中心点差距较大时,两边一减那我们新的p5的值是不是就是变小了。

而当当p2 p4 p6 p8较小时,同样和中心点比较差距较大,那一减 得到的事负数 然后绝对值 是不是比原来的值大了。

所以,它本身中心为最高峰,向两边依次减小。当周围和高于中心时,减弱中心像素;当周围和低于中心时,增强中心像素,一般用于图像的锐化。由于Laplacian算子突出了图像中的边缘和轮廓特征,因此常用于图像的锐化处理。通过对图像应用Laplacian算子,可以增强图像中的边缘和轮廓,使它们更加清晰和突出。

我们看下具体的实现代码:

python 复制代码
import cv2
img = cv2.imread('./img/image.jpg',cv2.IMREAD_GRAYSCALE)
Laplacian = cv2.Laplacian(img,cv2.CV_64F)
Laplacian = cv2.convertScaleAbs(Laplacian)
cv2.imshow("original",img)
cv2.imshow("Laplacian",Laplacian)
cv2.waitKey()
cv2.destroyAllWindows()

看下结果:

相关推荐
快乐非自愿1 小时前
RAG夺命10连问,你能抗住第几问?
人工智能·面试·程序员
千匠网络3 小时前
破局出海壁垒,千匠网络新能源汽车跨境出海解决方案
人工智能
马丁聊GEO5 小时前
解码AI用户心智,筑牢可信GEO根基——悠易科技深度参与《中国AI用户态度与行为研究报告(2026)》发布会
人工智能·科技
nap-joker5 小时前
Fusion - Mamba用于跨模态目标检测
人工智能·目标检测·计算机视觉·fusion-mamba·可见光-红外成像融合·远距离/伪目标问题
一只幸运猫.5 小时前
2026Java 后端面试完整版|八股简答 + AI 大模型集成技术(最新趋势)
人工智能·面试·职场和发展
Promise微笑6 小时前
2026年国产替代油介损测试仪:油介损全场景解决方案与技术演进
大数据·网络·人工智能
深海鱼在掘金6 小时前
深入浅出 LangChain —— 第三章:模型抽象层
人工智能·langchain·agent
生信碱移6 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
workflower6 小时前
具身智能行业应用-生活服务业
大数据·人工智能·机器人·动态规划·生活
GitCode官方6 小时前
基于昇腾 MindSpeed LLM 玩转 DeepSeekV4-Flash 模型的预训练复现部署
人工智能·开源·atomgit