【算法】基于OpenCV的Harris角点检测算法

Harris角点检测算法

特征点检测广泛应用到目标匹配、目标跟踪、三维重建等应用中,在进行目标建模时会对图像进行目标特征的提取,常用的有颜色、角点、特征点、轮廓、纹理等特征。

Harris角点检测算法原理

角点检测的几何定义:
1、角点是图像灰度一阶导数所对应的最大值的位置;
2、角点是图像中两条或两条以上边缘的交点;
3、角点是图像中灰度变化最大的位置;
4、角点位置的一阶导数最大,二阶导数为零;
5、角点是图像中物体边缘变换不连续的位置;
6、角点是二维图像亮度变化剧烈的位置。
基本原理:
(1)算法思想:
Harris角点算法,通过一个小窗在图像中移动,通过小窗内图像灰度平均变换值来确定角点,一般会存在三种情况:

  • 小窗内的灰度值恒定,且不同方向的灰度值变化不大,此时处于图像内部平坦区域。
  • 小窗跨越一条边,与边垂直方向的灰度变换较大,此时处于图像边缘区域。
  • 在不同方向的灰度变化都很大,此时小窗位于焦点区域。

在这里插入图片描述
(2)算法原理:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过计算角点的响应值,找到较大的值即为焦点区域。

代码实现

import cv2
import numpy as np
#读取图片并输出形状
img = cv2.imread('test_1.jpg') 
print('img,shape',img.shape)  
#将图片进行灰度转换
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
#Harris变换,得到角点响应R
dst = cv2.cornerHarris(gray,2,3,0.04)   
#前面设置条件角点响应值,使得满足条件的点即角点,将角点标记为后面的颜色,即红色。
img[dst>0.01*dst.max()]=[0,0,255] 
cv2.imshow('dst',img) 
cv2.waitKey(0) 
cv2.destroyAllWindows()

读取的图片
在这里插入图片描述
Harris角点检测后的图片
在这里插入图片描述
可以参考的视频: https://www.bilibili.com/video/BV1oJ411D71z?p=12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值