请输入您网站的icp备案信息,中企动力做的 石子厂网站,三把火科技专业提供企业信息化服务,怎么制作ppt 教程『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】239. Harris 角点检测之精确定位#xff08;cornerSubPix#xff09; 角是直线方向的快速变化。角点通常被定义为两条边的交点#xff0c;或者说角点的邻域应该具有两个不同区域的不同方向的边界…『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】239. Harris 角点检测之精确定位cornerSubPix 角是直线方向的快速变化。角点通常被定义为两条边的交点或者说角点的邻域应该具有两个不同区域的不同方向的边界。
角是高度有效的特征。角点检测Corner Detection广泛应用于运动检测、图像匹配、视频跟踪、三维重建和目标识别。 6.2 OpenCV 中的 Harris 角检测器
OpenCV 中提供了 Harris 角点检测函数 cv.cornerHarris()。 函数说明
cv.cornerHarris(src, blockSize, ksize, k[, dstNone, borderTypeBORDER_DEFAULT] ) → dst
函数 cv.cornerHarris 运行 Harris 角检测器。
对于每个像素 (x,y) 计算梯度协方差矩阵 M(x,y)M(x,y)M(x,y)。然后计算特征 dst(x,y)detM(x,y)−k⋅(trM(x,y))2dst(x,y) det M^{(x,y)} - k \cdot (tr M^{(x,y)})^2 dst(x,y)detM(x,y)−k⋅(trM(x,y))2
则角点在特征响应图像中是局部极大值。 实践中定义当 R 大于设定阈值且为局部最大值的点为角点 。
参数说明
src输入图像单通道的 8位图像或浮点数图像dst输出图像Harris 检测器的响应大小与 src 相同格式为 CV_32FC1blockSize邻域尺寸ksizeSobel 算子的孔径参数kHarris 检测器调节参数通常取 0.04~0.06borderType边界扩充类型 cv.BORDER_CONSTANTcv.BORDER_REPLICATEcv.BORDER_REFLECTcv.BORDER_REFLECT_101cv.BORDER_TRANSPARENT 例程 14.20Harris 角点检测之精确定位cornerSubPix
OpenCV 提供了函数 cv.cornerSubPix() 用于细化角点位置细化了以亚像素精度检测到的角点位置。
cv.cornerSubPix(image, corners, winSize, zeroZone, criteria[, ]) → corners函数 cv.cornerSubPix 用于细化角点位置。该算法通过将角的质心设为新的中心迭代计算以获得角点或径向鞍点的亚像素精确位置。
参数说明
image输入图像单通道的 8位图像或浮点数图像corners实数输入时为角点初始坐标输出时为角点的精细坐标winSize搜索窗口边长的一半如 winSize Size(5,5) 表示搜索窗口为 11*11zeroZone搜索区域中间死区大小的一半(-1,-1) 表示不存在死区criteria迭代过程终止的判据迭代次数达到设定值 maxCount 或角点位移小于设定阈值 epsilon
注意事项
输入输出参数 corners 的格式必须转化实数不是整数。函数 cv.cornerSubPix() 用于细化角点位置不仅可以用于对 Harris 角点检测结果进行细化检测也可以用于对其它角点检测结果进行细化检测。 # 14.20 Harris 角点检测之精确定位 (cornerSubPix)img cv2.imread(../images/sign01.png, flags1)gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # (600, 540)print(img.shape) # (600, 836, 3)# 角点检测gray np.float32(gray) # uint8float32 都支持dst cv2.cornerHarris(gray, 2, 3, 0.04) # Harris 角点检测_, dst cv2.threshold(dst, 0.01 * dst.max(), 255, 0) # 提取角点dst np.uint8(dst) # (600, 836)# 角点检测结果图像imgCorner np.copy(img)imgCorner[:,:,2] cv2.bitwise_or(imgCorner[:,:,2], dst) # 筛选角点红色标记# 对检测角点进行精细定位ret, labels, stats, centroids cv2.connectedComponentsWithStats(dst) # 检测连通区域criteria (cv2.TERM_CRITERIA_EPS cv2.TERM_CRITERIA_MAX_ITER, 100, 0.001) # 终止判据fineCorners cv2.cornerSubPix(gray, np.float32(centroids), (5,5), (-1,-1), criteria) # (144, 2)# 精细定位检测图像imgFineCorners np.copy(img)centroids centroids.astype(np.int) # 连通区域的质心 (x,y)fineCorners fineCorners.astype(np.int) # 精细定位的角点 (x,y)imgFineCorners[centroids[:, 1], centroids[:, 0]] [0,255,0] # Harris 检测位置绿色imgFineCorners[fineCorners[:, 1], fineCorners[:, 0]] [0,0,255] # 精细检测位置红色plt.figure(figsize(9, 6))plt.subplot(131), plt.axis(off), plt.title(Origin)plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))plt.subplot(132), plt.axis(off), plt.title(Harris corners)plt.imshow(cv2.cvtColor(imgCorner[115:195, 90:200], cv2.COLOR_BGR2RGB))plt.subplot(133), plt.axis(off), plt.title(cornerSubPix)plt.imshow(cv2.cvtColor(imgFineCorners[115:195, 90:200], cv2.COLOR_BGR2RGB))plt.tight_layout()plt.show()【本节完】 版权声明 youcansxupt 原创作品转载必须标注原文链接(https://blog.csdn.net/youcans/article/details/125821029) Copyright 2022 youcans, XUPT Crated2022-7-15 238. OpenCV 中的 Harris 角点检测 239. Harris 角点检测之精确定位cornerSubPix 240. OpenCV 中的 Shi-Tomas 角点检测