bool compareFeaturePt(const ImgG& scaledImg1, double imgScale1, const ImgG& scaledImg2, double imgScale2, const FeaturePoint* pt1, const FeaturePoint* pt2) { NCCBlock nccblk1, nccblk2; getScaledNCCBlock(scaledImg1, imgScale1, pt1->xo, pt1->yo, nccblk1); getScaledNCCBlock(scaledImg2, imgScale2, pt2->xo, pt2->yo, nccblk2); double ncc = matchNCCBlock(&nccblk1, &nccblk2); if (ncc >= 0.6) return true; return false; }
void getScaledNCCBlocks(const ImgG& scaledImg, double scale, const Mat_d& featpts, PtrVec<NCCBlock>& nccBlks) { if (featpts.empty()) return; int npts = (int) featpts.m; nccBlks.clear(); nccBlks.reserve(npts * 2); for (int i = 0; i < npts; i++) { NCCBlock* blk = new NCCBlock(); getScaledNCCBlock(scaledImg, scale, featpts.data[2 * i], featpts.data[2 * i + 1], *blk); nccBlks.push_back(blk); } }
void getScaledNCCBlocks(const ImgG& scaledImg, double scale, const std::vector<FeaturePoint*>& vecFeatPts, PtrVec<NCCBlock>& nccBlks) { if (vecFeatPts.empty()) return; int npts = (int) vecFeatPts.size(); nccBlks.clear(); nccBlks.reserve(npts * 2); for (int i = 0; i < npts; i++) { NCCBlock* blk = new NCCBlock(); getScaledNCCBlock(scaledImg, scale, vecFeatPts[i]->xo, vecFeatPts[i]->yo, *blk); nccBlks.push_back(blk); } }