10使用Hu矩进行形状匹配
Hu矩(或者更确切地说是Hu矩不变量)是使用对图像变换不变的中心矩计算的一组7个变量。事实证明,前6个矩不变量对于平移,缩放,旋转和映射都是不变的。而第7个矩会因为图像映射而改变。
OpenCV中,我们HuMoments()用来计算输入图像中的Hu矩。
1 | _,im = cv2.threshold(im, 128, 255, cv2.THRESH_BINARY) |
基于matchShapes函数计算两个图形之间的距离
1 | m2 = cv2.matchShapes(im1,im2,cv2.CONTOURS_MATCH_I2,0) |
您可以通过第三个参数(CONTOURS_MATCH_I1,CONTOURS_MATCH_I2或CONTOURS_MATCH_I3)使用三种b不同的距离。如果上述距离很小,则两个图像(im1和im2)相似。您可以使用任何距离测量。它们通常产生类似的结果。
11基于OpenCV的二维码扫描器
核心代码
1 | qrDecoder = cv2.QRCodeDetector() |
12使用深度学习和OpenCV进行手部关键点检测
核心代码
1 | inpBlob = cv2.dnn.blobFromImage(frame, 1.0 / 255, (inWidth, inHeight), (0, 0, 0), swapRB=False, crop=False) |
13OpenCV中使用Mask R-CNN进行对象检测和实例分割
核心代码
1 | # For each frame, extract the bounding box and mask for each detected object |
14使用OpenCV实现单目标跟踪
核心代码
1 | bbox = cv2.selectROI(frame, False) |
15基于深度学习的目标跟踪算法GOTURN
核心代码:同上,只是模型变了,思路未变
16使用OpenCV实现多目标跟踪Video
核心代码:和单目标类似,Tracker变成多个
1 | # Create MultiTracker object |
17基于卷积神经网络的OpenCV图像着色(略)
18Opencv中的单应性矩阵Homography(略)
Homography的应用-全景拼接
1 | # Calculate Homography |
19使用OpenCV实现基于特征的图像对齐
OpenCV的图像对齐
2.1 基于特征的图像对齐的步骤
现在我们可以总结图像对齐所涉及的步骤。
Step1读图
我们首先在C ++中和Python中读取参考图像(或模板图像)和我们想要与此模板对齐的图像。
Step2寻找特征点
我们检测两个图像中的ORB特征。虽然我们只需要4个特征来计算单应性,但通常在两个图像中检测到数百个特征。我们使用Python和C ++代码中的参数MAX_FEATURES来控制功能的数量。
Step3 特征点匹配
我们在两个图像中找到匹配的特征,按匹配的评分对它们进行排序,并保留一小部分原始匹配。我们使用汉明距离(hamming distance)作为两个特征描述符之间相似性的度量。请注意,我们有许多不正确的匹配。
Step4 计算Homography
当我们在两个图像中有4个或更多对应点时,可以计算单应性。上一节中介绍的自动功能匹配并不总能产生100%准确的匹配。20-30%的比赛不正确并不罕见。幸运的是,findHomography方法利用称为随机抽样一致性算法(RANSAC)的强大估计技术,即使在存在大量不良匹配的情况下也能产生正确的结果。RANSAC具体介绍见:
https://www.cnblogs.com/xingshansi/p/6763668.html
https://blog.csdn.net/zinnc/article/details/52319716
Step5 图像映射
一旦计算出准确的单应性,我可以应用于一个图像中的所有像素,以将其映射到另一个图像。这是使用OpenCV中的warpPerspective函数完成的。