资源简介
计算出两幅图像之间的亚像素对位的精度,通过模板匹配得到评分Mat,计算出在Mat上最大匹配的点,再最大匹配点周围,利用评分,找出亚像素的off,实际测试精度在0.02像素。
代码片段和文件信息
//亚像素计算
Point2f CalcSubpixLocation(float score[9])
{
Point loc[9] = { { -1 -1 }{ 0 -1 }{ 1 -1 }{ -1 0 }{ 0 0 }{ 1 0 }{ -1 1 }{ 0 1 }{ 1 1 } };
int x1 x2 x3 x4;
int y1 y2 y3 y4;
int x1y1 x2y1 x1y2 x2y2 x1y3 x3y1;
float c1 c1x1 c1y1 c1x2 c1y2 c1x1y1;
x1 = x2 = x3 = x4 = 0;
y1 = y2 = y3 = y4 = 0;
x1y1 = x2y1 = x1y2 = x2y2 = x1y3 = x3y1 = 0;
c1 = c1x1 = c1y1 = c1x2 = c1y2 = c1x1y1 = 0;
for (int i = 0; i<9; i++)
{
int lx = loc[i].x;
int ly = loc[i].y;
x1 += lx;
x2 += lx*lx;
x3 += lx*lx*lx;
x4 += lx*lx*lx*lx;
y1 += ly;
y2 += ly*ly;
y3 += ly*ly*ly;
y4 += ly*ly*ly*ly;
x1y1 += lx*ly;
x2y1 += lx*lx*ly;
x1y2 += lx*ly*ly;
x2y2 += lx*lx*ly*ly;
x1y3 += lx*ly*ly*ly;
x3y1 += lx*lx*lx*ly;
float sc = score[i];
c1 += sc;
c1x1 += sc*lx;
c1y1 += sc*ly;
c1x2 += sc*lx*lx;
c1y2 += sc*ly*ly;
c1x1y1 += sc*lx*ly;
}
Mat MA = Mat::zeros(6 6 CV_32FC1);
MA.at(0 0) = 9.f;
MA.at(0 1) = x1;
MA.at(0 2) = y1;
MA.at(0 3) = x2;
MA.at(0 4) = x1y1;
MA.at(0 5) = y2;
MA.at(1 0) = x1;
MA.at(1 1) = x2;
MA.at(1 2) = x1y1;
MA.at(1 3) = x3;
MA.at(1 4) = x2y1;
MA.at(1 5) = x1y2;
MA.at
相关资源
- 用C语言进行数字图像处理
- basler相机图像采集和显示
- 基于opencv漫水填充算法综合
- Visual+C++数字图像处理-谢凤英-源代码
- Bmp图像处理.zip
- VC++数字图像处理典型算法及实现
- VC6.0 完整的图像处理程序 运用了大量
- VC图像处理-用Canny算子提取边缘
- 数字图像处理扑克牌识别程序
- 数字图像处理与机器视觉——Visual
- 基于leapmotion的HMM手势识别
- C++ 图像处理283241
- C++图像伪彩色处理源代码
- 图像处理方面学习的好MFC显示直方图
- Visual C++.NET图像处理编程源代码 陆宗
- 直方图均衡化_c语言实现_源代码+实验
- (VC++ 数字图像处理典型算法及实现源
- 基于MFC的bmp图像处理268237
- c++指纹识别系统
- c语言实用数字图像处理
- 数字图像处理软件源代码三个资源集
- opencv图像处理MFC
- 数字图像处理实验源代码中值滤波,
- 圆检测和方形检测图像处理
- 数字图像处理的课程设计,图像处理
- 图像增强MSRCR算法
- 用MFC实现的图像处理源代码总集
- 数字图像处理-基于内容的图像分类
- 数字图像处理 MFC bmp格式图片打开与保
- Visual C++数字图像处理中文教程
评论
共有 条评论