我正在写一个简单的八度程序来计算两个图像之间的相似性。
这个问题的相关部分可以在这里找到:
函数 struct_comp 应该在0和1之间返回一些数字。但命令
ec = (corr + C) / (dp1 * dp2 + C);
将ec设置为0,即使它不应为零。
disp命令显示此分区中涉及的所有变量的值。输出是:
C:
6.5536
DP1
97.663
DP2
47.686
更正件
-290
(corr + C)
-283
(dp1 * dp2 + C)
4663.7
(corr + C)/(dp1 * dp2 + C)
0
Struct comp:
0
如您所见,部分值(分子和分母)是正确的,但除法返回零。
有人知道这里发生了什么吗?
谢谢。
修改
用于生成此输出的两个图像是:
http://lasca.ic.unicamp.br/~hilder/tux.jpg
http://lasca.ic.unicamp.br/~hilder/monalisa.jpg
但您可以使用任何灰度图像进行测试,只需更改代码中的名称即可。
答案 0 :(得分:1)
我替换了
行ec = (corr + C) / (dp1 * dp2 + C);
通过
ec = double(corr + C) / double(dp1 * dp2 + C);
并且有效。