Harris角点检测算法
一、算法原理
哈里斯角点是在任意方向上移动(u,v),都会有很明显的变化。如下图一个局部很小的区域,如果是在图片区域中移动灰度值没有变化,那么窗口内不存在角点。如果在某一个方向上移动,一个发生很大变化而另一侧没有变化,那么说明这个区域是位于该对象的边缘区域。
二、代码
# -*- coding: utf-8 -*-
from pylab import *
from PIL import Image
from PCV.localdescriptors import harris
"""
Example of detecting Harris corner points (Figure 2-1 in the book).
"""
import PCV
# 读入图像
im = array(Image.open('1.jpg').convert('L'))
# 检测harris角点
harrisim = harris.compute_harris_response(im)
# Harris响应函数
harrisim1 = 255 - harrisim
figure()
gray()
#画出Harris响应图
subplot(141)
imshow(harrisim1)
print(harrisim1.shape)
axis('off')
axis('equal')
threshold = [0.01, 0.05, 0.1]
for i, thres in enumerate(threshold):
filtered_coords = harris.get_harris_points(harrisim, 6, thres)
subplot(1, 4, i+2)
imshow(im)
print(im.shape)
plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*')
axis('off')
#原书采用的PCV中PCV harris模块
#harris.plot_harris_points(im, filtered_coords)
# plot only 200 strongest
# harris.plot_harris_points(im, filtered_coords[:200])
show()
三、运行结果与分析
原图: 运行结果: pycharm中运行过程: 可能会遇到的问题就是 import PCV 导入的问题; 解决办法:从githup上下载PCV的包,然后cmd下安装即可: 下载PCV库文件数据地址:https://github.com/jesolem/PCV 打开cmd,执行如下指令: (1)执行cd命令,转到你所解压到的PCV的文件夹中。 (2)输入python setup.py install 。 (3)重启命令行,输入import PCV,如果没有报错,则说明PCV库安装成功。 有问题的伙伴可以评论或者私信~ 记得点赞收藏~
|