关于OpenCV研究(七)——图片梯度和比值探测的说明
来源:http://www.tudoupe.com时间:2021-12-03
图像梯度估计图片变化的速度。 对于图像的边缘部分, 灰度值变化更大, 梯度值更大; 对于图像的平滑区域, 灰度值变化较小, 相应的梯度值较小。 一般情况下, 图像梯度是按图像的边缘信息计算的 。
Canny比值测试是一种利用多级比值检测算法探测边缘的技术,Canny制作了一项众所周知的研究,即“边缘检测技术方法”,详细介绍了如何进行边境检测。 OpenCV包括功能cv2.Canny (), 以进行坎尼比比值测试。
OpenCV 基本要点:迈向 Python 的一步
- 一. 图像梯度
- 索贝尔理论基金会
- 一.1 水平倾斜高度被确定为大致值。
- 一.1.2 计算接近垂直偏差的数字
- 1.2 Sobel 等级和函数的应用
- 一. 二. 一米深
- 1.2.2 方向
- 一. 执行三个舒尔算法和功能。
- 一个是索贝尔和舒尔的比较
- 1.5 采用了拉帕西亚算法和功能。
- 二. 边缘检测
- 二.1 边缘探测基金会
- 2.2 智能功能和应用
一. 图像梯度
索贝尔理论基金会
Sobel 微积分是一个离散的分数, 它通过将高森平滑与差分相结合来引导计算。 它使用本地差数来寻找边缘, 并计算梯度近似值 。
一.1 水平倾斜高度被确定为大致值。

下列公式用于使用 Sobel 子和 P5 邻里点计算像素点的水平 P5 偏差 P5x:
P5x = (P3-P1) + 2·(P6-P4) + (P9-P7)
一.1.2 计算接近垂直偏差的数字

要计算 P5 像素点的垂直 P5y, 请使用 Sobel 子和 P5 邻里点, 如公式所示 :
P5y = (P7-P1) + 2·(P8-P2) + (P9-P3)
1.2 Sobel 等级和函数的应用
dst = cv2.Sobel( src, ddepth, dx, dy[,ksize[, scale[, delta[, borderType]]]] )
- 目标图示为dst。
- 原始图片由 scrc 表示。
- 产出图象的深度以深深线表示,表内显示其特殊关系。

- dx 指向 x 方向所要采取的步骤的数目。
- y 是指引导y朝y方向前进所需的步骤数目。
- Sobel 核心的大小由 k大小表示。 当值为 1 时, 将使用 Scharr 计算法进行计算 。
- 用于计算铅值的缩放系数由缩放表示,缩放系数默认为1,不缩放。
- 目标图dst的增加值由三角洲代表,三角洲是可选的,默认为零。
- 边界样式由边框Type表示。
一. 二. 一米深
在实践中,梯度值可能是负值。 通常处理的图片是 8 位地图类型, 如果输出为同一类型, 则所有负整数立即切成 0, 并且信息丢失。 要克服这一点, 我们使用更高的数据类型 cv2. CV_ 64F, 该类型随后被映射为 cv2. CV_ 8U (8 位图) 类型 。
在 OpenCV 中, 方法 cv2. ConverticalAbs () 接受函数同步格式中参数的绝对值 :
dst = cv2.convertScaleAbs( src [, alpha[, beta]] )
- dst 表示结果。
- 原始图片由 scrc 表示。
- 调节系数由阿尔法表示,数值是可选的,其中1个为默认值。
- 调节亮度值为贝塔, 默认为零 。
1.2.2 方向
dx 参数和 dy 参数可以多种方式混合,最常见的方式是:
计算 x 的边缘方向( 梯度) : dx=1, dy=0 。

计算 y 边缘的方向(梯度): dx = 0, dy = 1。

dx 和 dy 均等于 1: dx=1 和 dy=1。

计算 x 和 Y 方向边缘。

一. 执行三个舒尔算法和功能。
OpenCV包含一个比Sobel的计数更快和准确的Schharr计数器。Schharr的计数比Sobel的计数有改进。
dst = cv2.Scharr( src, ddepth, dx, dy[, scale[, delta[, borderType]]] )
- 应用的参数和方式与Sobel算法的参数和方式相同。
- 必须记住,参数 dx 和 dy 不能全部是 1 。
一个是索贝尔和舒尔的比较
Sobel的不利之处在于,当它的核结构较小时,它就不那么精确,而Scharr是更精确的。

