块匹配模型的还原

本文详细介绍了如何通过图像处理技术来计算图像中的峰值位置。利用仿射变换将图像中的特定点映射到标准尺度和旋转坐标下,并通过块匹配模型找到最佳匹配的位置,最后将这些点映射回原始图像坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vector < Point2f > 
 patch_models::calc_peaks (const Mat & im, 
   const vector < Point2f > & points, const Size ssize)

参照warpAffine解析http://blog.youkuaiyun.com/limit_ing/article/details/62091088
这里写图片描述

vector < Point2f > pts = this -> apply_simil (Si, points);
for (int i = 0; i < n; 
  i++) {Size wsize = ssize + patches[i].patch_size (); 
   Mat A (2, 3, CV_ 32 F);
   A.fl (0, 0) = S.fl (0, 0); A.fl (0, 1) = S.fl (0, 1);
   A.fl (1, 0) = S.fl (1, 0); A.fl (1, 1) = S.fl (1, 1);
   A.fl (0, 2) = 
    pt.fl (2*i) - (A.fl (0, 0)*(wsize.width - 1)/2 + 
       A.fl (0, 1)*(wsize.height - 1)/2);
   A.fl (1, 2) = 
    pt.fl (2*i + 1) - (A.fl (1, 0)*(wsize.width - 1)/2 + 
       A.fl (1, 1)*(wsize.height - 1)/2);
   Mat I; 
   warpAffine (im, I, A, wsize, INTER_LINEAR + WARP_INVERSE _MAP);
   Mat R = patches[i].calc_response (I, false); // 得到最佳匹配的位置, 
  匹配到的点是在标准的尺度和旋转坐标下的坐标系值,所以下面要变换回来;
   Point maxLoc; minMaxLoc (R, 0, 0, 0, & maxLoc); // 
   把旋转到标准点的坐标偏移移动到匹配坐标上,这时候的尺度是标准的尺度;
  pts[i] = 
   Point2f (pts[i].x + maxLoc.x - 0.5*ssize.width, 
     pts[i].y + maxLoc.y - 0.5*ssize.height);

这一段和块匹配模型最后一段一致是得到最匹配的点的位置,但是这点是在以标准空间缩放旋转后的图片,而不是原图
这边使用this -> apply_simil (S, pts); // 计算偏移后的点的位置,就是校正后的点;
也就是使用S矩阵将其映射回原来的图像的位置坐标上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值