将图像转为特征值_计算机视觉——图像特征检测(2020.11.1)

本文详细介绍了图像特征检测的四种方法:Harris角点检测、FAST特征检测、SIFT(尺度不变)和SURF。Harris角点检测通过计算角点响应函数R来检测角点;FAST特征检测是一种实时性好的角点检测算法,但不具有方向性和尺度不变性;SIFT则具有旋转、尺度缩放、亮度变化不变性,包含构建尺度空间、特征点检测、计算主方向、特征点描述和匹配等多个步骤;SURF在SIFT基础上进行了优化,提高了实时性,采用Hessian矩阵和盒子滤波器来加速计算。
摘要由CSDN通过智能技术生成

2387460c31b4f07d249c294b597ddd62.png

一、Harris角点检测

  • 基本原理
人眼对角点的识别常在一个局部小区域完成,这个区域内的像素的灰度积分为判断标准。
灰度变化平缓区域,窗口内像素灰度积分近似保持不变: Flat
边缘区域,仅沿边缘方向,灰度积分近似不变,沿其余任意方向,均剧烈变化: Edge
角点处,沿任意方向移动,灰度积分均会剧烈变化: Corner

0ef2d89bf5a65ccdbe3d76b7e35f9de4.png
Flat Edge Corner

灰度积分变化E(u,v)当u,v很小时经过推导得:

8caeb8ac1834995ed5abd7fd5d28b68a.png

c273bd48e9e12906493afc3f91959f53.png

M为海森矩阵,M存在着两个特征值,由于E为常数时,第一个式子近似为椭圆,而M的两个特征值的导数的平方根为半长轴和半短轴,决定了椭圆的扁率和尺寸,进而:

边缘:一个特征值大,另一个特征值小->自相关函数值在某一方向上大,在其他方向上小
平面:两个特征值都小,且近似相等->自相关函数数值在各个方向上都小
角点:两个特征值都大,且近似相等->自相关函数在所有方向都增大

实际不必求这两个特征值,可以使用角点响应函数R:

f2afff1c9142ae5de3689035f709203d.png

其中k=0.04~0.06,为经验常数,判断依据如下:

边缘:R<0
平面:R>0
角点:|R|小
  • 测试代码
import cv2
import numpy as np
img=cv2.imread('har.jpg')
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

gray=np.float32(gray)
dst=cv2.cornerHarris(gray,2,3,0.04)#角点检测
dst = cv2.dilate(dst,None)#膨胀,提升后续图像角点标注的清晰准确度

cv2.imshow('img',img)
img[dst>0.01*dst.max()]=[0,0,255]#设定一个阈值,当大于这个阈值分数的都可以判定为角点
while True:
    cv2.imshow('corners',img)
    if cv2.waitKey(50)  &  0xff ==ord('q'):
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值