ORB(对象识别算法)可以实时地对输入视频流做出响应,因此时间很重要。对象识别算法用来对图像中的关键点快速创建特征向量,然后使用这些特征向量识别图像中的对象。
而对于给定的一个图像,ORB算法会首先开始构建图像金字塔,什么是图像金字塔呢,就是单个图像的多尺度表示法,由一系列原始图像的不同分辨率版本组成。金字塔的每个级别都是由上个级别的图像下采样版本组成。下采样其实就是指图像分辨率被降低。
接下来,我们就看看构建图像金字塔的代码吧~
加载图片
import numpy as np
import matplotlib.pyplot as plt
import cv2
%matplotlib inline
# Read in the image
image = cv2.imread('images/rainbow_flag.jpg')
# Change color to RGB (from BGR)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image)
创建图像金字塔
level_1 = cv2.pyrDown(image)
level_2 = cv2.pyrDown(level_1)
level_3 = cv2.pyrDown(level_2)
# Display the images
f, (ax1,ax2,ax3,ax4) = plt.subplots(1, 4, figsize=(20,10))
ax1.set_title('original')
ax1.imshow(image)
ax2.imshow(level_1)
ax2.set_xlim([0, image.shape[1]])
ax2.set_ylim([0, image.shape[0]])
ax3.imshow(level_2)
ax3.set_xlim([0, image.shape[1]])
ax3.set_ylim([0, image.shape[0]])
ax4.imshow(level_3)
ax4.set_xlim([0, image.shape[1]])
ax4.set_ylim([0, image.shape[0]])
就这样,就可以实现图像金字塔了~