【CUDA学习笔记】第十篇:基本计算机视觉操作【下】(附实践源码下载)(一)

简介: 【CUDA学习笔记】第十篇:基本计算机视觉操作【下】(附实践源码下载)(一)

1、高通滤波器


       高通滤波器可去除图像中的低频成分并增强高频成分,因此当高通滤波器应用于图像时,将可去除属于低频范围的背景并增强属于高频成分的边缘,因此高通滤波器也称为边缘检测器。滤波器的系数需要改变,否则就会与上一节中的滤波器相类似。目前有许多高通滤波器可供选择,如下所示:

       Sobel滤波器

       Scharr滤波器

       Laplacian滤波器


1.1、Sobel滤波器

       Sobel算子或Sobel滤波器是一种广泛用于边缘检测应用的图像处理和计算机视觉算法,是一个3×3滤波器,近似于图像强度的梯度函数,针对水平和竖直方向的梯度提供各自独立的滤波器来计算,使用与本章前面所述相类似的图像卷积方法。水平和竖直3×3 Sobel滤波器如下:

实现这个Sobel滤波器的代码如下:

       OpenCV提供了用于实现Sobel滤波器的createSobelFilter函数,它需要很多参数:前两个参数是源图像和目标图像的数据类型;第三、四个参数分别是x和y导数的阶(order),给定1和0去计算x导数或竖直边缘,并给定0和1去计算y导数或水平边缘;第五个参数是可选参数,表示内核的大小,默认值为3;还有个可选参数,作为导数的规模。

       为了同时看到水平和竖直边缘,将x导数和y导数的结果相加,结果如图:

932b81e6dafa6ba1b352987f316c00c0.png

7d34280ea66fb82900d542a2c9a94a63.png

       以上结果分别是原始图像、Sobel-x导数、Sobel-y导数和Sobel-xy导数输出结果。

       Sobel算子提供的导数近似值虽然并不准确,但在计算机视觉应用中的边缘检测中依旧非常有用,它缺乏旋转对称性。为了克服这个问题,就需要Scharr算子的辅助。


1.2、Scharr滤波器

       由于Sobel不提供旋转对称性,因此使用Scharr算子通过不同的滤波器掩码来克服此问题,如下所示:

1843109b1533601ead0fed519cb2765c.png

       从上面的掩码中可以看出,Scharr算子对中心行或中心列赋予更多权重以查找边缘,实现Scharr滤波器的程序如下:

06609477bef10a5cbd20c41acf2498e3.png

    OpenCV提供了用于实现Scharr滤波器的createScharrFilter函数,它需要很多参数:前两个参数是源图像和目标图像的数据类型,第三、四个参数分别是x和y导数阶,给定1,0去计算x导数或竖直边缘,并给定0,1去计算y导数或水平边缘;第五个参数是可选项,表示内核的大小,默认值为3。

       为了同时看到水平和竖直边缘,将x导数和y导数的结果相加,结果如图:


802c104af5be614ec8c98326b2fd9af4.png

c6483326d3d7c3a4b9cf57f53420473c.png

以上结果分别是原始图像、Scharr-x导数、Scharr-y导数和Scharr-xy导数输出结果。


1.3、拉普拉斯滤波器

       拉普拉斯滤波器也是一种用于找出图像边缘的微分算子,区别于Sobel和Scharr的一阶微分算子,拉普拉斯是一种二阶微分算子,可以同时在水平和竖直方向上找到边缘,这与Sobel和Scharr算子不同。拉普拉斯滤波器计算二阶导数,对图像中的噪声是非常敏感的,因此在使用拉普拉斯滤波器之前最好对图像进行模糊处理并去除噪声。实现拉普拉斯滤波器的代码如下:

       通过createLaplacianFilter函数,生成内核大小为1和3的两种拉普拉斯滤波器来处理图像,除了内核的大小之外,该函数还需要源图像和目标图像的数据类型作为参数。使用apply方法来创建拉普拉斯滤波器,并应用于图像处理。拉普拉斯滤波器的输出如图:

       总结本部分,描述了不同的高通滤波器,包括Sobel、Scharr和Laplacian三种滤波器。

其中Sobel和Scharr用一阶微分算子去计算边缘,对噪声不太敏感;

拉普拉斯算子是用二阶导数算子去计算边缘的,对噪声则是非常敏感的。

相关文章
|
9月前
|
算法 vr&ar 计算机视觉
[笔记]Python计算机视觉编程《二》 基本的图像操作和处理
[笔记]Python计算机视觉编程《二》 基本的图像操作和处理
|
9月前
|
存储 算法 程序员
[笔记]Python计算机视觉编程《一》 基本的图像操作和处理(四)
[笔记]Python计算机视觉编程《一》 基本的图像操作和处理(四)
|
9月前
|
存储 Serverless C语言
[笔记]Python计算机视觉编程《一》 基本的图像操作和处理(三)
[笔记]Python计算机视觉编程《一》 基本的图像操作和处理(三)
|
9月前
|
安全 数据挖掘 计算机视觉
[笔记]Python计算机视觉编程《一》 基本的图像操作和处理(二)
[笔记]Python计算机视觉编程《一》 基本的图像操作和处理(二)
|
9月前
|
XML 算法 计算机视觉
[笔记]Python计算机视觉编程《一》 基本的图像操作和处理(一)
[笔记]Python计算机视觉编程《一》 基本的图像操作和处理
|
11月前
|
机器学习/深度学习 决策智能 计算机视觉
计算机视觉实战(四)图像形态学操作
计算机视觉实战(四)图像形态学操作
|
并行计算 API 计算机视觉
【CUDA学习笔记】第十篇:基本计算机视觉操作【下】(附实践源码下载)(二)
【CUDA学习笔记】第十篇:基本计算机视觉操作【下】(附实践源码下载)(二)
87 0
|
存储 并行计算 计算机视觉
【CUDA学习笔记】第九篇:基本计算机视觉操作【上】(附实践源码下载)(二)
【CUDA学习笔记】第九篇:基本计算机视觉操作【上】(附实践源码下载)(二)
96 0
|
存储 并行计算 API
【CUDA学习笔记】第九篇:基本计算机视觉操作【上】(附实践源码下载)(一)
【CUDA学习笔记】第九篇:基本计算机视觉操作【上】(附实践源码下载)(一)
95 0
|
计算机视觉 Python
计算机视觉中Python如何实现图像操作与处理
学习过flask动画制作或者视频编辑的童鞋应该都知道,我们平时所看到的流畅的视频画面都是由一帧一帧的图像构成的,比如我们以前读书的时候喜欢在书的边角处花一些动作不同的简笔画,当我们快速翻动书本的时候就好像我们的简笔画中的物体活了,就像在看动画一般.所以当我们需要对一个视频文件进行分析时,连续播放的视频并没有那么容易进行采样分析,在计算机视觉中对视频的分析通常都是对视频帧的分析.说白了,其实计算机视觉就是一们研究如何对图像中的信息进行自动提取的学科. 所以学习计算机视觉首先需要学会如何对图像进行处理,那在Python中我们都怎么处理图像的呢? 在Python中处理图像的库有很多,非常丰富,Pyt
158 0

热门文章

最新文章