1.5 采用了拉帕西亚算法和功能。
Lapacian (La Plas) 是一条不可变的第二阶计算指南, 用于旋转, 以满足不同方向的图片边缘锐化( 边际检测) 的需要。 通常, 系数总数为零 。
计算像素点P5近似值如下:
P5lap = (P2 + P4 + P6 + P8) - 4·P5
由于上述图片的结果值可能是正的或负的,计算结果要求绝对值,以保证在计算和显示之后正确。
dst = cv2.Laplacian( src, ddepth[, ksize[, scale[, delta[, borderType]]]] )
- 目标图示为dst。
- 原始图片由 scrc 表示。
- 目标图的深度表现为深度。
- 计算第二顺序指导所需的核体积用千位表示,必须是一个正奇数。
- 缩放是一个可选参数,它提供了计算 Laplacian 值的缩放因子。 默认值为 1, 表示没有缩放 。
- 三角形是一个可选值,可以添加到目标图景中,默认设定为零。
- 边界样式由边框Type表示。

二. 边缘检测
二.1 边缘探测基金会
Canny的边缘测试分为以下几个阶段:
- 由于噪音影响边缘探测的准确性,先过滤。
由于图像的边缘很容易受到噪音干扰,过滤图像以消除噪音往往是必要的。 过滤的目的是平滑一些纹理较少的线外边缘部分,以产生更准确的距离。 在实际处理中,高斯过滤器通常用于清除图像中的噪音。

- 计算梯度的幅度和方向。
我们之前讨论过如何计算图象梯度的大小。 在这里, 我们聚焦于梯度的方向, 即垂直方向, 以及边缘的方向, 通常有八个不同的方向: 水平( 左、 右)、 垂直( 上、 下)、 对角( 右、 左、 左、 下、 右) 。 因此, 当我们计算梯度时, 我们将会为梯度的幅度和角度( 反映梯度方向) 获得两个值 。

- 非极端抑制,即适当的边边距“滑动”
在获得梯度的射程和方向后,图像中的像素点被通过以消除所有非边缘点。 在实际实现时,将逐案确定当前像素点是否是同一梯度方向周围像素点的最大值,并根据结论确定是否抑制点。
(1) 如果该点是正负梯度方向的部分最大值,则保留该点。
(2) 如果情况并非如此,则取消点(零)。
A点在可比较性中具有最高当地价值,因此A点(称为边缘)被保留,其余两个点(B和C点)被抑制(零)。
由于上述处理,在同一方向上几乎只有一个差值,实现了微调的目标。
- 查找边缘。 要确定最后边缘信息, 请使用双下限方法 。
创建两个阈值, 一个是高阈值最大值的阈值, 一个是低阈值小型Val。 根据当前差值像素的梯度值( 即梯度范围( 底部一) 和两个阈值是混凝土楼梯) 之间的关联, 确定差值属性 。
(1) 如果当前边距像素的梯度值大于或等于最大等值,则将当前边缘像素标记为坚硬。
(2) 如果当前边缘像素的梯度值在最大值和最小值之间,则当前边缘像素记录为空。
边缘(需要保留)。
(3) 如果当前差值像素的梯度值小于或等于MinVal,则压缩当前差值像素。
通过这一程序,我们获得了真空的边缘,必须进一步处理,通常通过评估边缘和强边缘来做到这一点。
通常情况下,如果存在假边缘:
(1) 边缘在与强边缘相连时被视为边缘。
(2) 如果不与强边缘挂钩,边缘是弱的和抑制的。

2.2 智能功能和应用
edges = cv.Canny( image, threshold1, threshold2[, apertureSize[, L2gradient]])
- 您获取的边缘被用来计算您获取的边缘图像 。
- 图片输入到图像中的 8 位数 。
- 程序过程中的初始门槛值为阈值1。
- 门槛值2是处理程序中的第二个门槛值。
- AperturesSize表示Sobel微积分的孔径大小。
- 用于计算图片梯度( 梯度) 的标识符是 L2梯度( 梯度) 。 默认值为 False 。 如果 True, 则在计算时使用更精确的 L2 参数( 即, 相反, 使用 L1 参数( 直接添加两个向导的绝对值) (双向铅的方形和重新打开) 。

当阈值1和阈值2的值较小时,程序运行的结果是已知的。当阈值1和阈值2的数值较小时,Canny()的参数会获得更多的外围信息。
相关新闻
- 2022-01-28 S32DS——PE调试器使用
- 2022-01-28 华硕M2N-MX SE主板如何进入bios设置
- 2022-01-28 华硕B85-A主板如何是通过bios设置u盘
- 2022-01-27 ltraISO 生成u盘启动盘后处理事项
- 2022-01-27 华硕P5QL-CM主板如何通过bios设置u盘
- 2022-01-27 微pe怎么安装原版win11 微pe安装原版
- 2022-01-26 win10 esd系统怎么用pe安装
- 2022-01-26 电脑系统装机教程图解(电脑装机
- 2022-01-25 非mbr怎么激活
- 2022-01-25 eprime安装教程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
