我一直在寻找OpenCV的宏伟源代码来理解分数计算。您可能已经注意到,库可以在具有置信度分数的图像中找到模板。 cvMatchTemplate函数给出了模板中模板的概率和位置。
由于DFT很慢,我决定使用FFTW库进行相位相关。我得到图像,扩展到2的幂的大小,然后对模板做同样的事情,首先计算两者的FFT,乘以两个数组,计算逆FFT,最后归一化结果。
如果我在位图上显示此结果,它会清楚地显示模板的位置,但是,我很难计算相关分数。我尝试在调试器下逐行运行cvMatchTemplate方法,因为库使用DFT和任意图像大小,所以它没有帮助。该方法中使用的所有表(sum,sqsum等)为相应的任意大小创建,FFT使用2的幂。
如果有关如何根据相位相关结果计算得分的信息,我将不胜感激。有许多来源描述“拿这个,拿它,乘以它们,你看到图像上的白点,是的,你找到它”的方式。我需要像cvMatchTemplate那样得分。
我很恳请您指点一个网站或一份包含该计算逻辑或一本书的论文。源代码是完美的,但无论如何我都没有希望。
答案 0 :(得分:1)
首先,确保您没有“将图像扩展到2的幂”。我确定你不是这个意思,但无论如何使用FFTW你可以计算任意大小的FT。
我不明白您使用的是OpenCV。如果你有FFT,那么很容易自己计算归一化的交叉功率谱,换句话说就是“相位相关公式”。
获取最大尺寸的图像FFT,不要忘记窗口。计算CPS。一旦你有相关表面寻找峰值。
除了FT,我不知道OpenCV为相位相关提供了什么,但你想要的论文是
G.A. Thomas, Television Motion Measurement for DATV and Other Applications, 1987, BBC Research Department.
答案 1 :(得分:1)
1)FFTW可以使用非2次幂大小的阵列。
2)您可能要搜索/学习的主题区域是FFT互相关定理:
“两个函数的互相关的傅立叶变换等价于各个傅里叶变换的乘积,其中一个是复杂的共轭”