官术网_书友最值得收藏!

Obtaining feature descriptors with SURF

The process of extracting features from an image with OpenCV using SURF is also a single step. It is done by the compute method of our feature extractor. The latter accepts an image and the keypoints of the image as arguments:

key_query, desc_query = self.f_extractor.compute(img_query, key_query)

Here, desc_query is a NumPY ndarray with shape (num_keypoints, descriptor_size). You can see that each descriptor is a vector in an n-dimensional space (n-length array of numbers). Each vector describes the corresponding key point and provides some meaningful information about our complete image.

Hence, we have completed our feature extraction algorithm that had to provide meaningful information about our image in reduced dimensionality. It's up to the creator of the algorithm to decide what kind of information is contained in the descriptor vector, but at the very least the vectors should be such that they are closer to similar keypoints than for keypoints that appear different. 

Our feature extraction algorithm also has a convenient method to combine the processes of feature detection and descriptor creation:

key_query, desc_query = self.f_extractor.detectAndCompute (img_query, None)

It returns both keypoints and descriptors in a single step and accepts a mask of an area of interest, which, in our case, is the complete image.

As we have extracted our features, the next step is to query and train images that contain similar features, which is accomplished by a feature matching algorithm. So, let's learn about feature matching in the next section.

主站蜘蛛池模板: 渑池县| 柞水县| 射阳县| 临朐县| 元谋县| 高碑店市| 巴塘县| 遂昌县| 镇远县| 丰台区| 乐安县| 桐梓县| 台北县| 石楼县| 沛县| 理塘县| 施秉县| 合江县| 洱源县| 布尔津县| 荃湾区| 满城县| 舒兰市| 三门县| 响水县| 赞皇县| 阳原县| 互助| 壶关县| 玉龙| 临湘市| 恭城| 大足县| 磐安县| 平舆县| 龙岩市| 定边县| 义马市| 榆中县| 永泰县| 延津县|