机器视觉OpenCV:特征的提取-1

一、角点特征

在计算机视觉中,角点(或称为兴趣点)是图像中的一个重要特征。角点通常出现在物体的边界、纹理变化较大的地方或者不同表面的交界处。这些点具有良好的稳定性和可重复性,因此在图像匹配、目标跟踪、三维重建等领域有广泛的应用。

1、什么是角点

角点是图像中局部区域内的灰度值变化显著的点。具体来说,如果在一个小区域内,无论你朝哪个方向移动一小段距离,灰度值都有显著的变化,那么这个点就是一个角点。

2、常见的角点检测算法

【1】Harris角点检测:通过计算每个像素点的自相关矩阵来判断该点是否为角点。

【2】Shi-Tomasi角点检测:是对Harris角点检测的一种改进,选择最小的特征值作为角点响应函数。

【3】FAST角点检测:快速特征点检测,适用于实时应用。

【4】ORB(Oriented FAST and Rotated BRIEF):结合了FAST和BRIEF的优点,用于快速特征点检测和描述。

3、例子

假设你有一张照片,照片中有一个立方体。立方体的每个顶点处,由于三个面的交界,形成了明显的灰度变化。这些顶点就是角点。如果我们用计算机视觉的方法来检测这些角点,可以帮助我们识别和跟踪立方体的位置和姿态。

Python实现:

【1】读取图像:使用`cv2.imread`读取图像,并将其转换为灰度图像。

【2】Harris角点检测:使用`cv2.cornerHarris`函数进行角点检测。参数`blockSize`、`ksize`和`k`分别表示邻域大小、Sobel算子的大小

     和Harris角点检测的自由参数。

【3】膨胀处理:使用`cv2.dilate`对检测结果进行膨胀处理,使角点更加明显。

【4】设置阈值:将大于阈值的点标记为角点。

【5】显示结果:使用`matplotlib`库显示原图和角点检测结果。

'''

import cv2

import numpy as np

import matplotlib.pyplot as plt

import os

import matplotlib as mpl

# 设置Matplotlib的字体为SimHei,显示中文

mpl.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文

mpl.rcParams['axes.unicode_minus'] = False  # 正常显示负号

# 读取图像

image = cv2.imread('data/jiaodian.jpg', cv2.IMREAD_GRAYSCALE)

# 确保图像已正确加载

if image is None:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字化与智能化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值