OpenCV图像处理:Canny边缘检测与图像金字塔详解
需积分: 33 170 浏览量
更新于2024-09-08
2
收藏 67KB DOCX 举报
"Canny边缘检测、图像金字塔变换和图像轮廓操作"
Canny边缘检测是一种经典的图像处理技术,用于在数字图像中识别出明显的边界。它由John F. Canny在1986年提出,其核心步骤包括噪声去除、计算图像梯度、非极大值抑制和滞后阈值设置。
1. 噪声去除:
在Canny算法的第一步,使用高斯滤波器来平滑图像,消除噪声。高斯滤波器是一种线性滤波器,能有效地减小图像中的高频噪声,同时尽可能保持边缘信息。
2. 计算图像梯度:
平滑后的图像通过Sobel算子计算水平和垂直方向的一阶导数,即梯度Gx和Gy。这两个梯度可以给出边界的方向和强度。梯度的绝对值表示边界强度,而梯度方向通常与边缘大致垂直。
3. 非极大值抑制:
这一步是为了减少假阳性边缘,只保留最有可能属于边缘的像素点。每个像素与其邻域内的点比较,如果它的梯度值不是沿着梯度方向的最大值,则将其值设为0,从而消除边缘附近的弱响应。
4. 滞后阈值:
设置两个阈值minVal和maxVal,高于maxVal的梯度被认为是强边缘,低于minVal的被认为是背景。介于两者之间的点,如果它们与已确定的边缘相连,则也被认为是边缘;否则,被剔除。
在OpenCV库中,可以使用`cv2.Canny()`函数轻松实现Canny边缘检测。例如,以下代码片段展示了如何对图像应用Canny检测:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread("./image/test3.jpg", 0) # 读取灰度图像
edges = cv2.Canny(img, 100, 200) # 应用Canny边缘检测,阈值100和200
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title("Original")
plt.subplot(122), plt.imshow(edges, cmap='gray')
plt.title("Edge")
plt.show()
```
接下来,我们讨论图像金字塔,它在图像处理中有重要作用,特别是在缩放和多尺度分析中。
1. 图像金字塔:
图像金字塔是由原始图像生成的一系列分辨率递减的图像集合。主要有两种类型:高斯金字塔和拉普拉斯金字塔。
2. 高斯金字塔:
高斯金字塔是通过不断下采样原始图像并加一层高斯模糊得到的。每层金字塔都是下一层的四分之一大小。从底层到顶层,图像细节逐渐丢失,但大的形状特征得以保留。
3. 拉普拉斯金字塔:
高斯金字塔的每一层减去其下一层(放大两倍并插值)得到拉普拉斯金字塔。拉普拉斯金字塔的顶层包含了原始图像的所有高频信息,即边缘和细节。
图像金字塔在目标检测、图像匹配、缩放和图像融合等任务中都有应用,因为它允许我们在不同尺度上分析图像,对于不知道目标尺寸的情况尤其有用。
2019-01-24 上传
2011-04-15 上传
2023-02-22 上传
2023-02-22 上传
点击了解资源详情
2023-03-20 上传
基斯卡人
- 粉丝: 126
- 资源: 15
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常