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;
}
Пример #2
0
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);
	}
}
Пример #3
0
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);
	}
}