OpenCV(四十四):亚像素级别角点位置优化

简介: OpenCV(四十四):亚像素级别角点位置优化

1.角点位置亚像素位置优化原理介绍

      亚像素优化的原理在于通过对初始角点位置的微小调整,利用更精确的灰度信息,来获取更准确的角点位置。传统的角点检测算法基于像素级别的灰度变化来定位角点,而亚像素优化则进一步利用图像灰度的局部变化进行更精细的插值,提高了角点位置的准确度。

2.优化角点亚像素位置函数cornerSubPix()

void cv::cornerSubPix( InputArray   image,

InputOutputArray corners,

Size   winSize,

Size   zeroZone,

TermCriteria    criteria

  • image:输入图像,必须是CV 8U或者CV 32F的单通道灰度图像。
  • corners: 角点坐标,既是输入的角点坐标又是精确后的角点坐标。
  • winSize: 搜索窗口尺寸的一半,必须是整数。实际的搜索窗口尺寸比该参数的2倍大1。
  • zeroZone: 搜索区域中间死区大小的一半,即不提取像素点的区域,(-1.-1)表示没有死区。
  • criteria:终止角点优化迭代的条件。

示例代码:

void cornerSubPix_f(Mat mat){
    //彩色图像转成灰度图像
    Mat gray;
    cvtColor(mat,gray,COLOR_BGR2GRAY);
    //提取角点
    int maxCorners=100;//检测角点数目
    double quality_level=0.01;//质量等级
    double  minDistance=0.04;//两个角点之间的最小欧式距离
    vector<Point2f> corners;
    goodFeaturesToTrack(gray,corners,maxCorners,quality_level,minDistance,Mat(),3, false);
   //计算亚像素级别角点坐标
   vector<Point2f> cornersSub=corners;//角点备份,防止被函数修改
   Size winSize=Size (5,5);
   Size zeroZone=Size(-1,-1);
   TermCriteria criteria = TermCriteria(TermCriteria::EPS+TermCriteria::COUNT,40,0.001);
   cornerSubPix(gray,cornersSub,winSize,zeroZone,criteria);
   //输出初始化坐标和精细坐标
   for(size_t i=0;i<corners.size();i++){
       ostringstream ss;
       string str= to_string(i);
       str="第"+str+"个角点初始坐标:";
       ss<<str<<corners[i]<<"    精细后坐标:"<<cornersSub[i]<<endl;
       LOGD("%s",ss.str().c_str());
   }
}

目录
相关文章
|
6月前
|
存储 Cloud Native Linux
OpenCV 图像像素运算操作
OpenCV 图像像素运算操作
|
7月前
|
算法 C++ 计算机视觉
OpenCV-图像像素遍历操作的三种方法对比(程序提速)
OpenCV-图像像素遍历操作的三种方法对比(程序提速)
101 0
|
5天前
|
存储 算法 C语言
OpenCV—访问图像中的像素
OpenCV—访问图像中的像素
|
2月前
|
算法 计算机视觉
OpenCV(四十七):RANSAC优化特征点匹配
OpenCV(四十七):RANSAC优化特征点匹配
123 0
|
2月前
|
计算机视觉 索引 Python
OpenCV 4基础篇| OpenCV像素的编辑
OpenCV 4基础篇| OpenCV像素的编辑
|
5月前
|
数据安全/隐私保护 计算机视觉 开发者
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
39 0
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
|
5月前
|
存储 计算机视觉 索引
OpenCV中确定像素位置及获取、修改像素BGR值讲解及演示(Python实现 附源码)
OpenCV中确定像素位置及获取、修改像素BGR值讲解及演示(Python实现 附源码)
59 0
|
5月前
|
计算机视觉
OpenCV(七):图像像素比较
OpenCV(七):图像像素比较
41 0
|
9月前
|
计算机视觉
opencv之 图像像素操作(如何通过opencv在图像上划线)
opencv之 图像像素操作(如何通过opencv在图像上划线)
|
API 计算机视觉
OpenCV 像素重映射(cv::remap)
OpenCV 像素重映射(cv::remap)
509 0
OpenCV 像素重映射(cv::remap)