我是靠谱客的博主 发嗲指甲油,最近开发中收集的这篇文章主要介绍OpenCV中,关于canny算子、sobel算子、laplacian算子和scharr滤波器小结1、canny算子,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1、canny算子
void Canny(InputArray src, OutputArray edges, double threshod1, double threshod2, int apertureSize = 3, bool L2gradient = false)
其中:
第一个参数src:单通道8位图像(灰度图像)
第二个参数dst:要求要和原图像是一样的尺寸和类型
第三个参数threshod1:第一个滞后性阈值
第四个参数threshod2:第二个滞后性阈值
使用步骤:
- 使用cvtColor()函数,使图像变成灰度图像
- 使用blur()函数,对灰度图像进行模糊处理,目的是降噪
- 调用canny算子,得到边缘图像
- 如果想要获得彩色边缘,应该将所得到的灰度边缘作为掩膜,调用copyTo()函数,将原图像复制到目标图像中
2、sobel算子(结合了高斯平滑和微分求导)
void Sobel(InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT)
其中:
第一个参数src:Mat类型即可
第二个参数dst:输出图像
第三个参数dx:输出图像的深度,一般是CV_16S
第四个参数dx:x方向的差分阶数
第五个参数dy:y方向的差分阶数
第六个参数ksize:核的大小
使用步骤:
- 因为sobel算子对噪声比较敏感,首先应该使用高斯滤波对图像进行处理
- 调用sobel算子,分别求出x和y方向的梯度
- 调用convertScaleAbs()函数,保留更多的细节
- 将x和y方向的梯度进行叠加
3、scharr滤波器
void Scharr(InputArray src, OutputArray dst, int ddepth, int dx, int dy, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT)
其中:
第一个参数src:输入图像
第二个参数dst:输出图像
第三个参数ddepth:输出图像的深度,一般为CV_16S
第四个参数dx:x方向的差分阶数
第五个参数dy:y方向的差分阶数
Scharr滤波器和sobel算法相似,只不过Scharr的核数固定为3
- 首先应该使用高斯滤波对图像进行处理
- 调用scharr滤波器,分别求出x和y方向的梯度
- 调用convertScaleAbs()函数,保留更多的细节
- 将x和y方向的梯度进行叠加
4、laplacian算子
void Laplacian(InputArray src, OutputArray dst, int ddepth, int ksize = 1, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT)
其中:
第一个参数src:为单通道8为图像(灰度图)
第二个参数dst:为输出图像
第三个参数ddepth:为输出图像的深度,一般为CV_16S
第四个参数ksize:为孔径尺寸,一般为正奇数
- 首先应该使用高斯滤波对图像进行处理
- 将原图像转换成灰度图像
- 调动laplacian算子
- 调用convertScaleAbs()函数,保留更多的细节
- 将x和y方向的梯度进行叠加
小结:
- 调用这些函数之前,基本上都需要进行滤波降噪
- canny和laplacian算子的输入图像是8为单通道的图像,因此在滤波之后进行灰度图像的转换,再调用这两个函数
- 这些算子的输出图像都是灰度图
最后
以上就是发嗲指甲油为你收集整理的OpenCV中,关于canny算子、sobel算子、laplacian算子和scharr滤波器小结1、canny算子的全部内容,希望文章能够帮你解决OpenCV中,关于canny算子、sobel算子、laplacian算子和scharr滤波器小结1、canny算子所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复