python匹配地理标记图像
一、Harris算法
1.Harris角点检测
首先我们先看一下harris的角点检测,该算法的主要思想是,如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点。该点就称为角点。Harris角点检测器仅仅能够检测出图像中的兴趣点,但没有给出通过比较图像间的兴趣点来寻找匹配角点的方法。
from pylab import *
from PIL import Image
from PCV.localdescriptors import harris
# 读入图像
im = array(Image.open(r'C:\Users\17440\Desktop\ra\p1.jpg').convert('L'))
# 检测harris角点
harrisim = harris.compute_harris_response(im)
# Harris响应函数
harrisim1 = 255 - harrisim
figure()
gray()
#画出Harris响应图
subplot(121)
imshow(im)
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, 2, 2)
imshow(im)
print (im.shape)
plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*')
axis('off')
show()
结果分析
从结果对比图中我们可以看出harris角点检测可以检测出大部分的角点
2.Harris在图像间寻找对应点
from pylab import *
from PIL import Image
from PCV.localdescriptors import harris
from PCV.tools.imtools import imresize
im1 = array(Image.open(r'C:\Users\17440\Desktop\ra\p1.jpg').convert("L"))
im2 = array(Image.open(r'C:\Users\17440\Desktop\ra\p2.jpg').convert("L"))
im1 = imresize(im1, (im1.shape[1], im1.shape[0])