Foreword
Next, i’ll introduce a classification algoriithm—KNN,and of course i’ll show you how to use it in Python.
What’s the KNN?
KNN is the abbreviation of K-Nearest Neighbor .This algorithm is not only a relatively mature in theory ,but also one of the simplest machine learning algorithm.Next,i’ll give you an exanple to help you understang the idea of this algorithm.
Which kind of green circle in the above figure should be divided into ?Red triangle or blue square?In KNN algorithm, if k = 3, because the proportion of red triangle is two-thirds, the green circle is divided into red triangle.If k=5,because the proportion of blue square is three-fifths,the green circle is divided into blue square.If k=4,the green circle will be divided into red triangle because the shorter the distance, the greater the weight.
Library
pip install opencv-python
Python code
import cv2
# 按照灰度图像的方式读入两幅图片
img1 = cv2.imread("./8.jpg", cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread("./9.jpg", cv2.IMREAD_GRAYSCALE)
# 创建ORB特征检测器和描述符
orb = cv2.ORB_create()
# 对两幅图像检测特征和描述符
keypoint1, descriptor1 = orb.detectAndCompute(img1, None)
keypoint2, descriptor2 = orb.detectAndCompute(img2, None)
# 获得一个暴力匹配器的对象
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
maches = bf.knnMatch(descriptor1, descriptor2, k=1)
# 画出匹配项
img3 = cv2.drawMatchesKnn(img1, keypoint1, img2, keypoint2, maches[0:70], img2, flags=2)
cv2.imshow("KNN", img3)
cv2.waitKey(0)
cv2.destroyAllWindows()
Display
The result of KNN algorithm is almost the same as that of BF algorithm,but KNN runs longer.It’s suitable for rare events classification,especially for polyphenol problems.
In the next blog, i’ll introduce a faster classification algorithm—FLANN.
我希望我这样一本正经地做出要离开的样子,会引起你的注意。