带你一步了解Harris角点检测

角点检测原理

Harris角点检测是一种常用的计算机视觉算法,用于检测图像中的角点。它的原理是使用自适应窗口,在每个像素处计算其在该窗口内的灰度值变化量,即在不同方向上移动窗口后的灰度值变化量的平方和。如果该值超过一个阈值,则认为该像素是角点,因为角点处存在着较大的灰度变化。

参数介绍

cornerHarris(img, blockSize, ksize, k[dst]) -> dst

* img: 输入图像
* blockSize: 角点检测中要考虑的领域大小
* ksize: Sobel 求导中使用的窗口大小
* k: Harris 角点检测方程中的自由参数, 取值参数一般为[0.04, 0.06]
* dst: 返回numpy,ndarray 对象, 大小和src相同, 值越大, 对应像素点是角的概率越高

代码实现

# 读取图片
img = cv2.imread('./huang.jpg')

# 将图片转换为灰度图,方便检测
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 检测角点,blockSize=4,ksize=3
dst = cv2.cornerHarris(img_gray, 4, 3, 0.04)

# 这里认为角点概率大于最大角点概率的百分之一,就可以当作角点,把它标记成红色
img[dst > 0.01 * dst.max()] = [0, 0, 255]

# 展示图片
cv2.imshow('img', img)
cv2.waitKey(0)

结果展示:

Harris角点检测算法

优点

是能够快速有效地检测角点,即使在图像发生旋转、缩放和变形的情况下,仍能够保持较好的性能。

缺点

是可能会误判一些不是角点的点,因此需要设置合适的阈值来控制误判率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值