【OpenCV learning】关于Canny中NMS和双阈值检测+图像金字塔

NMS非极大值抑制:

    关键词:线性插值法;梯度离散;IOU交并比;

双阈值检测:

  Canny边缘检测中对图像像素点进行筛选,取x>=maxVal的像素梯度进行保留,作为边缘值,对虽连接确定边缘但位于minVal<=x<maxVal的像素作为待确定边缘值,进行连续判定,若确定与边缘值有关的保留,否则将丢弃。参考下图:

A大于maxVAl,确定为边缘值,对其进行保留;

B大于minVal但未与确定边缘连接,全部舍弃;

C与确定边缘链接,为待确定边缘,因与确定边缘A连接,固然获得保留,以获取完整的边缘曲线。

参考:[图像处理]-Canny边缘检测算法_orangezs的博客-CSDN博客_canny边缘检测算法

图像金字塔:  

          图像金字塔可以以多分辨率、多维度解释图像。常用于图像分割、图像缩放(下采样)

原图:

原图大小尺寸为(537,609,3)

高斯金字塔(Gaussian pyramid):

下采样:Gi=cv2.pyrDown(img)  缩小:

     下采样分为两个步骤

  1. 对img进行高斯内核卷积(高斯模糊)
  2. 将所有偶数列、行去掉[丢失信息]

效果:

pyr_Down=cv2.pyrDown(img)
print(pyr_Down.shape)

cv_show(pyr_Down,'Down')

plt.imshow(pyr_Down)

可以看见pyr_Down 的shape值变成了(269,305,3)

上采样:Gi=cv2.pyrUp(img) 放大:

        上采样的步骤

  1. 将img在每个方向扩大2倍,新增的行、列将以0填充,获得img1
  2. 使用先前同样的高斯内核(*4)与img1卷积,获得新增像素值的近似值

效果:

shape值变成(1074,1218,3)

拉普拉斯金字塔:

        前面讲到,高斯金字塔中,上采样与下采样并不是互逆的,即上采样并不是下采样的逆操作,我们可以看一下先Up后Down或先Down后Up会有什么区别

Up_Down=cv2.pyrUp(pyr_Down)
Down_Up=cv2.pyrDown(pyr_Up)

print(img.shape)
print(Up_Down.shape)
print(Down_Up.shape)


 

 拉普拉斯金字塔的实现代码:

G1=cv2.pyrDown(pyr_Up)
L1=img-G1

print(L1.shape)
cv_show(L1,'l1')
plt.imshow(L1)

猜你喜欢

转载自blog.csdn.net/Crabfishhhhh/article/details/127721229
今日推荐