倍频程归零

Octave division returning zero

我正在编写一个简单的 Octave 程序来计算两个图像之间的相似度。

这个问题的相关部分可以在这里找到:

http://pastebin.com/gBxN7VbP

函数 struct_comp 应该 return 0 到 1 之间的某个数字。但是命令

ec = (corr + C) / (dp1 * dp2 + C);

将 ec 设置为 0,即使它不应该为零。

disp 命令显示了该除法中涉及的所有变量的值。输出为:

C:

6.5536

dp1

97.663

dp2

47.686

corr

-290

(corr + C)

-283

(dp1 * dp2 + C)

4663.7

(corr + C) / (dp1 * dp2 + C)

0

Struct comp:

0

如您所见,部分值(分子和分母)是正确的,但除法return为零。

有人知道这里发生了什么吗?

谢谢。

编辑:

用于生成此输出的两个图像是:

http://lasca.ic.unicamp.br/~hilder/tux.jpg

http://lasca.ic.unicamp.br/~hilder/monalisa.jpg

但是你可以使用任何灰度图来测试,只需要在代码中更改名称即可。

我替换了行

ec = (corr + C) / (dp1 * dp2 + C);

来自

ec = double(corr + C) / double(dp1 * dp2 + C);

成功了。