資源簡介
計算出兩幅圖像之間的亞像素對位的精度,通過模板匹配得到評分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
評論
共有 條評論