资源简介
计算出两幅图像之间的亚像素对位的精度,通过模板匹配得到评分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
相关资源
- 数字图像处理 印前输出 rip 数字加
- 图像处理算法源代码,用C语言完成
- MFC图像处理 反色和红色
- 图像处理软件系统visual c++
- C/C++语言图像处理:各种滤波
- 基于MFC的图像处理
- c++视频教程opencv视频图像处理机器视
- MFC数字图像处理BMP格式读取 保存 DF
- 图像处理 图像旋转 C/C++语言实现
- 基于c语言的图形图像处理源代码完整
- 数字图像处理图像锐化C++实现
- 基于itk的医学图像处理程序
- 《实用数字图像处理与分析(2版)》
- 凸包
- 图像处理 dm条码识别
- c++ 数字图像处理小程序
- 《OpenCV图像处理编程》-源码-20160801
- MFC使用WebBrowser控件调用百度地图API案
- OpenCV函数参考手册(中文版).pdf
- OpenCV入门教程_于士琪.pdf
- 基于 opencv 的车牌识别
- 图像扭曲C++实现
- Visual c++数字图像处理典型算法及随书
- 常用的图像处理算法及其实现C语言
- Visual C++ 实践与提高 数字图像处理与
- BMP图像处理程序,包括轮廓识别,图
- 编程实现图片的翻转效果翻转90度和任
- 遥感图像处理C++实现
- 纯C++实现bmp图片旋转
- C语言图像灰度化处理完整程序
评论
共有 条评论