我想检测场景中对象的位置,比例和旋转。我使用cvMatchTemplate函数来检测对象并且它有效。如何检测该对象的位置,比例和旋转?
答案 0 :(得分:0)
cvMatchTemplate只会找到翻译。如果你想找到比例和旋转,我建议你使用Features2D + Homography
答案 1 :(得分:0)
位置,比例和平面内旋转听起来像相似变换。与Homography(更通用且涉及非线性操作 - 除法)不同,相似性变换可以以封闭形式求解,因此不需要非线性优化。
首先,您需要手动选择对应的点,或者通过某种描述符(缩放/旋转不变)来选择相应的点;
使用A和B矩阵列中的坐标选择min 2对应关系后,使用这些公式查找所需的参数:
旋转:R = VU T 其中,BA T 的SVD = ULV T
scale:s = sum [(a i - mean_a) T R (b i - mean_b)] / sum [(b i - mean_b) T (b i - mean_b)]
翻译:T = sum(a i - s * R * b i )/ N,其中N是对应的数量
如果您的数据中有异常值,则必须使用RANSAC来使计算更加稳健。 当你有很多明确定义的点时,鳍匹配的替代方法是geometric hashing。它不需要描述符或已知匹配(对应)。