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

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.

主站蜘蛛池模板: 郧西县| 竹溪县| 瑞昌市| 延长县| 吴堡县| 孝感市| 甘德县| 荔波县| 崇义县| 讷河市| 福鼎市| 天水市| 长丰县| 南投市| 凤凰县| 夏河县| 建宁县| 甘洛县| 五原县| 扶沟县| 民勤县| 贺兰县| 西青区| 浮山县| 南汇区| 乌恰县| 历史| 阿鲁科尔沁旗| 简阳市| 石棉县| 罗田县| 宿迁市| 五常市| 洞头县| 土默特左旗| 平原县| 正定县| 若羌县| 西华县| 衡水市| 文成县|